6.27记录
说明:
目前使用得elk版本为8.2.2,kibana、elasticsearch、logstash均为docker部署,连接访问都正常,elasticsearch其他数据正常显示。目前配置为nginx日志收集
解决过程
1、 配置filebeat编码为UTF-8 和GB2312都没解决
2、同时配置logstash编码为UTF-8也没用
logstash配置如下
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5066
#codec => "json"
codec => plain{ charset => "UTF-8" }
}
}
filter {
json {
source => "message"
}
}
output{
elasticsearch {
#elastic地址
hosts => ["https://es01:9200","https://es02:9200","https://es03:9200"]
action => "index"
# 写入到es中的索引
index => "nginx-log-%{+YYYY.MM.dd}"
user => elastic
password => "wzsj121233"
ssl => true
cacert => "/usr/share/logstash/config/cert/ca.crt"
}
}
filebeat配置, 只附上更改过的地方
filebeat.inputs:
- type: log
id: my-filestream-id
enabled: true
paths:
- /usr/local/nginx/logs/*.log
encoding: GB2312
output.logstash:
hosts: ["192.168.251.212:5066"]
目前所遇到的乱码情况
6.28解决记录
调整配置
logstash配置变更如下
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5066
#codec => "json"
#codec => plain{ charset => "GB2312" }
}
}
filter {
json {
source => "message"
}
}
output{
if "nginx-access-log-212" in [tags] {
elasticsearch {
#elastic地址
hosts => ["https://es01:9200","https://es02:9200","https://es03:9200"]
#action => "index"
# 写入到es中的索引
index => "nginx-access-log-212-%{+YYYY.MM.dd}"
user => elastic
password => "wzsj121233"
ssl => true
cacert => "/usr/share/logstash/config/cert/ca.crt"
}
}
if "nginx-error-log-212" in [tags] {
elasticsearch {
#elastic地址
hosts => ["https://es01:9200","https://es02:9200","https://es03:9200"]
#action => "index"
# 写入到es中的索引
index => "nginx-error-log-212-%{+YYYY.MM.dd}"
user => elastic
password => "wzsj121233"
ssl => true
cacert => "/usr/share/logstash/config/cert/ca.crt"
}
}
}
filebeat配置如下
filebeat.inputs:
- type: log
enabled: true
id: my-nginx-access-212-id
paths:
- /usr/local/nginx/logs/access*.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["nginx-access-log-212"]
#encoding: GB2312
- type: log
enabled: true
id: my-nginx-error-212-id
paths:
- /usr/local/nginx/logs/error*.log
tags: ["nginx-error-log-212"]
#encoding: GB2312
output.logstash:
# The Logstash hosts
hosts: ["192.168.251.212:5066"]
发几个问题:
1、es中并没有创建nginx-access-log-212-%{+YYYY.MM.dd} 、nginx-error-log-212-%{+YYYY.MM.dd}这两个索引。
2、filebeat的控制台中并没有输出nginx相关的日志信息
filebeat控制台输出内容如下:
通过这两个信息,我初步怀疑几点:
1、nginx日志没有读取到(通过之前乱码日志的写入,filebeat与logstash的连接肯定没有问题),但是配置看上去没有任何问题(基于网上资料参考配置的,翻阅了很多资料)。
2、之前的乱码日志就是控制台输出的这些,并不是nginx的日志,控制台中的pipeline/client_worker.go、logstash/async.go、log/log.go不知道在哪里, 也没有哪个文件中有配置同步,但它就是传给logstash了
因此,虽然filebeat和logstash控制台都输出内容了,但并没有创建nginx对应的es索引,所以目前来看,filebeat配置还存在问题