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

Dernière mise à jour : 18/03/2021

J'essaie de me connecter à un cluster Amazon Elasticsearch Service (Amazon ES) à l'aide de Logstash sur Amazon Linux. Cependant, j'obtiens toujours une erreur. Comment résoudre ce problème ?

Brève description

Pour vous connecter à Amazon ES à l'aide de Logstash, effectuez les étapes suivantes :

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

2.    Mettez à jour vos configurations FileBeat, Logstash et Elasticsearch.

3.    Installez FileBeats sur votre instance source Amazon Elastic Compute Cloud (Amazon EC2). Assurez-vous que vous avez correctement installé et configuré vos fichiers YAML et CONF.

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

Si vous n'avez pas correctement installé ou configuré Logstash, vous recevrez l'une de ces erreurs : 401 Erreur d'autorisation, 403 Erreur interdite, ou erreur d'installation du x-pack.

Résolution

Configurer vos ports de sécurité

Assurez-vous de configurer vos ports de sécurité afin que votre instance Amazon Elastic Compute Cloud (Amazon EC2) puisse transférer les journaux vers Amazon ES.

Pour configurer vos ports de sécurité afin de transférer les journaux de Logstash, effectuez les étapes suivantes :

1.    Créez une instance Amazon EC2 sur laquelle vous avez installé Apache et Filebeat. L'instance Amazon EC2 doit être en mesure de transférer les journaux de Logstash vers Amazon ES.

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

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

Mettez à jour vos configurations FileBeat, Logstash et Elasticsearch

Assurez-vous que le même numéro de version est utilisé pour les éléments suivants :

  • FileBeat version x.x OSS
  • Logstash version x.x OSS
  • Elasticsearch version x.x

Remarque : Amazon ES fonctionne mieux lorsque vous utilisez les versions OSS de Filebeat et Logstash. Il est également recommandé d'utiliser le même numéro de version pour Filebeat, Logstash et Elasticsearch.

Pour vous assurer que les configurations mises à jour sont toutes synchronisées, téléchargez les RPM sur chaque instance (distincte). Pour éviter un point unique de défaillance, il est important d'éviter d'exécuter des installations RPM sur la même instance. Ensuite, vérifiez que les fichiers téléchargés sont disponibles.

Installer Filebeat sur l'instance Amazon EC2 source

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

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

2.    Installez le fichier Filebeats RPM :

rpm -ivh filebeat-oss-6.7.0-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-6.7.0.rpm

Cet exemple utilise la version 6.7 pour correspondre au numéro de version d'Elasticsearch et de Filebeat.

2.    Installez le fichier RPM que vous avez téléchargé pour Logstash à l'aide de la commande rpm :

rpm -ivh logstash-oss-6.7.0.rpm

3.    Installez Java ou OpenJDK sur votre instance Amazon EC2 :

yum install java-1.8.0-*

Remarque : Logstash nécessite Java pour s'exécuter. Dans cet exemple, nous utilisons 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 Logstash, consultez la matrice de prise en charge d'Elasticsearch sur le site Web d'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 Elasticsearch et spécifiez que les journaux doivent être envoyés. Ensuite, démarrez votre service.

Remarque : si vous essayez de télécharger des modèles sur Kibana 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
   -
/var/log/httpd/access_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 à Filebeats sur le port 5044. Cet accès au port permet à Logstash de transférer les demandes vers votre point de terminaison Amazon ES VPC.

Par exemple :

input {
  beats {
    port => 5044
  }
}
 
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
  }
}

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

Filebeat :

systemctl start filbeat (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 cat index sur votre domaine Amazon ES pour confirmer que les journaux Filebeat sont envoyés. Si vos journaux sont envoyés avec succès, vous recevrez la réponse suivante :

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-7.1.0-2020.02.12 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 indices 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.1.0-2020.02.12 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.1.0-2020.02.13 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Si vous configurez avec succès Elasticsearch, Logstash et Kibana (ELK) avec Amazon EC2 Linux, votre pipeline ressemble à ceci :

Filbeat > Logstash > AWS Elasticsearch/Kibana

Erreur 401 Erreur non autorisée

Une erreur 401 non autorisée de Logstash indique que votre domaine Amazon ES est protégé par un contrôle d'accès précis (FGAC) ou Amazon Cognito. FGAC nécessite des requêtes signées par un utilisateur ou un rôle, qui doivent être définies dans la stratégie d'accès du domaine. Si vous recevez une erreur 401 Non autorisé, assurez-vous que vous avez correctement activé 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"
  }
}

403 Erreur interdite

Lorsque vous utilisez et configurez Logstash pour envoyer des données à Amazon ES, vous pouvez recevoir une erreur 403 interdite. Cette erreur se produit lorsque Logstash n'a pas un accès approprié. Pour résoudre ce problème, assurez-vous de signer vos demandes à Amazon ES à l'aide des informations d'identification AWS Identity Access Management (IAM).

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

1.    Installez le plugin Logstash pour Amazon ES :

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-ES-Domain-ARN]"
        }
    ]
}

3.    Mettez à jour vos paramètres de configuration Amazon ES pour utiliser le plugin Logstash « amazon_es »

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 plug-in 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.    Trouver load_xpack et commenter en ligne :

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

Notez que vos fichiers de configuration indiquent que les paramètres ILM (Index Life Management) (ilm.enabled et ilm_enabled) sont tous deux définis sur « faux ». La désactivation de ces paramètres ILM dans vos fichiers de configuration éliminera les erreurs de démarrage du plug-in x-pack.


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


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