Le volume des données de surveillance en série temporelle générées par Heartbeat augmente avec le temps, ce qui accroît le nombre de shards et la charge du cluster. Utilisez Index Lifecycle Management (ILM) pour définir une politique de rotation pour les index heartbeat-*. Cette politique permet de faire pivoter les index lors de la phase active (hot), de réduire les shards et de forcer la fusion des segments lors de la phase tiède (warm), de migrer les données vers les nœuds tièdes lors de la phase froide (cold) et de supprimer périodiquement les données expirées lors de la phase de suppression.
Procédure
-
Étape 1 : Créer et configurer un cluster hot-warm
Créez un cluster contenant des nœuds hot et warm, activez la création automatique d'index et configurez une liste d'autorisation IP pour l'accès public.
-
Étape 2 : Configurer ILM dans Heartbeat
Activez la fonctionnalité ILM et configurez ses paramètres dans le fichier heartbeat.yml. Au démarrage de Heartbeat, Elasticsearch génère automatiquement un modèle d'index Heartbeat.
-
Étape 3 : Créer une politique ILM
Utilisez l'API de politique ILM pour créer une politique définissant les conditions de rotation et d'archivage des index.
-
Étape 4 : Associer la politique ILM à un modèle d'index
Associez la politique ILM au modèle d'index Heartbeat.
-
Étape 5 : Associer un index à la politique ILM
Associez la politique ILM au premier index Heartbeat afin d'appliquer la politique à tous les index couverts par le modèle d'index.
-
Étape 6 : Afficher les index de chaque phase
Consultez les index archivés dans chaque phase : hot, warm, cold et delete.
Étape 1 : Créer et configurer un cluster hot-warm
-
Créez un cluster hot-warm, qui contient à la fois des nœuds hot et warm, et consultez leurs attributs. Le tableau suivant décrit les différences.
Type de nœud
Exigences en matière de données
Performances en lecture/écriture
Spécifications
Stockage
nœud hot
Données récentes, telles que les données de journal des deux derniers jours.
Élevée
Élevées, par exemple 32 cœurs et 64 Go.
Les disques cloud SSD sont recommandés.
nœud warm
Données historiques, telles que les données de journal datant de plus de deux jours.
Faible
Faibles, par exemple 8 cœurs et 32 Go.
Les disques ultra sont recommandés. Vous pouvez également utiliser OpenStore pour mettre en œuvre un stockage sans serveur pour de grandes quantités de données froides.
Dans Alibaba Cloud Elasticsearch, la valeur
box_typed'un nœud warm estwarm, et noncold. Cela s'explique par le fait que les nœuds warm dans Alibaba Cloud Elasticsearch correspondent au niveau warm dans l'architecture native d'Elasticsearch.-
Lorsque vous créez une instance Alibaba Cloud Elasticsearch, activez les nœuds Warm pour créer un cluster hot-warm.
Après avoir activé et acheté des nœuds warm, le système ajoute le paramètre
-Enode.attr.box_typeaux paramètres de démarrage du nœud :Nœud hot :
-Enode.attr.box_type=hotNœud warm :
-Enode.attr.box_type=warm
L'activation des nœuds warm désigne vos nœuds de données existants comme des nœuds hot.
Connectez-vous à la console Kibana du cluster. Pour plus d'informations, consultez la rubrique Se connecter à un cluster à l'aide de Kibana.
Dans le volet de navigation de gauche, cliquez sur Dev Tools.
-
Dans la Console, exécutez la commande suivante pour afficher les attributs des nœuds hot et warm du cluster.
GET _cat/nodeattrs?v&h=host,attr,valueSi la sortie contient des nœuds hot et warm, le cluster prend en charge l'architecture hot-warm.
-
Activez la création automatique d'index pour le cluster. Pour plus d'informations, consultez la rubrique Activer la création automatique d'index en configurant les paramètres YML.
Configurez une liste d'autorisation IP pour l'accès public au cluster et ajoutez l'adresse IP du serveur sur lequel Heartbeat est installé à la liste. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation IP.
Étape 2 : Configurer ILM dans Heartbeat
Pour plus d'informations sur la configuration d'ILM, consultez la rubrique Configurer la gestion du cycle de vie des index.
Téléchargez et décompressez le package d'installation Heartbeat.
-
Modifiez le fichier heartbeat.yml pour définir les sections heartbeat.monitors, setup.template.settings, setup.kibana et output.elasticsearch.
L'exemple suivant présente une configuration type.
heartbeat.monitors: - type: icmp schedule: '*/5 * * * * * *' hosts: ["47.111.xx.xx"] setup.template.settings: index.number_of_shards: 3 index.codec: best_compression index.routing.allocation.require.box_type: "hot" setup.template.overwrite: true setup.kibana: host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601" output.elasticsearch: hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"] ilm.enabled: true ilm.rollover_alias: "heartbeat" ilm.pattern: "{now/d}-000001" username: "elastic" password: "<your_password>"Le tableau suivant décrit certains des paramètres. Pour plus d'informations, consultez la documentation de configuration Heartbeat.
Paramètre
Description
index.number_of_shards
Nombre de shards primaires. La valeur par défaut est 1.
index.routing.allocation.require.box_type
Spécifie que les données d'index sont écrites sur les nœuds hot.
setup.template.overwrite
Indique s'il faut écraser le modèle d'index d'origine. Si vous avez déjà chargé cette version du modèle d'index dans Elasticsearch, vous devez définir ce paramètre sur
truepour écraser le modèle d'origine. Il s'agit d'un élément de configuration de premier niveau, au même niveau quesetup.template.settings.host
Remplacez la valeur par l'endpoint public de votre service Kibana. Vous pouvez obtenir l'endpoint depuis la page de configuration Kibana.
hosts
Remplacez la valeur par l'endpoint public ou privé de votre cluster Elasticsearch. Vous pouvez obtenir l'endpoint depuis la page Informations de base du cluster. Pour plus d'informations, consultez la rubrique Afficher les informations de base d'une instance. Si vous définissez ce paramètre sur l'endpoint public, vous devez configurer une liste d'autorisation IP pour l'accès public au cluster. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation IP. Si vous définissez ce paramètre sur l'endpoint privé, assurez-vous que le cluster et le serveur hébergeant Heartbeat se trouvent dans le même VPC.
ilm.enabled
Définissez ce paramètre sur
truepour activer ILM.ilm.rollover_alias
L'alias de l'index généré lors d'une rotation. La valeur par défaut est
heartbeat-{beat.version}.ilm.pattern
Le modèle de l'index généré lors d'une rotation. Ce paramètre prend en charge les calculs de date. La valeur par défaut est
{now/d}-000001. Lorsqu'une rotation est déclenchée, le compteur numérique dans le nom de l'index est incrémenté de 1. Par exemple, si la première rotation génère un index nomméheartbeat-2020.04.29-000001, la rotation suivante génère un nouvel index nomméheartbeat-2020.04.29-000002.username
Le nom d'utilisateur par défaut est
elastic.password
Le mot de passe de l'utilisateur
elastic. Le mot de passe est défini lors de la création de l'instance. Si vous oubliez le mot de passe, vous pouvez le réinitialiser. Pour plus d'informations, consultez la rubrique Réinitialiser le mot de passe d'accès d'une instance.ImportantSi vous modifiez
ilm.rollover_aliasouilm.patternaprès avoir chargé le modèle d'index, vous devez définirsetup.template.overwritesurtruepour écraser le modèle. -
Démarrez le service Heartbeat.
sudo ./heartbeat -e
Étape 3 : Créer une politique ILM
Vous pouvez créer une politique ILM dans Elasticsearch à l'aide de l'API ou de la console Kibana. L'exemple suivant montre comment créer la politique heartbeat-policy à l'aide de l'API.
Heartbeat peut charger et écrire une politique par défaut dans Elasticsearch avec la commande ./heartbeat setup --ilm-policy. Pour créer une politique personnalisée, exportez la politique par défaut avec ./heartbeat export ilm-policy puis modifiez-la.
Dans la console Kibana, exécutez la commande suivante pour créer une politique ILM.
PUT /_ilm/policy/heartbeat-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "5mb",
"max_age": "1d",
"max_docs": 100
}
}
},
"warm": {
"min_age": "60s",
"actions": {
"forcemerge": {
"max_num_segments":1
},
"shrink": {
"number_of_shards":1
}
}
},
"cold": {
"min_age": "3m",
"actions": {
"allocate": {
"require": {
"box_type": "warm"
}
}
}
},
"delete": {
"min_age": "1h",
"actions": {
"delete": {}
}
}
}
}
}
|
Phase |
Description |
|
hot |
Une rotation est déclenchée lorsque la taille de l'index atteint 5 Mo, que l'âge de l'index atteint 1 jour ou que le nombre de documents atteint 100. L'action |
|
warm |
L'index est réduit à un shard puis fusionné de force en un seul segment. L'index entre ensuite dans la phase cold trois minutes après la rotation. |
|
cold |
L'index est migré d'un nœud hot vers un nœud warm et entre dans la phase delete une heure plus tard. |
|
delete |
L'index est supprimé. |
Le nom de la politique ne peut pas être modifié après sa création. Vous pouvez également créer une politique dans la console Kibana. Toutefois, l'unité minimale pour max_age dans Kibana est l'heure. Si vous utilisez l'API, vous pouvez spécifier l'unité minimale en secondes.
Étape 4 : Associer la politique ILM à un modèle d'index
Au démarrage de Heartbeat, un modèle d'index Heartbeat est automatiquement créé dans Elasticsearch. Associez la politique heartbeat-policy que vous avez créée à l'étape Étape 3 : Créer une politique ILM à ce modèle d'index.
Connectez-vous à la console Kibana de votre instance Alibaba Cloud Elasticsearch. Pour plus d'informations, consultez la rubrique Se connecter à un cluster à l'aide de Kibana.
Dans le volet de navigation de gauche, cliquez sur Management.
Dans la zone Elasticsearch, cliquez sur Index Lifecycle Policies.
Dans la liste Index lifecycle policies, recherchez la politique heartbeat-policy et choisissez Actions > Add policy to index template dans la ligne de la politique.
Dans la boîte de dialogue qui s'affiche, sélectionnez le modèle d'index dans la liste Index template et saisissez un alias d'index dans la zone de texte Alias for rollover index.
Cliquez sur Add policy.
Étape 5 : Associer un index à la politique ILM
Au démarrage de Heartbeat, Elasticsearch crée automatiquement un index. Vous devez associer manuellement la politique ILM à ce premier index pour remplacer sa politique par défaut. Cette étape est nécessaire même si la politique est déjà associée au modèle d'index comme décrit à l'étape Étape 4 : Associer la politique ILM à un modèle d'index.
Sur la page Management, dans la zone Elasticsearch, cliquez sur Index Management.
Dans la liste Index management, recherchez l'index cible et cliquez sur le nom de l'index.
Sur la page Summary, choisissez Manage > Remove lifecycle policy pour supprimer la politique par défaut fournie avec Heartbeat.
Dans la boîte de dialogue qui s'affiche, cliquez sur Remove policy.
Ensuite, choisissez Manage > Add lifecycle policy.
Dans la boîte de dialogue qui s'affiche, sélectionnez la politique heartbeat-policy que vous avez créée à l'étape Étape 3 : Créer une politique ILM dans la liste Lifecycle policy. Dans la zone de texte Index rollover alias, saisissez l'alias d'index que vous avez défini à l'étape Étape 4 : Associer la politique ILM à un modèle d'index. Ensuite, cliquez sur Add policy.
Étape 6 : Afficher les index de chaque phase
Sur la page Index management, cliquez sur la liste déroulante Lifecycle phase et sélectionnez une phase du cycle de vie, telle que Hot, Warm ou Cold, pour filtrer et afficher les index de cette phase.
FAQ
Comment ajuster la fréquence de vérification de la politique ILM ?
Par défaut, ILM vérifie toutes les 10 minutes les index correspondant à une politique. Pendant cet intervalle, la quantité de données peut dépasser le seuil spécifié. Par exemple, à l'étape Étape 3 : Créer une politique ILM, max_docs est défini sur 100, mais la rotation pourrait ne pas être déclenchée avant que le nombre de documents ne dépasse déjà 100.
Vous pouvez contrôler la fréquence de vérification en modifiant le paramètre indices.lifecycle.poll_interval :
Une fréquence de vérification élevée augmente la charge des nœuds. Configurez ce paramètre avec précaution en fonction de vos besoins métier.
PUT _cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval":"1m"
}
}