Metricbeat WARN 无法索引事件
Metricbeat WARN Cannot index event
我看过一些这样的帖子,但是 none 解决了我的问题,所以:
我按照本教程创建了一个弹性集群:https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html
我已经设置了内置密码,我可以访问elasticsearch
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/
{
"name" : "es01",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "hqrGkTUGR0W2Clsaxp75pQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
我将证书颁发机构复制到主机(我将在其中 运行 metricbeat),如下所示:
sudo -s
mkdir -p /etc/pki/root
docker exec kibana cat /usr/share/elasticsearch/config/certificates/ca/ca.crt > /etc/pki/root/ca.pem
我可以检查证书是否存在:
$ cat /etc/pki/root/ca.pem
-----BEGIN CERTIFICATE-----
<certificate>
-----END CERTIFICATE-----
到目前为止一切顺利,然后,我按照本教程安装了 metricbeat:
https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-installation.html
并在 /etc/metricbeat/metricbeat.yml
处设置以下配置:
setup.kibana:
host: "https://localhost:5601"
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
output.elasticsearch:
hosts: ["https://localhost:9200"]
username: "metricbeat"
password: "<password>"
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
我在 Kibana 中创建的 metricbeat
用户如下:
https://www.elastic.co/guide/en/beats/metricbeat/current/feature-roles.html
基本上,我创建了一个名为 metricbeat_setup
的角色,它具有集群权限 monitor
和 manage_ilm
以及 metricbeat-*
上的索引权限 manage
,然后,我创建了角色为 metricbeat_setup
、kibana_admin
、ingest_admin
、beats_admin
、beats_system
的 metricbeat
用户
我想我的问题可能出在这里,我不太了解必要的权限所以我就矫枉过正了,无论如何,继续...
我 运行 设置 sudo metricbeat setup -e
一切顺利,设置没有错误,然后我用 sudo service metricbeat start
启动它,但是 elasticsearch 什么都没有,当我看sudo service metricbeat status
,我得到多行 WARN Cannot index event
我试图查看 /var/log/metricbeat/
中的日志,但没有发现任何有用的信息,在 docker 中的 elasticsearch 日志中也没有找到有用的信息。
创建metricbeat-*索引并分配分片:
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/_cat/indices/metricbeat-*?pretty
green open metricbeat-7.7.0-2020.05.25-000001 p_0nuiX1S8SARk9QZK01EA 1 1 0 0 566b 283b
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/_cluster/allocation/explain?pretty
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "unable to find any unassigned shards to explain [ClusterAllocationExplainRequest[useAnyUnassignedShard=true,includeYesDecisions?=false]"
}
],
"type" : "illegal_argument_exception",
"reason" : "unable to find any unassigned shards to explain [ClusterAllocationExplainRequest[useAnyUnassignedShard=true,includeYesDecisions?=false]"
},
"status" : 400
}
所以,拜托,我在这里缺少什么?我在日志或帖子中找不到任何相关信息,我在这里看到帖子说这是与磁盘不足有关 space,我有 14G 可用空间,所以我想这不是问题所在。另外,我知道 metricbeat 可以连接到 elasticsearch 和 kibana,因为它能够创建索引和仪表板,我可以在 kibana 中打开仪表板但是没有数据。
我做错了什么?
谢谢
为了能够在索引中写入,用户需要在所需索引中具有权限 create_doc
。
在这种情况下,用户需要对每个名为 metricbeat-*
.
的索引具有 create_doc
的 index
权限
我看过一些这样的帖子,但是 none 解决了我的问题,所以:
我按照本教程创建了一个弹性集群:https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html
我已经设置了内置密码,我可以访问elasticsearch
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/
{
"name" : "es01",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "hqrGkTUGR0W2Clsaxp75pQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
我将证书颁发机构复制到主机(我将在其中 运行 metricbeat),如下所示:
sudo -s
mkdir -p /etc/pki/root
docker exec kibana cat /usr/share/elasticsearch/config/certificates/ca/ca.crt > /etc/pki/root/ca.pem
我可以检查证书是否存在:
$ cat /etc/pki/root/ca.pem
-----BEGIN CERTIFICATE-----
<certificate>
-----END CERTIFICATE-----
到目前为止一切顺利,然后,我按照本教程安装了 metricbeat: https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-installation.html
并在 /etc/metricbeat/metricbeat.yml
处设置以下配置:
setup.kibana:
host: "https://localhost:5601"
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
output.elasticsearch:
hosts: ["https://localhost:9200"]
username: "metricbeat"
password: "<password>"
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
我在 Kibana 中创建的 metricbeat
用户如下:
https://www.elastic.co/guide/en/beats/metricbeat/current/feature-roles.html
基本上,我创建了一个名为 metricbeat_setup
的角色,它具有集群权限 monitor
和 manage_ilm
以及 metricbeat-*
上的索引权限 manage
,然后,我创建了角色为 metricbeat_setup
、kibana_admin
、ingest_admin
、beats_admin
、beats_system
metricbeat
用户
我想我的问题可能出在这里,我不太了解必要的权限所以我就矫枉过正了,无论如何,继续...
我 运行 设置 sudo metricbeat setup -e
一切顺利,设置没有错误,然后我用 sudo service metricbeat start
启动它,但是 elasticsearch 什么都没有,当我看sudo service metricbeat status
,我得到多行 WARN Cannot index event
我试图查看 /var/log/metricbeat/
中的日志,但没有发现任何有用的信息,在 docker 中的 elasticsearch 日志中也没有找到有用的信息。
创建metricbeat-*索引并分配分片:
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/_cat/indices/metricbeat-*?pretty
green open metricbeat-7.7.0-2020.05.25-000001 p_0nuiX1S8SARk9QZK01EA 1 1 0 0 566b 283b
$ curl -k --user elastic:$ELASTIC_PWD https://localhost:9200/_cluster/allocation/explain?pretty
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "unable to find any unassigned shards to explain [ClusterAllocationExplainRequest[useAnyUnassignedShard=true,includeYesDecisions?=false]"
}
],
"type" : "illegal_argument_exception",
"reason" : "unable to find any unassigned shards to explain [ClusterAllocationExplainRequest[useAnyUnassignedShard=true,includeYesDecisions?=false]"
},
"status" : 400
}
所以,拜托,我在这里缺少什么?我在日志或帖子中找不到任何相关信息,我在这里看到帖子说这是与磁盘不足有关 space,我有 14G 可用空间,所以我想这不是问题所在。另外,我知道 metricbeat 可以连接到 elasticsearch 和 kibana,因为它能够创建索引和仪表板,我可以在 kibana 中打开仪表板但是没有数据。
我做错了什么?
谢谢
为了能够在索引中写入,用户需要在所需索引中具有权限 create_doc
。
在这种情况下,用户需要对每个名为 metricbeat-*
.
create_doc
的 index
权限