Comment filtrer et extraire les données d'événement de journal brutes d'Amazon Cloudwatch
Est-il possible de 1) filtre et 2) récupérer les données brutes du journal de Cloudwatch via l'API ou de la CLI? J'ai besoin d'extraire un sous-ensemble de journal des événements à partir de Cloudwatch pour l'analyse.
Je n'ai pas besoin de créer une métrique ou quelque chose comme ça. C'est pour la recherche historique d'un événement précis dans le temps.
Je suis allé à la visionneuse de journaux dans la console, mais je suis en train d'essayer de sortir des lignes précises pour me raconter une histoire autour d'un certain temps. La visionneuse du journal serait presque impossible à utiliser à cette fin. Si j'avais le fichier journal actuel, je voudrais juste grep et être fait en environ 3 secondes. Mais je n'ai pas.
Clarification
Dans la description de Cloudwatch Logsdit-il, "Vous pouvez afficher le journal d'origine des données (uniquement dans la vue web?) pour voir la source du problème, si besoin. Le journal de données peuvent être stockées et accessibles (uniquement dans la vue web?) aussi longtemps que vous avez besoin d'aide très durables, à faible coût de stockage de sorte que vous n'avez pas à vous soucier de remplissage des disques durs." --les italiques sont de la mine
Si cette console est la seule façon d'obtenir à la source de données, le stockage de journaux via Cloudwatch n'est pas une solution acceptable pour mes fins. J'ai besoin d'obtenir les données réelles avec suffisamment de souplesse à la recherche de modèles, pas de cliquer à travers des dizaines de pages, les lignes et les copier/coller. Il semble qu'une meilleure façon de se rendre à la source de données peut ne pas être disponible.
source d'informationauteur Zach
Vous devez vous connecter pour publier un commentaire.
Pour l'utilisation de AWSCLI (plaine ainsi qu'avec
cwlogs
plugin) voir http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/SearchDataFilterPattern.htmlPour le modèle de syntaxe (
plain text
[space separated]
comme{JSON syntax}
) voir: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.htmlPour python utilitaire de ligne de commande
awslogs
voir https://github.com/jorgebastida/awslogs.AWSCLI: aws journaux filtre-journal des événements
AWSCLI est officiel CLI pour les services AWS et maintenant, il prend en charge les journaux aussi.
À l'aide du diaporama:
Le filtre peut être basée sur:
--log-group-name
(seule la dernière est utilisée)--log-stream-name
(peut être spécifiée plusieurs fois)--start-time
--end-time
(pas--stop-time
)--filter-pattern
Seulement
--log-group-name
est obligatoire.Les heures sont exprimées en époque à l'aide de millisecondes (pas de secondes).
L'appel pourrait ressembler à ceci:
Il imprime 6 colonnes séparées par des tabulations texte:
EVENTS
(pour désigner, la ligne est un enregistrement de journal et non pas d'autres informations)eventId
timestamp
(temps déclaré par le record de durée de l'événement)logStreamName
message
ingestionTime
Donc si vous avez Linux utilitaires de ligne de commande à portée de main et de soins seulement sur les journaux enregistrer des messages pour l'intervalle de
2015-11-10T14:50:00Z
à2015-11-10T15:00:00Z
vous pouvez l'obtenir comme suit:AWSCLI avec cwlogs plugin
La
cwlogs
AWSCLI plugin est plus simple à utiliser:Il attend lisible par l'homme date-heure et renvoie toujours la sortie de texte avec (espace délimité par des colonnes:
logStreamName
date
time
message
D'autre part, il est un peu plus difficile à installer (quelques pas de plus à faire, plus actuel
pip
nécessite de déclarer l'installation de domaine de confiance).(si vous faites des fautes de frappe dans la dernière commande, il suffit de le corriger dans
~/.aws/config
fichier)awslogs
commande à partir dejorgebastida/awslogs
Devenu mon préféré - facile à installer, puissant, facile à utiliser.
Installation:
À la liste des journaux disponibles groupes:
De liste du journal des flux
Pour obtenir les documents et de les suivre (voir les nouvelles comme ils viennent):
Et vous pouvez filtrer les enregistrements par intervalle de temps:
Depuis la version 0.2.0 vous avez là aussi les
--filter-pattern
option.La sortie a des colonnes:
message
À l'aide de
--no-group
et--no-stream
vous pouvez passer les deux premières colonnes off.À l'aide de
--no-color
vous pouvez vous débarrasser de la couleur des caractères de contrôle à la sortie.MODIFIER: comme
awslogs
version 0.2.0 ajoute--filter-pattern
texte mis à jour.Si vous utilisez le Python Boto3 de la bibliothèque pour l'extraction de l'AWS cloudwatch Logs. La fonction de get_log_events() accepte de début et de fin des temps en millisecondes.
Pour référence: http://boto3.readthedocs.org/en/latest/reference/services/logs.html#CloudWatchLogs.Client.get_log_events
Pour cela, vous pouvez prendre une heure UTC de l'entrée et de le convertir en millisecondes par l'aide de la date et de timegm modules et vous êtes bon pour aller:
Vous pouvez ainsi donner entrées comme indiqué ci-dessous y à l'aide de sys entrée:
Alors que Jan réponse est un grand et sans doute ce que l'auteur a voulu, veuillez noter qu'il y a un moyen supplémentaire pour obtenir l'accès par programme pour les journaux - via les abonnements.
C'est prévu pour toujours en streaming scénarios où les données sont constamment récupérés (généralement en flux Kinesis) et ensuite transformés.
Ne l'ai pas utilisé moi-même, mais ici, c'est un open-source cloudwatch pour Excel exportateur je suis tombé sur GitHub:
https://github.com/petezybrick/awscwxls
Je pense que la meilleure option pour récupérer les données sont fournies comme décrit dans la API.