🏳️🌈连接Elasticsearch是要求加载索引模版的。如果你的输出目标不是Elasticsearch,那么你就必须手动加载模版。
在Elasticsearch中,索引模版通常用来定义设置和映射关系,确定域需要如何被数据分析。
Metricbeat建议的索引模版在已经在安装Metricbeat的时候配置好了。如果你使用默认的metricbeat.yml配置文件,那么Metricbeat会自动在成功连接到Elasticsearch之后加载模版。如果模版已经存在,那就不会被覆盖除非你配置了Metricbeat强制覆盖。
配置模版加载
默认情况,如果Metricbeat激活了Elasticsearch作为输出,那么Metricbeat会自动加载推荐的模版文件fields.yml。如果你向使用默认的索引模版,不需要其他额外的配置。否则,你可以修改在metricbeat.yml配置文件的默认配置:
- 加载不同的模版
setup.template.name: "your_template_name"
setup.template.fields: "path/to/fields.yml"
如果模版已存在,除非你配置Metricbeat强制覆盖,否则文件不会做改动。
- 覆盖已存在的模版
setup.template.overwrite: true
- 禁用模版加载
setup.template.enabled: false
如果你禁用自动模版加载,那么你就需要自己手动加载模版
- 重命名索引
ℹ️如果你正在发送事件到一个支持索引生命周期管理的集群,那么请参考 Index lifecycle management (ILM)重命名索引。
默认情况下,当禁用或者不支持索引生命周期管理时,Metricbeat使用时间序列索引。这个索引叫metricbeat-7.x.x-yyyy.MM.dd,这里的yyyy.MM.dd是这个触发索引的事件发生的时间。要用其他命名的话,参考Elasticsearch输出的索引配置选项。你所指定的名字应该包含这个索引的根名称+版本号+日期信息。同时你还需要配置setup.template.name和setup.template.pattern来匹配这个新名字。如下:
output.elasticsearch.index: "customname-%{[agent.version]}-%{+yyyy.MM.dd}"
setup.template.name: "customname"
setup.template.pattern: "customname-*"
⚠️如果索引生命周期管理被启用(通常是默认的),那么setup.template.name和setup.template.pattern会被忽略。
如果你使用预构建Kibana仪表盘,同时设置了setup.dashboards.index选项,如下:
setup.dashboards.index: "customname-*"
参考Elasticsearch index template获取所有配置列表。
手动加载模版
要手动加载模版,运行setup命令。要求已有Elasticsearch
的连接。如果还启用了另一个输出,你需要临时将其禁用,并使用-E参数吧Elasticsearch启用。下面的例子假设Logstash输出已经启用。你可以省略-E参数,如果Elasticsearch输出已经启用。
如果你连接到启用安全性的Elasticsearch集群,确保你已经按照第二步配置Metricbeat所表述的方式配置了credentials。
如果你所运行的Metricbeat没有直连Elasticsearch,参考 Load the template manually (alternate method).
加载模版,使用对应系统的命令:
deb and rpm:
metricbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
mac:
./metricbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
brew:
metricbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
linux:
./metricbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
docker:
docker run docker.elastic.co/beats/metricbeat:7.8.0 setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
win:
用管理员打开 一个PowerShell prompt (右键单击PowerShell 选择以管理员运行).
在PowerShell prompt中, 重定向到你安装Metricbeat的目录, 然后运行:
PS > .\metricbeat.exe setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
强制让Kibana查看新文档
如果你已经用Metricbeat索引数据到Elasticsearch,这些索引可能包含旧文档。当你加载了索引模版之后,你可以在metricbeat-*删除旧文档,一强制Kibana查看新文档。
使用如下命令:
deb and rpm:
curl -XDELETE 'http://localhost:9200/metricbeat-*'
mac:
curl -XDELETE 'http://localhost:9200/metricbeat-*'
linux:
curl -XDELETE 'http://localhost:9200/metricbeat-*'
win:
PS > Invoke-RestMethod -Method Delete "http://localhost:9200/metricbeat-*"
这个命令会删除所有符合模式匹配metricbeat-*的索引。在运行此命令之前,请确认你确实想要删除这些符合模式匹配的索引。
手动加载模版(替代方法)
如果你运行的Metricbeat没有直接连接Elasticsearch,你可以将索引模版到导出到一个文件中,然后将文件移动到具有连接的机器上,然后手动安装模版。
导出索引模版的命令如下:
deb and rpm:
metricbeat export template > metricbeat.template.json
mac:
./metricbeat export template > metricbeat.template.json
brew:
metricbeat export template > metricbeat.template.json
linux:
./metricbeat export template > metricbeat.template.json
win:
PS > .\metricbeat.exe export template --es.version 7.8.0 | Out-File -Encoding UTF8 metricbeat.template.json
加载模版,运行下面这个命令:
deb and rpm:
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/metricbeat-7.8.0 -d@metricbeat.template.json
mac:
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/metricbeat-7.8.0 -d@metricbeat.template.json
linux:
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/metricbeat-7.8.0 -d@metricbeat.template.json
win:
PS > Invoke-RestMethod -Method Put -ContentType "application/json" -InFile metricbeat.template.json -Uri http://localhost:9200/_template/metricbeat-7.8.0
网友评论