Elasticsearch的支持是实验性的!本节中考虑的配置步骤适用于以下Elasticsearch版本:** 5.0.x - > 6.1.x **。 如果使用早期或更高版本的Elasticsearch,某些功能可能无法按预期工作。
Elasticsearch support is experimental!
Setup procedure considered in this section is applicable to the following Elasticsearch versions: 5.0.x -→ 6.1.x. In case an earlier or later version of Elasticsearch is used, some functionality may not work as intended.
Zabbix最近开始支持通过使用Elasticsearch而不是数据库来存储历史数据。 现在,用户可以在兼容数据库和Elasticsearch之间选择历史数据的存储位置。
Zabbix has recently started to support storage of historical data by means of Elasticsearch instead of a database. Users are now given the possibility to choose the storage place for historical data between a compatible database and Elasticsearch.
正确的设置Zabbix server配置文件和前端配置文件中的参数,以保证所有元素之间的正确通信。 To ensure proper communication between all elements involved make sure server configuration file and frontend configuration file parameters are properly configured.
已经更新参数的Zabbix server配置文件示例如下: Zabbix server configuration file draft with parameters to be updated:
### 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
用于设置Zabbix server配置文件的示例参数值如下: Example parameter values to fill the Zabbix server configuration file with:
此配置文件使Zabbix Server将相应数据库中的数值类型和文本类型的历史数据存储到Elasticsearch中。 This configuration forces Zabbix Server to store history values of numeric types in the corresponding database and textual history data in Elasticsearch.
Elasticsearch支持以下几种监控项类型: Elasticsearch supports the following item types:
支持的监控项类型说明如下: Supported item type explanation:
Item value type | Database table | Elasticsearch type |
Numeric (unsigned) | history_uint | uint |
Numeric (float) | history | dbl |
Character | history_str | str |
Log | history_log | log |
Text | history_text | text |
已经更新参数的Zabbix前端配置文件(conf/zabbix.conf.php
) 示例如下: Zabbix frontend configuration file (conf/zabbix.conf.php
) draft with parameters to be updated:
// Elasticsearch url (can be string if same url is used for all types).
$HISTORY['url'] = [
'uint' => 'http://localhost:9200',
'text' => 'http://localhost:9200'
];
// Value types stored in Elasticsearch.
$HISTORY['types'] = ['uint', 'text'];
用于设置Zabbix前端配置文件的示例参数值如下: Example parameter values to fill the Zabbix frontend configuration file with:
此配置文件将文本、字符、日志类型的历史数据存储到Elasticsearch中。 This configuration forces to store Text
, Character
and Log
history values in Elasticsearch.
还需要在conf / zabbix.conf.php
文件中配置$HISTORY为全局参数,以确保一切正常工作(请参阅conf / zabbix.conf.php.example
以了解如何配置):
It is also required to make $HISTORY global in conf/zabbix.conf.php
to ensure everything is working properly (see conf/zabbix.conf.php.example
for how to do it):
正常配置包括安装Elasticsearch和创建映射两个步骤。 Final two steps of making things work are installing Elasticsearch itself and creating mapping process.
安装Elasticsearch请参考Elasticsearch安装指南
To install Elasticsearch please refer to Elasticsearch installation guide.
映射是Elasticsearch中的数据结构(类似于数据库中的表)。 此处提供了所有历史数据类型的映射:database / elasticsearch / elasticsearch.map
。
Mapping is a data structure in Elasticsearch (similar to a table in a database). Mapping for all history data types is available here: database/elasticsearch/elasticsearch.map
.
必须创建映射。 如果未按照要求创建映射,则某些功能将无法正常使用。
Creating mapping is mandatory. Some functionality will be broken if mapping is not created according to the instruction.
创建text
类型的映射可以发送如下请求到Elasticsearch: To create mapping for text
type send the following request to Elasticsearch:
curl -X PUT \
http://your-elasticsearch.here:9200/text \
-H 'content-type:application/json' \
-d '{
"settings" : {
"index" : {
"number_of_replicas" : 1,
"number_of_shards" : 5
}
},
"mappings" : {
"values" : {
"properties" : {
"itemid" : {
"type" : "long"
},
"clock" : {
"format" : "epoch_second",
"type" : "date"
},
"value" : {
"fields" : {
"analyzed" : {
"index" : true,
"type" : "text",
"analyzer" : "standard"
}
},
"index" : false,
"type" : "text"
}
}
}
}
}'
对于创建“字符”和“日志”类型的历史数据映射,需要执行类似的请求,请求内容需要进行相应的修改。 Similar request is required to be executed for Character
and Log
history values mapping creation with corresponding type correction.
要使用Elasticsearch,请参阅Requirement page以获取更多信息。
To work with Elasticsearch please refer to Requirement page for additional information.
Housekeeper 不会删除任何Elasticsearch中的数据
Housekeeper is not deleting any data from Elasticsearch.
本节介绍使用pipeline和ingest节点所需的其他配置步骤。 This section describes additional steps required to work with pipelines and ingest nodes.
首先必须为索引创建一个模板。创建uint模板的请求示例如下: To begin with, you must create templates for indices. The following example shows a request for creating uint template:
curl -X PUT \
http://your-elasticsearch.here:9200/_template/uint_template \
-H 'content-type:application/json' \
-d '{
"template": "uint*",
"index_patterns": ["uint*"],
"settings" : {
"index" : {
"number_of_replicas" : 1,
"number_of_shards" : 5
}
},
"mappings" : {
"values" : {
"properties" : {
"itemid" : {
"type" : "long"
},
"clock" : {
"format" : "epoch_second",
"type" : "date"
},
"value" : {
"type" : "long"
}
}
}
}
}'
要创建其他模板,用户应更改请求URL(最后一部分是模板名称),更改“template”和“index_patterns”字段以匹配索引名称并设置可从“database / elasticsearch / elasticsearch”中获取的有效映射 。例如,下面的命令能为一个文本索引创建一个模板:
To create other templates, user should change the URL (last part is the name of template), change "template" and "index_patterns" fields to match index name and to set valid mapping that can be taken from database/elasticsearch/elasticsearch.map
. For example, the following command can be used to create a template for text index:
curl -X PUT \
http://your-elasticsearch.here:9200/_template/text_template \
-H 'content-type:application/json' \
-d '{
"template": "text*",
"index_patterns": ["text*"],
"settings" : {
"index" : {
"number_of_replicas" : 1,
"number_of_shards" : 5
}
},
"mappings" : {
"values" : {
"properties" : {
"itemid" : {
"type" : "long"
},
"clock" : {
"format" : "epoch_second",
"type" : "date"
},
"value" : {
"fields" : {
"analyzed" : {
"index" : true,
"type" : "text",
"analyzer" : "standard"
}
},
"index" : false,
"type" : "text"
}
}
}
}
}'
这是允许Elasticsearch为自动创建的索引设置有效的映射所必需做的。 然后需要创建pipeline定义。 在将数据放入索引之前,pipeline能对数据进行多种预处理操作。 以下命令可用于为uint索引创建pipeline:
This is required to allow Elasticsearch to set valid mapping for indices created automatically. Then it is required to create the pipeline definition. Pipeline is some sort of preprocessing of data before putting data in indices. The following command can be used to create pipeline for uint index:
curl -X PUT \
http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
-H 'content-type:application/json' \
-d '{
"description": "daily uint index naming",
"processors": [
{
"date_index_name": {
"field": "clock",
"date_formats": ["UNIX"],
"index_name_prefix": "uint-",
"date_rounding": "d"
}
}
]
}'
用户可以修改参数(“date_rounding”)来设置特定的索引循环周期。 要创建其他pipeline,用户应更改请求URL(最后一部分是pipeline名称)并更改“index_name_prefix”字段以匹配索引名称。
User can change the rounding parameter ("date_rounding") to set a specific index rotation period. To create other pipelines, user should change the URL (last part is the name of pipeline) and change "index_name_prefix" field to match index name.
可以参考 Elasticsearch文档.
See also Elasticsearch documentation.
另外,可以通过Zabbix server配置文件中新加的参数来配置将历史数据存储于基于时间的多个索引。 Additionally, storing history data in multiple date-based indices should also be enabled in the new parameter in Zabbix server configuration:
### Option: HistoryStorageDateIndex
# Enable preprocessing of history values in history storage to store values in different indices based on date.
# 0 - disable
# 1 - enable
#
# Mandatory: no
# Default:
# HistoryStorageDateIndex=0
以下步骤可帮助您解决Elasticsearch的配置问题: The following steps may help you troubleshoot problems with Elasticsearch setup:
http://localhost:9200/uint
)。http://localhost:9200/uint
).如果您仍然遇到配置问题,请创建一个错误报告,其中包含映射,错误日志,配置,版本等信息。 If you are still experiencing problems with your installation then please create a bug report with all the information from this list (mapping, error logs, configuration, version, etc.)