1
votes

Télécharger le journal JSON à plusieurs lignes dans AWS CloudWatch Log

Les put-log-events s'attendent à ce que le fichier JSON soit enveloppé par un [ &

par exemple

# aws logs put-log-events --log-group-name mes-logs --log-stream-name 20150601 --log-events file: // événements

{"timestamp": xxx, "message": "xxx"}
{"timestamp": yyy, "message": "yyy"}

Cependant, mon fichier JSON est au format multi-lignes comme

[
  {
    "timestamp": long,
    "message": "string"
  }
  ...
]

Est-il possible de télécharger sans écrire mon propre programme?

[1] https://docs.aws.amazon.com/cli/latest/reference/logs/put-log-events.html#examples


0 commentaires

3 Réponses :


0
votes

Si vous souhaitez conserver ces lignes comme un seul événement, vous pouvez convertir les lignes en chaîne, les joindre avec \ n et les envoyer de cette façon.

Puisque les lignes ressemblent elles-mêmes à des json autonomes, les envoyer sous forme de tableau d'événements (d'où [...] ) n'est peut-être pas si grave, car elles entreront dans le même groupe de journaux et être facile à trouver en tant que lot.


0 commentaires

0
votes

Vous devrez l'échapper comme suggéré et supprimer les nouvelles lignes. Même s'il y a beaucoup de JSON ces jours-ci utilisé comme format grand public, ce n'est pas une excellente représentation brute en ce qui concerne les journaux. La raison en est que les journaux peuvent être tronqués.

Essayez d'analyser le JSON tronqué, ce n'est pas du tout amusant!

Vous ne voulez pas non plus que l'horodatage soit intégré dans vos journaux, cela cassera le filtre et la capacité de recherche que vous obtenez avec cloudwatch.

Vous pouvez diffuser un format RAW dans les journaux cloudwatch, puis utiliser des flux pour analyser ces données brutes, les formater, les filtrer ou tout ce que vous voulez faire, dans un service tel qu'Elastic Search. Je recommanderais la diffusion en continu vers le service Elastic Search sur AWS si vous souhaitez en faire plus avec vos journaux que ce que cloudwatch vous offre, et vous pouvez également créer votre format d'horodatage intégré si vous le souhaitez.


0 commentaires

2
votes

Un moyen simple de gérer la publication du lot sans aucun codage serait d'utiliser jq pour effectuer la transformation nécessaire dans le fichier. jq est un utilitaire de ligne de commande pour effectuer le traitement JSON.

cat events | jq -s '.'> events-formatted.json
aws logs put-log-events --log-group-name my-logs --log-stream-name 20150601 --log-events file://events-formatted.json

Avec cela, les données doivent être formatées et peuvent être ingérées dans CloudWatch.

p>


0 commentaires