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

Date de la dernière mise à jour : 17/08/2021

J'essaie de me connecter à un cluster Amazon OpenSearch Service (successeur d'Amazon Elasticsearch 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 OpenSearch Service.

2.    Mettez à niveau 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 à 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 OpenSearch Service.

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

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

Mettez à niveau vos configurations FileBeat, Logstash et OpenSearch Service

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
  • OpenSearch Service version x.x

Remarque : OpenSearch Service fonctionne mieux lorsque vous utilisez les versions OSS de Filebeat et Logstash. Une bonne pratique consiste également à utiliser le même numéro de version pour Filebeat, Logstash et OpenSearch Service.

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'Opensearch Service 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 de Logstash, consultez la matrice Support 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
   -
/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 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 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 d'index cat vers votre domaine OpenSearch Service pour vérifier que les journaux Filebeat sont envoyés. Si vos journaux sont bien envoyés, vous recevrez la réponse suivante :

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

Filbeat > Logstash > Amazon OpenSearch Service/Dashboards

Erreur 401 non autorisée

Une erreur 401 non autorisée de Logstash indique que votre domaine OpenSearch Service est protégé par un contrôle d'accès sélectif (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"
  }
}

Erreur 403 interdite

Lorsque vous utilisez et configurez Logstash pour envoyer des données à OpenSearch Service, une erreur 403 Interdit peut s'afficher. Cette erreur se produit lorsque Logstash ne dispose pas des autorisations nécessaires et n'a pas réussi à vérifier votre identité IAM. Pour résoudre ce problème, veillez à signer vos demandes à OpenSearch Service à l'aide de vos informations d'identification AWS Identity Access Management (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 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 ?