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 pouvez surveiller ce phénomène afin d'appréhender le nombre de fois où les visiteurs de votre site ne trouvent pas la ressource qu'ils recherchent. Supposons que vos enregistrements de journaux sont structurés de manière à inclure les informations suivantes pour chaque événement de journal (visite du site) :

  • Adresse IP du demandeur

  • Identité RFC 1413

  • Nom d'utilisateur

  • Horodatage

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

  • Code de réponse HTTP à la demande

  • 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 relever 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'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, choisissez Groupes de journaux.

  3. Choisissez Actions, Créer un filtre de métriques.

  4. Pour 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 Suivant, puis pour Nom du filtre, tapez HTTP404Errors.

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

  8. Pour Nom de la métrique, saisissez ApacheNotFoundErrorCount.

  9. Confirmez que la Valeur de la métrique est égale à 1. Cela indique que le décompte est augmenté d'1 pour chaque événement « 404 Error ».

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

  11. Choisissez Créer un filtre de métriques.

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 obtenir 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.