这里直接描述filebeat+logstash采集nginx日志配置,语法介绍小。
nxinx输出日志可以修改,内置一些宏可直接使用,具体参考官网
在nginx.conf的http模块下添加
log_format json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
在具体的server模块下添加
access_log logs/access_json.log json;
这里的json是上面的日志输出格式.
修改后access_json.log每行输出日志是如下json格式
{ "@timestamp": "2019-03-06T10:10:24+08:00", "time": "2019-03-06T10:10:24+08:00", "remote_addr": "192.168.2.57", "remote_user": "-", "body_bytes_sent": "4912", "request_time": "0.250", "status": "200", "host": "192.168.1.243", "request": "GET /api/projects/templates/folders HTTP/1.1", "request_method": "GET", "uri": "/api/projects/templates/folders", "http_referrer": "http://192.168.1.243:85/", "body_bytes_sent":"4912", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" }
修改filebeat.yml配置文件,在filebeat.inputs添加如下:
- type: log
enabled: true
paths:
- D:\soft\nginx\nginx-1.15.2\logs\access_json.log
json.keys_under_root: true
json.overwrite_keys: true
fields:
appname: nginx_access
input{
beats {
port => 515
type=>"beatss"
}
}
output{
if [fields][appname] == "nginx_access"{
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "nginx-access-%{+YYYY.MM.dd}"
}
}
}
filebeat自带一些常用应用的模块,位于modules.d目录,带disabled后缀的表示不可使用,去掉就表示或使用。
使用模块的情况下,数据是直接传递给elasticsearch。
请参考官方文档,这里简单记录下
elasticsearch安装插件
sudo bin/elasticsearch-plugin install ingest-geoip
sudo bin/elasticsearch-plugin install ingest-user-agent
安装完后重启
修改filebeats.yml,配置elasticsearch和kibana
output.elasticsearch:
hosts: ["myEShost:9200"]
setup.kibana:
host: "mykibanahost:5601"
执行命令(等于于把modules.d/nginx.yml.disabled后缀disabled去掉)
filebeat.exe modules enable nginx
列出所有模块状态:filebeat modules list
修改nginx.yml
- module: nginx
access:
enabled: true
var.paths: ["D:\\soft\\nginx\\nginx-1.15.2\\logs\\access.log"]
error:
enabled: true
var.paths: ["D:\\soft\\nginx\\nginx-1.15.2\\logs\\error.log"]
注意windows系统里使用\
启动:filebeat -e
在elasticsearch里会自动创建一个filebeat+filebeat版本号+当前日期的index