Codec 来自 Coder/decoder
两个单词的首字母缩写,Logstash 不只是一个input | filter | output 的数据流,
而是一个input | decode | filter | encode | output 的数据流,codec 就是用来decode、encode 事件的。
简单说,就是在logstash读入的时候,通过codec编码解析日志为相应格式,从logstash输出的时候,通过codec解码成相应格式。
如果当前的日志是codec的,可以避免使用grok,从而提高开发效率和性能
编辑nginx文件,设置log格式:
log_format json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"host":"$server_addr",'
'"client":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"domain":"$host",'
'"url":"$uri",'
'"status":"$status"}';
access_log logs/access_codec.log json;
Nginx生成kibana浏览器的日志:
server {
listen 80;
server_name hadoop01;
location / {
proxy_pass http://hadoop01:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
vim nginx_codec.conf
input {
file {
path => "/usr/local/nginx/logs/access_codec.log"
codec => "json"
}
}
output{
stdout{codec =>rubydebug}
}
启动nginx:/usr/local/sbin/nginx
启动logstash:bin/logstash -f /usr/local/elk/logstash-5.5.2/conf/template/nginx_codec.conf
此时控制台打印:
到此实现了codec监控nginx日志。