Heartbeat avec Elasticsearch 8.x - Partie 1 : Installation et sécurisation

Publié le 04/01/2023

« Voir toutes les conférences Contactez-nous
Heartbeat with Elasticsearch 8.x - Part 1: Install & Secure

Introduction

Code sur Github: Elasticsearch et Beats

Nous allons installer Pulsation avec Elasticsearch et Kibana. Si vous n'avez pas encore configuré Elasticsearch et Kibana,suivez ces instructions.

Cette vidéo suppose que vous utilisez Certificats signés publiquement. Si vous utilisez Certificats auto-signés, va ici À déterminer.

Exigences

Une instance en cours d'exécution d'Elasticsearch et de Kibana.

Une instance d’un autre serveur Ubuntu 20.04 exécutant n’importe quel type de service.

Mesures

Étape 1 - Télécharger Heartbeat [01:12]

Sur la machine Ubuntu qui exécutera packetbeat, exécutez ces commandes pour télécharger les dépendances :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; sudo apt-get install -y apt-transport-https; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; sudo apt-get update && sudo apt-get install -y heartbeat-elastic;

Étape 2 - Configurer Heartbeat [02:21]

Modifiez ces champs pour le /etc/heartbeat/heartbeat.yml.

heartbeat.monitors: - type: http # ID used to uniquely identify this monitor in elasticsearch even if the config changes id: apache-website # Human readable display name for this service in Uptime UI and elsewhere name: Apache Website # List or urls to query urls: ["<url>"] #["http://192.168.0.60"] # Configure task schedule schedule: '@every 5s' # Total test connection and data exchange timeout #timeout: 16s # Name of corresponding APM service, if Elastic APM is in use for the monitored service. #service.name: my-apm-service-name - type: http # ID used to uniquely identify this monitor in elasticsearch even if the config changes id: elastic-rest # Human readable display name for this service in Uptime UI and elsewhere name: Elastic Rest # List or urls to query urls: ["<elasticsearch-domain>:<elasticsearch-port>"] username: 'elastic' password: "<your elastic password>" # Configure task schedule schedule: '@every 5s' setup.kibana: host: "https://<kibana-domain>:<kibana-port>" output.elasticsearch: hosts: ["<elasticsearch-domain>:<elasticsearch-port>"] protocol: "https" username: "elastic" password: "<your elastic password>"

Le fichier heartbeat.yml complété peut être trouvé ici

IMPORTANT : nous utilisons le superutilisateur Elastic pour la configuration initiale. Nous rétrograderons ces privilèges ultérieurement.

Testez ensuite votre configuration avec ces commandes :

/usr/share/heartbeat/bin/heartbeat test config -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat /usr/share/heartbeat/bin/heartbeat test output -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Vous devriez voir quelque chose comme ceci :

Verify heartbeat configuration Vérifier la configuration du rythme cardiaque

Étape 3 - Configuration de Heartbeat [12:48]

Exécutez maintenant cette commande pour configurer les flux de données et les vues Heartbeat dans Elasticsearch et Kibana :

/usr/share/heartbeat/bin/heartbeat setup -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Une fois la commande terminée, allez sur Kibana Menu et visiter Observabilité > Présentation pour voir une section Moniteur.

Étape 4 - Créer un utilisateur de publication [14:53]

Créer une vue de données Heartbeat [16:18]

À Kibana, allez à Gestion de la pile > Vues de données. Cliquez sur Créer des vues de données et remplissez les champs suivants :

name: heartbeat-* index: heartbeat-* Timestamp field: @timestamp

puis cliquez sur enregistrer la vue des données sur Kibana

Créer un rôle

À Kibana, allez à Gestion de la pile > Rôles > Créer un rôle. Remplissez ensuite ces champs :

Role name: heartbeat-publisher Cluster privileges: monitor, read_ilm Indices: heartbeat-* Privileges: create_doc

Créer un utilisateur

À Kibana, allez à Gestion de la pile > Utilisateurs > Créer un utilisateur. Remplissez ensuite ces champs :

Username: heartbeat-publisher Full name: heartbeat-publisher Email address: anything@anything.com Password: anything Roles: heartbeat-publisher, editor

Créer une clé API pour l'utilisateur

À Kibana, allez à Outils de développement > Console. Exécutez ensuite cette commande :

POST /_security/api_key/grant { "grant_type": "password", "username": "heartbeat-publisher", "password": "anything", "api_key": { "name": "heartbeat-publisher" } }

Cela devrait produire un résultat comme :

Heartbeat user token Jeton utilisateur Heartbeat

Modifier le /etc/heartbeat/heartbeat.yml en commentant le elastic nom d'utilisateur et mot de passe et activation du api_key comme ça:

output.elasticsearch: ...etc... api_key: "${ES_API_KEY}" #username: "elastic" #password: "" ...etc...

Nous allons utiliser le keystore Heartbeat pour charger les secrets à l'exécution. Exécutez maintenant cette commande pour définir ES_API_KEY variable de magasin de clés :

/usr/share/heartbeat/bin/heartbeat keystore add ES_API_KEY -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Presse entrer et lorsque vous y êtes invité, collez <id>:<api_key> où le <id> et le <api_key> sont les valeurs de la réponse du jeton utilisateur que vous avez obtenue précédemment.

Étape 5 - Exécuter Heartbeat [17:37]

systemctl enable heartbeat-elastic; systemctl start heartbeat-elastic;

Dans un instant, vous devriez commencer à voir des résultats dans Kibana dans l'un ou l'autre Découvrir, Observabilité, Gestion de la pile > Observabilité > Moniteurs.

Étape 6 - Configurer un autre moniteur sans avoir à recharger Heartbeat [26:15]

Sur le terminal, accédez à

cd /etc/heartbeat/monitors.d

puis copiez l'un des modèles désactivés

cp sample.html.yml.disabled html.yml.disabled

Ouvrir le fichier

vi html.yml.disabled

Cela devrait ressembler à ceci :

Heartbeat new http monitor Nouveau moniteur http Heartbeat

Et ensuite, apportez les modifications correspondantes

id: Any id name: Any name schedule: Any type of schdule, though i will use cron as an example hosts: ["<the monitor url>]

L'image ci-dessous montre un exemple :

Heartbeat new http monitor example Exemple de nouveau moniteur http Heartbeat

Maintenant, pour l'activer, nous pouvons utiliser la commande ci-dessous

cp html.yml.disabled html.yml

Étape 7 - Configurer un deuxième observateur [28:24]

Sur un autre serveur/machine, suivez l'étape 1, puis continuez avec les commandes pour copier les fichiers du premier serveur vers ce nouveau/actuel serveur comme indiqué dans l'image ci-dessous :

Heartbeat Second Observer to copy files from original server to current one Heartbeat Second Observer pour copier les fichiers du serveur d'origine vers le serveur actuel

et ensuite éditer ces champs pour le /etc/heartbeat/heartbeat.yml

Ci-dessous, un exemple d'image :

Heartbeat Second Observer heartbeat.yml file edits Modifications du fichier heartbeat.yml de Heartbeat Second Observer

Nous allons utiliser le keystore Heartbeat pour charger les secrets à l'exécution. Exécutez maintenant cette commande pour définir ES_API_KEY variable de magasin de clés :

/usr/share/heartbeat/bin/heartbeat keystore add ES_API_KEY -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Presse entrer et lorsque vous y êtes invité, collez <id>:<api_key> où le <id> et le <api_key> sont les valeurs de la réponse du jeton utilisateur que vous avez obtenue précédemment.

Exécutez maintenant Heartbeat

systemctl enable heartbeat-elastic.service; systemctl start heartbeat-elastic.service;