Cette page est un exemple d’implémentation des fonctionnalités de gestion d’index dans Kibana. La mise en place de règle de gestion permet :
L’avantage de la fonctionnalité ILM est d’automatiser cette gestion avec des règles simple d’usage.

Nous vous recommandons d’effectuer un changement de vos pipelines Logstash. La rotation n’étant plus journalière et n’étant plus gérer par logstash voici la modification à apporter :
output {
elasticsearch {
hosts => "https://<id>.<domain_name>:9243"
index => "logs-k8s-time-series"
user => "elastic"
password => "*********"
action => "create"
ssl => true
ssl_certificate_verification => false
cacert => "/usr/share/logstash/config/ssl/ca.crt"
}
}
Voici la configuration globale du pipeline logstash :
curl -X PUT 'https://{{hostname}}/api/logstash/pipeline/main' -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -H 'Authorization: Basic {{TOKEN}}' -d @logstash-main-example.json
Par défaut sur votre cluster la fonctionnalité ILM est configuré à un interval de vérification de 10 minutes.
:warning: Ce paramètre peut être modifié dans des contexts hors prod.
GET _cluster/settings
PUT _cluster/settings
{
"persistent":{
"indices.lifecycle.poll_interval": "1s"
}
}
La définition d’une règle intègre plusieurs paramètres :
Nous recommandons d’effectuer dans la phase hot une rotation d’index sur les paramètres suivant :
Et une deuxième recommandation est d’effectuer une retention d’index égale à 60 jours.
Cela permet d’augmenter les performances de l’index et d’optimiser les recherches.
PUT _ilm/policy/logs-k8s-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "15d",
"max_size": "50gb",
"max_docs": 10
},
"set_priority": {
"priority": 50
}
}
},
"delete": {
"min_age": "60d",
"actions": {
"delete": {}
}
}
}
}
}
PUT _component_template/logs-k8s-settings
{
"template": {
"settings": {
"index.lifecycle.name": "logs-k8s-policy"
}
},
"_meta": {
"description": "Settings for K8S Logs"
}
}
PUT _component_template/logs-k8s-mappings
{
"template": {
"mappings": {
"properties": {
"@timestamp": {
"type": "date",
"format": "date_optional_time||epoch_millis"
},
"message": {
"type": "wildcard"
}
}
}
},
"_meta": {
"description": "Mappings for @timestamp and message fields"
}
}
L’index template est une fonctionnalité permettant de définir des paramètres par défaut à vos index. Cela permet d’automatiser la gestion des index en appliquant des configurations de réplications, de règles de gestion automatiquement.
Nous recommandons d’avoir les paramètres de réplications suivant :
PUT _index_template/logs-k8s-template
{
"index_patterns": ["logs-k8s-*"],
"data_stream": { },
"composed_of": [ "logs-k8s-mappings", "logs-k8s-settings" ],
"priority": 500,
"_meta": {
"description": "Template for my time series data"
}
}
PUT logs-k8s-time-series/_bulk
{ "create":{ } }
{ "@timestamp": "2099-05-06T16:21:15.000Z", "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736" }
{ "create":{ } }
{ "@timestamp": "2099-05-06T16:25:42.000Z", "message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" }
POST logs-k8s-time-series/_doc
{
"@timestamp": "2099-05-06T16:21:15.000Z",
"message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
}
PUT _data_stream/logs-k8s-time-series
GET _ilm/status
GET _ilm/policy/logs-k8s-policy
GET logs-k8s-time-series/_ilm/explain
Attention, dans l’Index Managmenent la taille de votre index est l’addition des primaires shards et des replicas. ILM réalisera les actions de rollover sur la taille des primaires shards de votre index uniquement.
DELETE /_data_stream/logs-k8s-time-series
DELETE / _component_template/logs-k8s-mappings
DELETE / _component_template/logs-k8s-settings
DELETE /_index_template/logs-k8s-template
DELETE /_ilm/policy/logs-k8s-policy