Dilip vous montre comment traiter
Les journaux Amazon CloudFront à l'aide d’
Amazon Elasticsearch Service

dilip_cloudfront_logs_elasticsearch

Comment puis-je traiter des journaux Amazon CloudFront à l'aide d'Amazon Elasticsearch Service (Amazon ES) ?

Pour créer des rapports personnalisés de manière à se conformer à des exigences spécifiques :

  1. Activez la journalisation pour votre distribution de CloudFront, puis transférez vos journaux CloudFront à un compartiment S3.
  2. Utilisez une instance Amazon Elastic Compute Cloud (EC2) exécutant Logstash en tant que client pour le traitement des journaux CloudFront.
  3. Envoyez les journaux vers un domaine Amazon ES.
  4. Créez et consultez les rapports à l'aide de Kibana.

1.    (Facultatif) Si vous ne disposez d'aucun compartiment Amazon Simple Storage Service (S3) dans la région dans laquelle vous allez exécuter votre domaine Elasticsearch, vous devez en créer un. Pour plus d'informations, consultez Comment créer un compartiment S3 ?

2.    Dans la console Amazon CloudFront, sélectionnez votre distribution CloudFront, choisissez Paramètres de distribution, puis Modifier. Activez la journalisation. Dans le champ Compartiment pour les journaux, choisissez votre compartiment S3. Dans le champ Préfixe de journal, saisissez un préfixe pour les noms des journaux.

3.    Choisissez Oui, modifier. Remarque : il peut s'écouler un délai de 24 heures avant que vos requêtes de journaux soient délivrées au compartiment S3.

4.    Créez un nouveau domaine Amazon ES dans la console Elasticsearch Service en suivant les instructions de la page Création et configuration de domaines Amazon Elasticsearch Service.

5.    Lancez une nouvelle instance Amazon EC2. Celle-ci sera utilisée en tant que client Logstash. Remarque : il se peut que vous deviez configurer un rôle AWS Identity and Access Management (IAM) ayant accès à S3 (objet GET) et à Elasticsearch (document PUT). Pour plus d'informations, consultez la section Création de rôles IAM.

6.    Connectez-vous à votre nouvelle instance EC2 à l'aide de SSH.

7.    À partir de la ligne de commande, exécutez la commande suivante pour télécharger et installer le client Logstash sur votre instance EC2 :

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.tar.gz

8.    Extrayez le client Logstash en utilisant la commande suivante :

tar xvf logstash-5.5.0.tar.gz

9.    Installez le plug-in Logstash pour Elasticsearch en utilisant la commande suivante :

cd logstash-5.5.0
bin/logstash-plugin install logstash-output-amazon_es

10.    Créez vos fichiers cloudfront.template.json et cloudfront.conf comme suit : Remarque : vous devez modifier les modèles pour répondre aux exigences.

cloudfront.template.json

#cloudfront.template.json
{
  "template": "cloudfront-logs-*",
  "mappings": {
    "logs": {
      "_source": {
        "enabled": false
      },
      "_all": {
        "enabled": false
      },
      "dynamic_templates": [
        {
          "string_fields": {
            "mapping": {
              "index": "not_analyzed",
              "type": "string"
            },
            "match_mapping_type": "string",
            "match": "*"
          }
        }
      ],
      "properties": {
        "geoip"  : {
          "dynamic": true,
          "properties" : {
            "ip": { "type": "ip" },
            "location" : { "type" : "geo_point" },
            "latitude" : { "type" : "float" },
            "longitude" : { "type" : "float" }
          }
        }
      }
    }
  }
}

cloudfront.conf

#cloudfront.conf
input {
  s3 {
    bucket => "<CLOUDFRONT_LOG_BUCKET>"
    prefix => "<CLOUDFRONT_LOG_KEY_PREFIX>"
    region => "<BUCKET_REGION_NAME>"
  }
}


filter {
  grok {
    match => { "message" => "%{DATE_EU:date}\t%{TIME:time}\t%{WORD:x_edge_location}\t(?:%{NUMBER:sc_bytes:int}|-)\t%{IPORHOST:c_ip}\t%{WORD:cs_method}\t%{HOSTNAME:cs_host}\t%{NOTSPACE:cs_uri_stem}\t%{NUMBER:sc_status:int}\t%{GREEDYDATA:referrer}\t%{GREEDYDATA:User_Agent}\t%{GREEDYDATA:cs_uri_stem}\t%{GREEDYDATA:cookies}\t%{WORD:x_edge_result_type}\t%{NOTSPACE:x_edge_request_id}\t%{HOSTNAME:x_host_header}\t%{URIPROTO:cs_protocol}\t%{INT:cs_bytes:int}\t%{GREEDYDATA:time_taken}\t%{GREEDYDATA:x_forwarded_for}\t%{GREEDYDATA:ssl_protocol}\t%{GREEDYDATA:ssl_cipher}\t%{GREEDYDATA:x_edge_response_result_type}" }
  }

  mutate {
    add_field => [ "listener_timestamp", "%{date} %{time}" ]
  }

  date {
    match => [ "listener_timestamp", "yy-MM-dd HH:mm:ss" ]
    target => "@timestamp"
  }

  geoip {
    source => "c_ip"
  }

  useragent {
    source => "User_Agent"
    target => "useragent"
  }

  mutate {
    remove_field => ["date", "time", "listener_timestamp", "cloudfront_version", "message", "cloudfront_fields", "User_Agent"]
  }
}

output {
  amazon_es {
    hosts => ["<AMAZON_ES_DOMAIN_ENDPOINT>"]
    region => "<AMAZON_ES_DOMAIN_REGION_NAME>"
    index => "cloudfront-logs-%{+YYYY.MM.dd}"
    template => "/path-to-file/cloudfront.template.json"
  }
} 

11.    Utilisez un éditeur de texte tel que vi pour modifier le fichier cloudfront.conf de sorte qu’il se présente comme suit : Pour le compartiment, utilisez le nom de votre compartiment S3. Pour le préfixe, utilisez le préfixe que vous avez indiqué dans Préfixe de journal à l'étape 2. Pour hôtes, utilisez le point de terminaison de votre distribution CloudFront. Pour région, utilisez la région dans laquelle se trouvent vos ressources. Pour modèle, utilisez le répertoire dans lequel se trouve votre modèle CloudFront.

12.    Enregistrez les modifications effectuées dans le fichier cloudfront.conf.

13.    Exécutez Logstash avec l'option -f et spécifiez cloudfront.conf en tant que fichier de configuration. Pour plus d'informations, consultez la page Command-Line Flags.

Dans quelques minutes, Logstash publiera des documents dans le domaine Elasticsearch que vous avez indiqué. Pour vous assurer que les documents sont correctement publiés, ouvrez la console Amazon ES, sélectionnez votre domaine ES et vérifiez l'onglet Indexes.

Vous pouvez désormais utiliser Kibana pour créer des rapports personnalisés et des virtualisations pour vos journaux. Pour en savoir plus, consultez la page Kibana et Logstash.

Remarque : il se peut que vous deviez configurer une stratégie d'accès afin de garantir l'accès de Kibana aux journaux stockés dans votre domaine Amazon ES.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 09/01/2018

Date de mise à jour : 20/06/2018