千家信息网

ELK系统分析nginx日志

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,ELK系统在安装完成后需要处理相关的日志文件,本文主要对nginx日志文件进行处理并进行可视化操作,来满足日常的业务需求,长话短说,接下来介绍我的环境具体的网络拓扑图如下:具体配置如下:serverO
千家信息网最后更新 2026年11月01日ELK系统分析nginx日志

ELK系统在安装完成后需要处理相关的日志文件,本文主要对nginx日志文件进行处理并进行可视化操作,来满足日常的业务需求,长话短说,接下来介绍我的环境


具体的网络拓扑图如下:


具体配置如下:

serverOSVersionIP备注
logstashCentOS release 6.4 (Final)logstash 2.2.2192.168.180.2logstash客户端用来收集日志
elasticsearchCentOS release 6.4 (Final)elasticsearch 2.2.1192.168.180.3
kibanaCentOS release 6.4 (Final)kibana 4.4.2192.168.180.3


具体步骤如下:

(一)配置nginx服务器日志的格式( log_format)为统一格式:

[root@ittestserver1 local]# vim /usr/local/nginx2/conf/nginx.confhttp {    include       mime.types;    default_type  application/octet-stream;    #include       proxy.conf;    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    access_log  logs/access.log  main;    access_log on;


(二)安装配置logstash:


1, 安装步骤省略具体参考上篇文章

2,配置如下:

[root@ittestserver1 local]# vim /usr/local/logstash/etc/nginx-access0518.conf input {        file {                path => "/usr/local/nginx2/logs/access.log"                type => "nginx-access"                start_position => "beginning"                sincedb_path => "/usr/local/logstash/sincedb"                codec => "json"        }}filter {        if [type] == "nginx-access" {                geoip {                        source => "clientip"                        target => "geoip"                        database => "/usr/local/logstash/etc/GeoLiteCity.dat"                        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]                        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]                }                mutate {                        convert => [ "[geoip][coordinates]", "float"]                }        }}output {        if [type] == "nginx-access" {                elasticsearch {                        hosts => ["192.168.180.3:9200"]                        manage_template => true                        index => "logstash-nginx-access-%{+YYYY-MM}"                }        }}

具体解释如下:

Logstash 分为 Input、Output、Filter、Codec 等多种plugins。
Input:数据的输入源也支持多种插件,如elk官网的beats、file、graphite、http、kafka、redis、exec等等等、、、
Output:数据的输出目的也支持多种插件,如本文的elasticsearch,当然这可能也是最常用的一种输出。以及exec、stdout终端、graphite、http、zabbix、nagios、redmine等等、、、
Filter:使用过滤器根据日志事件的特征,对数据事件进行处理过滤后,在输出。支持grok、date、geoip、mutate、ruby、json、kv、csv、checksum、dns、drop、xml等等、、
Codec:编码插件,改变事件数据的表示方式,它可以作为对输入或输出运行该过滤。和其它产品结合,如rubydebug、graphite、fluent、nmap等等。
具体以上插件的细节可以去官网,介绍的挺详细的。下面说下该篇中的配置文件的含义:

input段:
  file:使用file 作为输入源
  path: 日志的路径,支持/var/log*.log,及[ "/var/log/messages", "/var/log/*.log" ] 格式
  start_position: 从文件的开始读取事件。另外还有end参数

filter段:
 grok:数据结构化转换工具
  match:匹配条件格式,将nginx日志作为message变量,并应用grok条件NGINXACCESS进行转换
 geoip:该过滤器从geoip中匹配ip字段,显示该ip的地理位置
  source:ip来源字段,这里我们选择的是日志文件中的最后一个字段,如果你的是默认的nginx日志,选择第一个字段即可
  target:指定插入的logstash字断目标存储为geoip
  database:geoip数据库的存放路径
  add_field: 增加的字段,坐标经度
  add_field: 增加的字段,坐标纬度
 mutate: 数据的修改、删除、型转换
  convert: 将坐标转为float类型
  convert: http的响应代码字段转换成 int
  convert: http的传输字节转换成int
  replace: 替换一个字段
  remove_field: 移除message 的内容,因为数据已经过滤了一份,这里不必在用到该字段了。不然会相当于存两份
 date: 时间处理,该插件很实用,主要是用你日志文件中事件的事件来对timestamp进行转换,导入老的数据必备!在这里曾让我困惑了很久哦。别再掉坑了
  match:匹配到timestamp字段后,修改格式为dd/MMM/yyyy:HH:mm:ss Z
 mutate:数据修改
  remove_field: 移除timestamp字段。

output段:
 elasticsearch:输出到es中
  host: es的主机ip+端口或者es 的FQDN+端口
  index: 为日志创建索引logstash-nginx-access-*,这里也就是kibana那里添加索引时的名称


3,创建logstash配置文件之后,我们还要去建立grok使用的表达式,因为logstash 的配置文件里定义的使用转换格式语法,先去logstash的安装目录,默认安装位置:/usr/local/logstash/下,在该位置创建一个目录patterns:

[root@ittestserver1 local]# mkdir -pv /usr/local/logstash/patternsNGUSERNAME [a-zA-Z\.\@\-\+_%]+NGUSER %{NGUSERNAME}NGINXACCESS %{IPORHOST:remote_addr} - - \[%{HTTPDATE:time_local}\] "%{WORD:method} %{URIPATHPARAM:request} HTTP/% {NUMBER:httpversion}" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent


4,测试下脚步是否成功并启动该服务,服务启动后会一直刷日志。

[root@ittestserver1 log]# /usr/local/logstash/bin/logstash -t -f /usr/local/logstash/etc/nginx-access0518.conf Configuration OK[root@ittestserver1 log]# /usr/local/logstash/bin/logstash  -f /usr/local/logstash/etc/nginx-access0518.conf nux; Android 5.1.1; R7Plusm Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.9 TBS/036906 Safari/537.36 hsp\" \"-\"", :level=>:error}JSON parse failure. Falling back to plain-text {:error=>#, :data=>"175.155.181.151 - - [12/Jan/2017:01:28:05 +0800] \"GET /resources/p_w_picpaths/m/landing/landingm20161221/header.png HTTP/1.1\" 200 233816 \"https://m.guojinbao.com/landingm.html?s=NDg4MDU2\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143\" \"-\"", :level=>:error}JSON parse failure. Falling back to plain-text {:error=>#, :data=>"223.67.223.215 - - [12/Jan/2017:01:28:05 +0800] \"GET /resources/js/Crypto.js HTTP/1.1\" 200 8703 \"https://m.guojinbao.com/landingm.html?s=MzIxODQ=\" \"Mozilla/5.0 (Linux; Android 5.1.1; R7Plusm Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.9 TBS/036906 Safari/537.36 hsp\" \"-\"", :level=>:error}JSON parse failure. Falling back to plain-text {:error=>#, :data=>"223.67.223.215 - - [12/Jan/2017:01:28:05 +0800] \"GET /resources/p_w_picpaths/m/landing/landingm20161221/btn1.png HTTP/1.1\" 200 10194 \"https://m.guojinbao.com/resources/css/landingm20161221.css\" \"Mozilla/5.0 (Linux; Android 5.1.1; R7Plusm Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.9 TBS/036906



(三)kibana配置

(1)登录192.168.180.3:5601登录kibana


(2),添加一个索引,这个索引的名字就是之前导入的ES中的那个,本文中是logstash-nginx-access-*。

查看索引,目前有三个,设置为加星,即是discover默认突出显示的。

(3)点击discover既可以看到我们所导入的日志数据了,


日志 字段 数据 文件 配置 事件 格式 插件 索引 输出 处理 支持 位置 坐标 多种 服务 输入 条件 步骤 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 山东特亿宝互联网科技有限公司 金诺互联网科技 互联网与科技发展 海南科技产业互联网平台 互联网校园科技培训 互联网科技与管理 互联网科技公司实习生 崇明区互联网教育科技售后服务 开一家科技互联网公司需要多少钱 米聚互联网科技南京有限公司排面 互联网保险科技创业 互联网公司黑科技创始人 恒生互联网科技业指数调整周期 众安科技工业互联网合作 智帮互联网科技公司最近动向 科技互联网公司两年变化 数字互联网科技有限公司 广东猫王互联网科技有限公司电话 利用互联网等科技手段 互联网与科技金融数据 银优互联网科技有限公司 互联网金融科技平台 时间互联网络科技 广州善班互联网科技 宁夏众和广鑫互联网科技有限公司 成都互联网科技公司工作好不好 允成互联网科技有限公司融资 互联网公司高科技产品 武汉亿视互联网科技有限公司
0