前言
泪眼迷离,为了实现一个图表功能:nginx的访问ip统计表。小弟磕磕碰碰。摸索了多日。最终此刻成功,特此记录一下。
底部提供了代码下载,以方便测试构建。
原因
原本的日志架构是 filebeat + Elasticsearch+ kibana 。
采集的日志没做处理。难以阅读。
可视化很差,无法使用图表功能统计ip访问。
于是必须修改下日志架构。
Logstash 的grok功能可以实现 对nginx的access日志切割,划分成多个字段,然后再利用kibanan形成图表,增强可视化。
目标结构 filebeat + Logstash +Elasticsearch+ kibana
nginx的日志配置
image.png这里提供下我的参数设置
配置文件位于 /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" $request_time "$upstream_addr" $upstream_response_time '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
以上配置产生的日志如下
172.20.0.1 [29/Apr/2019:07:14:58 +0000] "GET /favicon.ico HTTP/1.1" 200 5558 "http://localhost:84/" 0.000 "-" - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" "-"
logstash 的配置
配置文件为 logstash.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
filter {
if 'nginx-access' in [tags]{
grok {
match =>{
"message" => "^%{IPV4:remote_addr} \[%{HTTPDATE:timestamp}\] \"%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}\" %{INT:status} %{INT:body_bytes_sent} \"%{NOTSPACE:http_referer}\" %{NUMBER:request_time} \"%{IPV4:upstream_addr}:%{POSINT:upstream_port}\" %{NUMBER:upstream_response_time} \"%{DATA:http_user_agent}\" \"%{NOTSPACE:http_x_forwarded_for}\""
}
remove_field => ["message"]
}
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch的服务器地址:9200"]
index => "wwfmac-nginx"
}
}
Nginx的日志必须和logstash的正则匹配。否则无法正常切割。
可以调试的网址。http://grokdebug.herokuapp.com/
image.png最终实现的目标
image.png image.png下载
以上过程只讲了核心。elk的步骤繁多,无法一一截图配置,
这里提供一份docker-compose文件,以供测试复现。
下载地址:
云盘链接:https://pan.baidu.com/s/1kuO3mksD_43BZyXWjhG8NA 密码:89oe
有积分的大哥可以支持一波,csdn地址:
https://download.csdn.net/download/douniwan123654/11153745
解压之后进入文件夹elk
运行
docker-compse up -d
nginx访问地址 127.0.0.1:888
kibana访问地址: 127.0.0.1:5601
默认的索引是wwfmac-nginx
切割出字段后,生成图表非常简单。具体可以参考 https://www.centos.bz/2018/04/%E4%BD%BF%E7%94%A8kibana%E5%88%86%E6%9E%90nginx%E8%AE%BF%E9%97%AE%E6%97%A5%E5%BF%97/
祝你好运。
网友评论