Comment puis-je me connecter à Amazon OpenSearch Service à l'aide de Filebeat et de Logstash sur Amazon Linux ?

Dernière mise à jour : 02/02/2022

J'essaie de me connecter à un cluster Amazon OpenSearch Service à l'aide de Logstash sur Amazon Linux. Cependant, je reçois toujours un message d'erreur. Comment résoudre ce problème ?

Brève description

Pour vous connecter à Amazon OpenSearch Service à l'aide de Logstash, suivez les étapes suivantes :

1.    Configurez vos ports de sécurité (tels que le port 443) pour transférer les journaux vers Amazon OpenSearch Service.

2.    Mettez à jour vos configurations Filebeat, Logstash et OpenSearch Service.

3.    Installez Filebeat sur votre instance Amazon Elastic Compute Cloud (Amazon EC2) source. Assurez-vous que vous avez correctement installé et configuré votre fichier de configuration YAML.

4.    Installez Logstash sur une instance Amazon EC2 distincte d’où les journaux seront envoyés.

Si vous n'aviez pas correctement installé ou configuré Logstash, vous recevez l'une de ces erreurs : erreur 401 Autorisation, erreur 403 Interdit ou erreur d'installation de x-pack.

Résolution

Configurer vos ports de sécurité

Veillez à configurer vos ports de sécurité afin que votre instance Amazon Elastic Compute Cloud (Amazon EC2) puisse transférer les journaux vers Amazon OpenSearch Service.

Pour configurer vos ports de sécurité afin de transférer les journaux de Logstash, procédez comme suit :

1.    Créez une instance Amazon EC2 sur laquelle vous avez installé Apache et Filebeat. L'instance Amazon EC2 doit pouvoir transférer les journaux de Logstash vers Amazon OpenSearch Service.

2.    Assurez-vous que vos instances EC2 résident dans le même groupe de sécurité que votre Virtual Private Cloud (VPC) pour OpenSearch Service.

3.    Assurez-vous que les ports suivants sont ouverts dans votre groupe de sécurité : 80, 443 et 5044. Ces ports doivent être ouverts afin que vous puissiez envoyer des données entre Logstash et OpenSearch Service.

Mettre à jour vos configurations FileBeat, Logstash et OpenSearch Service

Le service OpenSearch fonctionne mieux lorsque vous utilisez les mêmes versions OSS. Essayez donc d'utiliser des versions compatibles pour les applications suivantes :

  • FileBeat version x.x OSS
  • Logstash version x.x OSS (v7.16.2 et v6.8.22 pour le correctif de sécurité Log4j)
  • OpenSearch Service version x.x

Pour vous assurer que le logiciel téléchargé reste synchronisé, téléchargez les RPM sur chaque instance EC2 (distincte). Pour éviter un point de défaillance unique dans votre pipeline, il est important d'éviter d'exécuter les services Filebeat et Logstash sur la même instance EC2.

Remarque : si vous utilisez Amazon OpenSearch Service versions 1.0 ou ultérieures, assurez-vous que le mode de compatibilité est activé lorsque vous lancez votre domaine pour la première fois. Notez que vous ne pouvez activer le mode de compatibilité que via la Console de gestion AWS.

Installer Filebeat sur l'instance Amazon EC2 source

1.    Téléchargez le RPM pour la version souhaitée de Filebeat :

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.16.2-x86_64.rpm

2.    Installez le fichier RPM de Filebeat :

rpm -ivh filebeat-oss-7.16.2-x86_64.rpm

Installez Logstash sur une instance Amazon EC2 distincte à partir de laquelle les journaux seront envoyés

1.    Téléchargez le fichier RPM de la version de Logstash souhaitée :

wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.16.2-x86_64.rpm

Cet exemple utilise la version 6.7 afin qu’elle corresponde au numéro de version d'Amazon OpenSearch Service et de Filebeat.

2.    Installez Java ou OpenJDK sur votre instance Amazon EC2 avant d'installer le fichier RPM de Logstash :

yum install java-1.8.0-*

3.    Après l’installation de Java, installez le fichier RPM que vous avez téléchargé pour Logstash à l'aide de la commande rpm :

rpm -ivh logstash-oss-7.16.2-x86_64.rpm

Remarque : Logstash nécessite Java pour s'exécuter. Cet exemple utilise Java version 8 (Open JDK 1.8), qui est pris en charge par toutes les versions de Logstash. Pour plus d'informations sur les versions prises en charge de Java et de Logstash, consultez la matrice de prise en charge sur le site web Elasticsearch.

4.    Vérifiez les fichiers de configuration en vérifiant les répertoires « / etc / filebeat » et « / etc / logstash ».

5.    Pour Filebeat, mettez à jour la sortie vers Logstash ou OpenSearch Service, et spécifiez que les journaux doivent être envoyés. Ensuite, démarrez votre service.

Remarque : si vous essayez de charger des modèles sur OpenSearch Dashboards avec Filebeat, votre téléchargement échoue. Filebeat suppose que votre cluster prend en charge le plugin x-pack.

6.    Mettez à jour votre fichier de configuration Filebeat YAML pour envoyer les journaux d'accès Apache à Logstash.

Par exemple :

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: ["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
#protocol: "https"
 
output.logstash:
  # The Logstash hosts
  hosts: [“Logstash-EC2-InstanceIP:5044"]
 
setup.ilm.enabled: false 
ilm.enabled: false

7.    Assurez-vous que votre fichier de configuration Logstash peut accéder à Filebeat sur le port 5044. Cet accès au port autorise Logstash à transférer des demandes vers votre point de terminaison d'un VPC OpenSearch Service.

Par exemple :

input {
  beats {
    port => 5044
  }
}

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

8.    Démarrez les services Filebeat et Logstash avec les commandes suivantes sur chaque instance.

Filebeat :

systemctl start filebeat (service filebeat start)

Logstash :

cp /etc/logstash/logstash.conf /etc/logstash/conf.d/
systemctl start logstash (service logstash start)

9.    Exécutez un appel d'API des index cat vers votre domaine OpenSearch Service pour confirmer l’envoi des journaux Filebeat. Si vos journaux sont envoyés, vous recevez la réponse suivante :

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
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

Par défaut, les index Filebeat tournent quotidiennement. Voici un exemple de sortie d'un index Filebeat :

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
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 réussi à configurer Filebeat Service, Logstash et OpenSearch Dashboards (ELK) avec Amazon EC2 Linux, votre pipeline ressemble à ceci :

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

Erreur 401 Non autorisé

Une erreur 401 Non autorisé de Logstash indique que votre domaine OpenSearch Service est protégé par un contrôle d'accès affiné (FGAC) ou Amazon Cognito. FGAC nécessite des demandes signées par un utilisateur ou un rôle, qui doivent être définies dans la stratégie d'accès du domaine. Si une erreur 401 Non autorisé s’affiche, veillez à activer correctement FGAC dans votre fichier de configuration Logstash.

Par exemple :

output {
  elasticsearch {
    hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
   user => "elastic"
    password => "changeme"
  }
}

Erreur 403 interdite

Lorsque vous utilisez et configurez Logstash pour envoyer des données à OpenSearch Service, une erreur 403 Interdit risque de d’afficher. Cette erreur se produit lorsque Logstash ne dispose pas des autorisations nécessaires et qu’il n'a pas réussi à vérifier votre identité AWS Identity Access Management (IAM). Pour résoudre ce problème, veillez à signer vos demandes à OpenSearch Service à l'aide de vos informations d'identification IAM.

Pour signer des demandes OpenSearch Service à l'aide de Logstash, procédez comme suit :

1.    Installez le plugin Logstash pour OpenSearch Service :

bin/logstash-plugin install logstash-output-amazon_es

2.     Attachez un rôle IAM à l'instance Amazon EC2, comme ceci :

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

3.    Mettez à niveau vos paramètres de configuration Logstash pour utiliser le plugin Logstash « amazon_es » comme sortie dans votre pipeline :

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

Erreur d'installation de Logstash x-pack

Si vous rencontrez des erreurs avec x-pack lorsque vous démarrez Logstash, désactivez manuellement le plugin x-pack à partir de votre fichier de registre.

Pour désactiver manuellement le plugin x-pack, procédez comme suit :

1.    Ouvrez le fichier suivant :

/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb

2.    Recherchez load_xpack et commenter en ligne :

“load_xpack unless LogStash::OSS” >> “#load_xpack unless LogStash::OSS”

Remarque : vous pouvez vérifier vos fichiers de configuration pour confirmer si les paramètres ILM (Index Life Management) (ilm.enabled et ilm_enabled) sont tous deux définis sur « false ». La désactivation de ces paramètres ILM dans vos fichiers de configuration élimine les erreurs de démarrage du plugin x-pack.

Amazon OpenSearch Service est le successeur d'Amazon Elasticsearch Service.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?