我安装了X-Pack,Elasticsearch和Logstash。Logstash 是向 elasticsearch 报告 X-Pack 监控部分的 alreay。
现在我希望 logstash 通过任何进入管道的节拍到 elasticsearch。
我在这里按照本指南创建了提到的用户和角色。 我还使用此处的信息为具有上述权限的每种节拍类型创建了一个角色,并将角色分配给同一用户(例如,一个用于filebeat-*
)。
我的logstash.conf
如下所示:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
user => "user"
password => "pass-word"
}
file {
path => "C:temp%{[@metadata][beat]}-%{+YYYY.MM.dd}.log"
}
}
我正在创建文件(例如filebeat
),但是没有创建弹性搜索中的索引,并且弹性搜索中也没有出现任何数据。
有人看到配置是否有问题吗?我几个小时以来一直在努力寻找错误/解决方案。
使用上述用户直接发布节拍到elasticsearch(没有Logstash)是有效的(例如使用metricbeat
)。
我在日志中也没有看到奇怪的东西,只是缺少弹性的输出:
07:52:53.807 [[main]>worker0] DEBUG logstash.pipeline - filter received {"event"=>{...}}
07:52:53.807 [[main]>worker0] DEBUG logstash.pipeline - filter received {"event"=>{...}}
07:52:53.807 [[main]>worker0] DEBUG logstash.pipeline - 输出已接收 {"event"=>{...}}
07:52:53.807 [[main]>worker0] DEBUG logstash.pipeline - 输出已接收 {"event"=>{...}}
07:52:53.870 [[main]>worker0] DEBUG logstash.outputs.file - 文件,将事件写入文件。{:filename=>"C:/temp/filebeat-2017.04.11.log"}
07:52:53.870 [[main]>worker0] DEBUG logstash.outputs.file - 文件,将事件写入文件。{:filename=>"C:/temp/filebeat-2017.04.11.log"}
07:52:53.870 [[main]>worker0] INFO logstash.outputs.file - 打开文件 {:p ath=>"C:/temp/filebeat-2017.04.11.log"}07:52:53.870 [[main]>worker0] DEBUG logstash.outputs.file - 启动过时文件清理周期 {:files=>{"C:/temp/filebeat-2017.04.11.log"=>#>}}
07:52:53.870 [[main]>worker0] DEBUG logstash.outputs.file - 找到 0 个过时文件 {:inactive_files=>{}}
谢谢你!
更新:
如果我更改密码,日志中会出现以下错误:
08:22:33.877 [[main]>worker1] ERROR logstash.outputs.elasticsearch - 从服务器获得错误的响应代码,但此代码不被视为可重试。请求将被丢弃 {:code=>401, :response_body=>"{\"error\":{\"root_cause\":[{\"type\":\"security_exception\",\"reason\":\"无法对 REST 请求 [/_bulk]\",\"header\":{\"WWW-Authenticate\":\"Basic realm=\\"security\\" charset=\\"UTF-8\\"\"}}],\"type\":\"security_exception\",\"reason\":\"无法对 REST 请求 [/_bulk]\",\"header\":{\"WWW-Authenticate\":\"Basic realm=\\"security\\" charset=\\"UTF-8\\"\"}},\"status\":401}", :request_body=>"{\"index\":{\"_id\":null,\"_index\">
所以它似乎实际上正在与 elasticsearch 进行通信,但索引没有被创建。不幸的是,我在弹性搜索日志中没有声明。
我自己找到了答案,对于那些遇到类似问题的人:
我的elasticsearch.yml
中有一些关于阻止创建索引的action.auto_create_index
的奇怪设置。
在更改 elasticsearch 的日志级别以debug
此处提到的方式后,这变得可见。
由于不需要这些,我删除了它们,现在一切都按预期工作。