Exemple : Comptage du nombre de codes HTTP 404 - Amazon CloudWatch Logs

Exemple : Comptage du nombre de codes HTTP 404

Avec CloudWatch Logs, vous pouvez surveiller le nombre de fois où vos serveurs Apache renvoient une réponse HTTP 404, c'est-à-dire le code de réponse de page introuvable. Vous souhaiterez peut-être contrôler ce phénomène afin de comprendre le nombre de fois où les visiteurs de votre site ne trouvent pas la ressource qu'ils recherchent. Supposez que vos enregistrements du journal sont structurés de manière à inclure les informations suivantes pour chaque événement du journal (visite du site) :

  • Adresse IP du demandeur

  • Identité RFC 1413

  • Nom d’utilisateur

  • Horodatage

  • Méthode de demande avec la ressource et le protocole demandés

  • Code de réponse HTTP à demander

  • Nombre d'octets transférés dans la demande

Voici un exemple correspondant :

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326

Vous pouvez spécifier une règle qui tente de faire correspondre les événements de cette structure pour les erreurs HTTP 404, comme illustré dans l'exemple suivant :

Pour créer un filtre de métrique à l'aide de la console CloudWatch

  1. Ouvrez la console CloudWatch à l'adress https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, choisissez Log groups (Groupes de journaux).

  3. Choisissez Actions, Create metric filter (Créer un filtre de métrique).

  4. Pour Filter Pattern (Modèle de filtre), tapez [IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes].

  5. (Facultatif) Pour tester votre modèle de filtre, sous Test Pattern (Modèle de test), saisissez un ou plusieurs événements du journal à utiliser pour tester le modèle. Chaque événement de journal doit se trouver sur une seule ligne, car des sauts de ligne sont utilisés pour séparer les événements du journal dans la boîte Messages d'événements du journal.

  6. Choisissez Next (Suivant), puis pour Filter Name (Nom du filtre), tapez HTTP404Errors.

  7. Sous Détails de la métrique, pour Espace de nom de la métrique, saisissez MyNameSpace.

  8. Dans Metric Name (Nom de la métrique), saisissez ApacheNotFoundErrorCount.

  9. Confirmez que la Metric Value (Valeur de la métrique) est égale à 1. Cela indique que le décompte est augmenté de 1 pour chaque événement 404 Error (Erreur 404).

  10. Dans Valeur par défaut saisissez 0, puis choisissez Suivant.

  11. Choisissez Create metric filter (Créer un filtre de métrique).

Pour créer un filtre de métrique à l'aide de la AWS CLI

A partir d'une invite de commande, exécutez la commande suivante :

aws logs put-metric-filter \ --log-group-name MyApp/access.log \ --filter-name HTTP404Errors \ --filter-pattern '[ip, id, user, timestamp, request, status_code=404, size]' \ --metric-transformations \ metricName=ApacheNotFoundErrorCount,metricNamespace=MyNamespace,metricValue=1

Dans cet exemple, les caractères littéraux, tels que les crochets gauche et droit, les doubles guillemets et la chaîne de caractères 404 ont été utilisés. Le modèle doit correspondre au message tout entier de l'événement du journal pour que cet événement soit pris en compte à des fins de surveillance.

Vous pouvez vérifier la création du filtre de métrique à l'aide de la commande describe-metric-filters. Vous devriez observer un résultat du type suivant :

aws logs describe-metric-filters --log-group-name MyApp/access.log { "metricFilters": [ { "filterName": "HTTP404Errors", "metricTransformations": [ { "metricValue": "1", "metricNamespace": "MyNamespace", "metricName": "ApacheNotFoundErrorCount" } ], "creationTime": 1399277571078, "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]" } ] }

Désormais, vous pouvez publier quelques événements manuellement :

aws logs put-log-events \ --log-group-name MyApp/access.log --log-stream-name hostname \ --log-events \ timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \ timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"

Peu après avoir mis ces exemples d'événements du journal, vous pouvez récupérer la métrique nommée dans la console CloudWatch en tant que ApacheNotFoundErrorCount.