?El soporte de Elasticsearch es experimental!
Áú»¢¶Ä²© admite el almacenamiento de datos hist¨®ricos mediante Elasticsearch en lugar de una base de datos. Los usuarios pueden elegir el lugar de almacenamiento de datos hist¨®ricos entre una base de datos compatible y Elasticsearch. El procedimiento de puesta en marcha descrito en esta secci¨®n es aplicable a Elasticsearch. versi¨®n 7.X. En caso de que se instale una versi¨®n anterior o posterior de Elasticsearch, es posible que algunas funciones no funcionen seg¨²n lo previsto.
Si todos los datos del historial se almacenan en Elasticsearch, las tendencias no se calculan ni se almacenan en la base de datos. Sin tendencias calculadas y almacenadas, es posible que sea necesario extender el per¨ªodo de almacenamiento del historial.
Para garantizar una comunicaci¨®n adecuada entre todos los elementos involucrados, aseg¨²rese de que los par¨¢metros del archivo de configuraci¨®n del servidor y del archivo de configuraci¨®n del frontend est¨¢n configurados correctamente.
Borrador del archivo de configuraci¨®n del servidor Áú»¢¶Ä²© con par¨¢metros a actualizar:
### Option: HistoryStorageURL
# History storage HTTP[S] URL.
#
# Mandatory: no
# Default:
# HistoryStorageURL=
### Option: HistoryStorageTypes
# Comma separated list of value types to be sent to the history storage.
#
# Mandatory: no
# Default:
# HistoryStorageTypes=uint,dbl,str,log,text
Valores de par¨¢metros de ejemplo para completar el archivo de configuraci¨®n del servidor Áú»¢¶Ä²© con:
Esta configuraci¨®n obliga al servidor Áú»¢¶Ä²© a almacenar valores hist¨®ricos de tipos num¨¦ricos en la base de datos correspondiente y datos hist¨®ricos textuales en Elasticsearch.
Elasticsearch admite los siguientes tipos de elementos:
Explicaci¨®n del tipo de elemento admitido:
Tipo de valor de elemento | Tabla de base de datos | Tipo de b¨²squeda el¨¢stica |
Num¨¦rico (sin firmar) | history_uint | uint |
Num¨¦rico (flotante) | history | dbl |
Personaje | history_str | str |
Registro | history_log | log |
Texto | history_text | text |
Borrador del archivo de configuraci¨®n del frontend de Áú»¢¶Ä²© (conf/zabbix.conf.php
) con par¨¢metros a actualizar:
// URL de Elasticsearch (puede ser una cadena si se usa la misma URL para todos los tipos).
$HISTORY['url']= [
'uint' => 'http://localhost:9200',
'text' => 'http://localhost:9200'
];
// Tipos de valores almacenados en Elasticsearch.
$HISTORY['types'] = ['uint', 'text'];
Valores de par¨¢metros de ejemplo para completar el archivo de configuraci¨®n del frontend de Áú»¢¶Ä²© con:
Esta configuraci¨®n obliga a almacenar el historial de los valores tipo Texto
, °ä²¹°ù¨¢³¦³Ù±ð°ù
y Registro
en Elasticsearch.
Tambi¨¦n es necesario hacer que $HISTORY sea global en conf/zabbix.conf.php
para aseg¨²rese de que todo funcione correctamente (consulte conf/zabbix.conf.php.example
para saber c¨®mo hacerlo):
Los dos ¨²ltimos pasos para que todo funcione son instalar Elasticsearch y crear el proceso de mapeo.
Para instalar Elasticsearch, consulte la .
El mapeo es una estructura de datos en Elasticsearch (similar a una tabla en una base de datos). El mapeo para todos los tipos de datos hist¨®ricos est¨¢ disponible aqu¨ª: database/elasticsearch/elasticsearch.map
.
La creaci¨®n de un mapeo es obligatoria. Alguna funcionalidad se romper¨¢ si el mapeo no se crea de acuerdo con las instrucciones.
Para crear una asignaci¨®n para el tipo "text", env¨ªe la siguiente solicitud a Elasticsearch:
curl -X PUT \
http://your-elasticsearch.aqu¨ª:9200/text \
-H 'tipo-contenido:aplicaci¨®n/json' \
-d '{
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"fields": {
"analyzed": {
"index": true,
"type" : "text",
"analyzer": "standard"
}
},
"index": false,
"type": "text"
}
}
}
}'
Se requiere ejecutar una solicitud similar para la creaci¨®n de mapeo de valores hist¨®ricos de"°ä²¹°ù¨¢³¦³Ù±ð°ù" y "Registro" con la correcci¨®n de tipo correspondiente.
Para trabajar con Elasticsearch, consulte la p¨¢gina de requisitos para obtener informaci¨®n adicional.
El limpiador interno no eliminar¨¢ ning¨²n dato de Elasticsearch.
Esta secci¨®n describe los pasos adicionales necesarios para trabajar con tuber¨ªas y nodos procesadores.
Para empezar, debe crear plantillas para ¨ªndices.
El siguiente ejemplo muestra una solicitud para crear una plantilla uint:
curl -X PUT \
http://your-elasticsearch.aqu¨ª:9200/_template/uint_template \
-H 'content-type:application/json' \
-d '{
"index_patterns": [
"uint*"
],
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"type": "long"
}
}
}
}'
Para crear otras plantillas, el usuario debe cambiar la URL (la ¨²ltima parte es el nombre de la plantilla), cambie el campo "index_patterns"
para que coincida con el nombre del ¨ªndice y para establecer un mapeo v¨¢lido, que se puede tomar de database/elasticsearch/elasticsearch.map
.
Por ejemplo, el siguiente comando se puede utilizar para crear una plantilla para ¨ªndice de texto:
curl -X PUT \
http://your-elasticsearch.aqu¨ª:9200/_template/text_template \
-H 'content-type:application/json' \
-d '{
"index_patterns": [
"text*"
],
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"fields": {
"analyzed": {
"index": true,
"type": "text",
"analyzer": "standard"
}
},
"index": false,
"type": "text"
}
}
}
}'
Esto es necesario para permitir que Elasticsearch establezca una asignaci¨®n v¨¢lida para ¨ªndices creados autom¨¢ticamente. Entonces es necesario crear la definici¨®n de la canalizaci¨®n. La canalizaci¨®n es una especie de preprocesamiento de datos antes de poner datos en ¨ªndices. El siguiente comando se puede utilizar para crear una canalizaci¨®n para el ¨ªndice uint:
curl -X PUT \
http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
-H 'content-type:application/json' \
-d '{
"description": "nombramiento diario del ¨ªndice uint",
"processors": [
{
"date_index_name": {
"field": "clock",
"date_formats": [
"UNIX"
],
"index_name_prefix": "uint-",
"date_rounding": "d"
}
}
]
}'
El usuario puede cambiar el par¨¢metro de redondeo ("date_rounding") para establecer un per¨ªodo de rotaci¨®n del ¨ªndice espec¨ªfico. Para crear otras canalizaciones, el usuario debe cambiar la URL (la ¨²ltima parte es el nombre de la canalizaci¨®n) y cambiar el campo "index_name_prefix" para que coincida con el nombre del ¨ªndice.
V¨¦ase tambi¨¦n la .
Adem¨¢s, almacenar datos hist¨®ricos en m¨²ltiples ¨ªndices basados en fechas debe tambi¨¦n ser habilitado en el nuevo par¨¢metro en la configuraci¨®n del servidor Áú»¢¶Ä²©:
### Opci¨®n: HistoryStorageDateIndex
# Habilite el preprocesamiento de valores hist¨®ricos en el almacenamiento hist¨®rico para almacenar valores en diferentes ¨ªndices seg¨²n la fecha.
# 0 - desactivar
# 1 - habilitar
#
# Obligatorio: no
# Por defecto:
# HistoryStorageDateIndex=0
Los siguientes pasos pueden ayudarle a solucionar problemas con la configuraci¨®n de Elasticsearch:
http://localhost:9200/uint
).Si a¨²n tiene problemas con su instalaci¨®n, entonces por favor cree un informe de error con toda la informaci¨®n de esta lista (mapeo, registros de errores, configuraci¨®n, versi¨®n, etc.)