Tengo mensajes que son como a continuación, el siguiente mensaje es uno de los mensajes (tiene tantos formatos JSON que no están relacionados en absoluto con esto)
request body to the server {'sender': '65ddd20eac244AAe619383e4d8cb558834', 'message': 'hello'}Me gustaría agrupar estos mensajes según el remitente (valor alfanumérico) que se incluye en JSON.
Consulta de información de CloudWatch Logs:
fields @message | filter @message like 'request body to the server' | parse @message "'sender': '*', 'message'" as sender | stats count(*) by senderResultados de la consulta:
------------------------------------------------- | sender | count(*) | |------------------------------------|----------| | 65ddd20eac244AAe619383e4d8cb558834 | 4 | | 55ddd20eac244AAe619383e4d8cb558834 | 3 | -------------------------------------------------puedes usar filtro .
fields @timestamp, @message | filter @message like "65ddd20eac244AAe619383e4d8cb558834" | sort @timestamp desc | limit 20 filtrará todos los mensajes límite a 20 que se envíen por 65ddd20eac244AAe619383e4d8cb558834 .
actualizar:
supongamos que el formato de registro JSON es este
{ "sender": "65ddd20eac244AAe619383e4d8cb558835", "message": "Hi" } Ahora quiero contar la cantidad de mensajes de 65ddd20eac244AAe619383e4d8cb558835
¿Cuántos mensajes vienen de cada usuario?
tan simple que puedes ejecutar la consulta
stats count(sender) by sender | # To filter only message the contain sender, to avoid lambda default logs filter @message like "sender"
si desea ver los mensajes también, modifique un poco la consulta
stats count(*) by sender, message | filter @message like "sender" Aquí @message se refiere a la totalidad del índice donde message se refiere al message del objeto JSON.
contar_distinto
Devuelve el número de valores únicos para el campo. Si el campo tiene una cardinalidad muy alta (contiene muchos valores únicos), el valor devuelto por
count_distinctes solo una aproximación.
¿Cuántos usuarios distintos en el intervalo seleccionado?
Enumerará usuarios distintos en 3hr de intervalo
stats count_distinct(sender) as distinct_sender by bin(3hr) as interval