Passer au contenu

Comment utiliser Filebeat et Logstash sur Amazon Linux pour me connecter à OpenSearch Service ?

Lecture de 7 minute(s)
0

Je souhaite utiliser Filebeat et Logstash sur Amazon Linux pour me connecter à un cluster Amazon OpenSearch Service, mais je reçois un message d'erreur.

Résolution

Configurer les ports de sécurité

Pour vous connecter à OpenSearch Service à l’aide de Logstash, configurez vos ports de sécurité pour transférer les journaux depuis Logstash.

Procédez comme suit :

  1. Lancez une instance Amazon Elastic Compute Cloud (Amazon EC2) pour Filebeat, puis lancez une autre instance depuis laquelle Logstash pourra envoyer des journaux.
  2. Assurez-vous que vos instances EC2 appartiennent au même groupe de sécurité que votre cloud privé virtuel (VPC) pour OpenSearch Service.
  3. Assurez-vous que les ports 80, 443 et 5044 sont ouverts dans votre groupe de sécurité afin de pouvoir envoyer des données entre Logstash et OpenSearch Service.

Mettre à jour les configurations Filebeat, Logstash et OpenSearch Service

Il est recommandé d'utiliser les versions de Filebeat et de Logstash qui correspondent à votre OpenSearch Service avec une ancienne version d'Elasticsearch. Utilisez les versions de Filebeat et Logstash qui correspondent à la version de votre domaine.

Si vous utilisez OpenSearch Service 1.x avec un mode de compatibilité, OpenSearch Service indique que sa version est la 7.10. Consultez la matrice de compatibilité pour choisir la version correcte de Filebeat et de Logstash. Pour plus d'informations, consultez la matrice de support sur le site Web d'Elastic ou les matrices de compatibilité sur le site Web d'OpenSearch.

Si vous utilisez la version 1.0 ou ultérieure d'OpenSearch Service, activez le mode de compatibilité lorsque vous lancez votre domaine.

Pour vous assurer que les logiciels téléchargés demeurent synchronisés, téléchargez les gestionnaires de paquets Red Hat (RPM) sur chaque instance. Pour éviter un point de défaillance unique dans votre pipeline, n'exécutez pas Filebeat et Logstash sur la même instance.

Installer Filebeat sur l'instance EC2 source

Pour installer Filebeat sur l'instance source, procédez comme suit :

  1. Utilisez SSH pour vous connecter à l'instance que vous avez lancée pour Filebeat.

  2. Exécutez la commande suivante pour télécharger le fichier RPM correspondant à la version compatible de Filebeat :

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm
  3. Exécutez la commande suivante pour installer le fichier RPM Filebeat :

    rpm -ivh filebeat-oss-8.15.2-x86_64.rpm

Installer et configurer Logstash sur une instance EC2 distincte

Procédez comme suit :

  1. Utilisez SSH pour vous connecter à l'instance que vous avez lancée pour Logstash.

  2. Exécutez la commande suivante pour télécharger le fichier RPM Logstash compatible :

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm
  3. Exécutez la commande suivante pour installer Java ou OpenJDK sur votre instance EC2 :

    yum install java-1.8.0-*

    Remarque : La commande précédente utilise la version 8 de Java (OpenJDK 1.8). Toutes les versions de Logstash prennent en charge la version 8 de Java.

  4. Exécutez la commande suivante pour installer le fichier RPM Logstash :

    rpm -ivh logstash-oss-8.15.2-x86_64.rpm
  5. Exécutez la commande suivante pour ouvrir le répertoire de données Logstash :

    cd /usr/share/logstash/
  6. Exécutez la commande suivante pour installer le plug-in OpenSearch Service pour Logstash :

    bin/logstash-plugin install logstash-output-opensearch
  7. Pour vérifier l'installation du plug-in Logstash, exécutez la commande suivante :

    bin/logstash-plugin list

    Remarque : Pour Logstash OSS 7.13 et versions ultérieures, utilisez uniquement le plug-in logstash-output-opensearch. La version 7.12.1 prend en charge à la fois les plug-ins logstash-output-elasticsearch et logstash-output-opensearch.

  8. Pour vérifier que les répertoires de configuration existent, vérifiez les répertoires /etc/filebeat et /etc/logstash.

  9. Pour envoyer des journaux via Logstash, créez un fichier de configuration Filebeat à l'adresse /etc/filebeat/filebeat.yml.
    Exemple de fichier de configuration Filebeat :

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
    
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
    
    index.number_of_shards: 1
    index.codec: best_compression
    
    #output.elasticsearch:
    #hosts: ["your-domain-endpoint"]
    #protocol: "https"
    
    output.logstash:
      # The Logstash hosts
      hosts: ["Logstash-EC2-InstanceIP:5044"]
    
    setup.ilm.enabled: false
    ilm.enabled: false

    Remarque : Remplacez Logstash-EC2-InstanceIP:5044 par l'adresse IP de votre instance Logstash et your-domain-endpoint par votre point de terminaison de domaine. Vous pouvez également envoyer des journaux directement à OpenSearch Service. Pour plus d'informations, consultez la page section logstash-output-opensearch sur le site Web de GitHub.

  10. Créez un fichier de configuration Logstash à l'adresse /etc/logstash/conf.d/logstash.conf.
    Exemple de fichier de configuration Logstash :

input {
  beats {
    port => 5044
  }
}

output {
  opensearch {
    hosts => ["https://domain-endpoint:443"]
    ssl => true
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => "my-username"
    password => "my-password"
  }
}

Remarque : Remplacez domain-endpoint, my-username et my-password par vos valeurs. Pour tester la connectivité à votre point de terminaison OpenSearch Service, exécutez la commande suivante :

curl -XGET https://your-domain-endpoint

Remarque : Remplacez your-domain-endpoint par le point de terminaison de votre domaine. (Facultatif) Si vous avez activé le contrôle précis des accès (FGAC), exécutez la commande suivante :

curl -u my-username:my-password -XGET https://your-domain-endpoint

Remarque : Remplacez your-domain-endpoint par le point de terminaison de votre domaine. Exécutez les commandes suivantes pour démarrer les services Filebeat et Logstash :

systemctl start filebeat
systemctl start logstash
  1. Pour confirmer que les journaux Filebeat sont envoyés, exécutez la commande curl suivante dans votre domaine OpenSearch Service :
curl -XGET https://your-domain-endpoint/_cat/indices

Remarque : Remplacez your-domain-endpoint par le point de terminaison de votre domaine.
Exemple de sorties d'un index Filebeat :

green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Si vous avez correctement configuré les tableaux de bord Filebeat, Logstash et OpenSearch avec Amazon EC2 Linux, votre pipeline se présente comme dans l’exemple suivant :

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

Résoudre les erreurs d'installation de 401, 403 et Logstash x-pack

Erreur 401 Unauthorized

Si Logstash renvoie une erreur « 401 Unauthorized », cela signifie que votre domaine OpenSearch Service utilise l'une des fonctionnalités de sécurité suivantes :

  • FGAC
  • Authentification Amazon Cognito

Pour résoudre ce problème, ajoutez des informations d'authentification à votre fichier de configuration Logstash à l'adresse /etc/logstash/conf.d/logstash.conf.

Exemple de configuration :

output {
  opensearch {
    hosts => ["https://your-domain-endpoint"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
    user => "my-username"
    password => "my-password"
  }
}

Remarque : Remplacez your-domain-endpoint, my-username et my-password par les valeurs de votre domaine OpenSearch Service.

Erreur 403 Forbidden

Si Logstash ne dispose pas des autorisations Gestion des identités et des accès AWS (AWS IAM) requises pour accéder à OpenSearch Service, une erreur « 403 Forbidden » se produit.

Pour résoudre ce problème, procédez comme suit :

  1. Exécutez la commande suivante pour installer le plug-in OpenSearch Service pour Logstash :

    bin/logstash-plugin install logstash-output-opensearch
  2. Créez un rôle IAM.

  3. Créez la politique suivante, puis associez-la au rôle IAM :

    {  
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "es:ESHttp*"
          ],
          "Resource": "[Amazon-OpenSearch-Domain-ARN]"
        }
      ]
    }

    Remarque : Remplacez Amazon-OpenSearch-Domain-ARN par l’Amazon Resource Name (ARN) de votre domaine OpenSearch Service.

  4. Mettez à jour votre fichier de configuration Logstash à l'adresse /etc/logstash/conf.d/logstash.conf.
    Exemple de fichier de configuration Logstash :

    output {
      opensearch {
        hosts => ["domain-endpoint"]
        ssl => true
        region => "example_region"
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }

    Remarque : Remplacez domain-endpoint et example-region par les valeurs de votre domaine OpenSearch Service.

Erreur d’installation de Logstash x-pack

Si Logstash ne démarre pas en raison d'une erreur « x-pack plugin », procédez comme suit :

  1. Ouvrez le fichier de registre suivant :

    /usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
  2. Trouvez la ligne de code suivante :

    load_xpack unless LogStash::OSS
  3. Mettez à jour le code selon l'exemple suivant :

    #load_xpack unless LogStash::OSS
  4. Pour éviter les erreurs de démarrage du plug-in x-pack, désactivez les paramètres d’Index Life Management (ILM) dans vos fichiers de configuration :
    Dans Filebeat, configurez ilm.enabled : false.
    Dans Logstash, configurez ilm_enabled => false.

Informations connexes

Charger des données dans Amazon OpenSearch Service avec Logstash

AWS OFFICIELA mis à jour il y a un an