陈奇网络工作室

ELK系统分析nginx日志

网站建设服务器

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

具体网络拓扑图如下:

具体配置如下:

server osversion IP LogstashCentos版本6.4(最终版)Logstash 2 . 2 . 2192 . 168 . 180 . 2 Logstash客户端用于收集日志ElasticSearch版本6.4(最终版)elastic search 2 . 2 . 1192 . 168 . 180 . 3。

基巴纳森托斯版本6.4(最终版)

具体步骤如下:

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

[root @ ittest server 1 local]# vim/usr/local/nginx 2/conf/nginx . conf

http{

includemime.types

default _ type application/octet-stream;

# includeproxy.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 _ logon

(2)安装配置日志:

1.有关安装步骤的详细信息,请参考上一篇文章。

2.配置如下:

[root @ ittest server 1 local]# vim/usr/local/log stash/etc/nginx-access 0518 . conf

输入{

文件{

路径=/usr/local/nginx 2/logs/access . log

type=nginx-access

开始位置=开始

since db _ path=/usr/local/log stash/since db

编解码器=json

}

}

过滤器{

if[type]==nginx-access{

geoip{

源=客户端

target=geoip

database=/usr/local/log stash/etc/geolitecity . dat

add _ field=[[地理位置][坐标],% {[地理位置][经度]}]

add _ field=[[地理位置][坐标],% {[地理位置][纬度]}]

}

变异

convert=[[GeoIP][坐标],浮点]

}

}

}

输出{

if[type]==nginx-access{

弹性搜索{

主机=[192.168.180.3:9200]

manager _ template=true

index=log stash-nginx-access-% { YYYY-MM }

}

}

}

具体解释如下:

Logstash分为输入、输出、过滤器、编解码器等插件。

输入:数据的输入来源也支持各种插件,如beats、file、graphite、http、kafka、Redis、exec等。来自麋鹿官网。

输出:数据的输出目的也支持各种插件,比如本文中的elasticsearch,这可能是最常用的输出。以及exec、stdout终端、graphite、http、zabbix、nagios、redmine等。

过滤:根据日志事件的特点,使用过滤器对数据事件进行处理和过滤,然后输出。支持grok,date,geoip,mutate,ruby,json,kv,csv,checksum,dns,drop,xml等。

编解码器:改变事件数据表示的编码插件,它可以作为输入或输出运行过滤。与其他产品结合,如rubydebug、graphite、fluent、nmap等。

以上插件详情可以去官网,介绍的还挺详细的。让我们来谈谈本文中配置文件的含义:

输入段:

文件:使用文件作为输入源。

Path:日志的路径,支持/var/log*。日志和[/var/log/messages,/var/log/*。日志]格式。

Start_position:从文件的开头读取事件。还有end参数。

过滤器段:

Grok:数据结构化转换工具

Match:匹配条件格式,以nginx log为消息变量,应用grok条件NGINXACCESS进行转换。

Geoip:此过滤器匹配geoip中的ip字段,并显示ip的地理位置。

Source: IP source字段,这里我们选择日志文件中的最后一个字段。如果您的日志是默认的nginx日志,只需选择第一个字段。

Target:指定将插入的logstash断词目标存储为geoip。

数据库:geoip数据库的存储路径。

Add_field:添加的字段,坐标经度。

Add_field:添加的字段,坐标纬度。

Mutate:数据修改、删除和类型转换。

转换:将坐标转换为浮点类型。

convert:http的响应代码字段转换为int。

convert:http的传输字节转换成int。

替换:替换一个字段。

Remove_field:删除消息的内容,因为数据已经被过滤了,所以这里不需要使用这个字段。否则就相当于省了两份。

日期:时间处理,该插件很实用,主要是用你日志文件中事件的事件来对时间戳进行转换,导入老的数据必备!在这里曾让我困惑了很久哦。别再掉坑了

匹配:匹配到时间戳字段后,修改格式为日/月/年:时:分:秒Z

变异:数据修改

移除_字段:移除时间戳字段。

输出段:

弹性搜索:输出到萨尔瓦多中

主持人:es的主机ip+端口或者萨尔瓦多的FQDN+端口

索引:为日志创建索引logstash-nginx-access-*,这里也就是基巴纳那里添加索引时的名称

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

[root @ ittest server 1 local]# mkdir-PV/usr/local/log stash/patterns

NGUSERNAME[a-zA-Z\\\\ .\\\\@\\\\-\\\\ _%]

NGUSER%{NGUSERNAME}

nginx access % { IPORHOST:remote _ addr }-\ \ \ \[% { HTTP date:time _ local } \ \ \ \]% { WORD:method } % { URIPATHPARAM:request } HTTP/% { NUMBER:HTTP version } % { INT:status } % { INT:body _ bytes _ sent } % { QS:HTTP _ referer } % { QS:HTTP _ user _ agent

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

[root @ ittest server 1 log]#/usr/local/log stash/bin/log stash-t-f/usr/local/log stash/etc/nginx-access 0518。会议

配置确定

[root @ ittest server 1 log]#/usr/local/log stash/bin/log stash-f/usr/local/log stash/etc/nginx-access 0518。会议

nuxAndroid 5号。1 .1;r7 plusmbuild/lmy 47v)apple WebKit/537.36(KHTML,likeGecko)版本/4.0铬/37。0 .0 .0 mobilemqqbrowser/6.9 TBS/036906 safari/537.36 HSP \ \ \ \ \ \ \ \-\ \,level=:error}

JSONparsefailure .fallingbacktoplain-text {:error=# log stash:Json:解析器错误:意外字符(\ \ \ '\ \ \ '(代码46)):expectedspaceseparatingrootlevelvalues

在[来源:【B @ 2 B2 CEA 68;行:1,列:9],data=175。155 .181 .151-[12/Jan/2017:01:28:05 0800]\ \ GET/resources/p _ w _ pic paths/m/landing/landing m 2016 12 21/header。pnghttp/1.1 \ \ \ \ 2002333816 \ \ \ \ https://m。国金宝。com/landing m . html?s=ndg 4 mdu 2 \ \ \ \ \ \ Mozilla/5.0(iPhone;cpuiphoneos 9 _ 1 likemacosx)苹果WebKit/601。1 .46(KHTML,像壁虎一样)Mobile/13b 143 \ \ \ \ \ \ \ \-\ \,level=:error}

JSONparsefailure .fallingbacktoplain-text {:error=# log stash:Json:解析器错误:意外字符(\ \ \ '\ \ \ '(代码46)):expectedspaceseparatingrootlevelvalues

在【来源:【B @ 7788367 a;行:1,列:8],data=223。67 .223 .215-[12/Jan/2017:01:28:05 0800]\ \ GET/resources/js/crypto。js http/1.1 \ \ \ \ 2008 703 \ \ \ \ https://m。国金宝。com/landing m . html?s=MzIxODQ=\ \ \ \ \ \ \ \ Mozilla/5.0(Linux;安卓5。1 .1;r7 plusmbuild/lmy 47v)apple WebKit/537.36(KHTML,likeGecko)版本/4.0铬/37。0 .0 .0 mobilemqqbrowser/6.9 TBS/036906 safari/537.36 HSP \ \ \ \ \ \ \ \-\ \,level=:error}

JSONparsefailure .fallingbacktoplain-text {:error=# log stash:Json:解析器错误:意外字符(\ \ \ '\ \ \ '(代码46)):expectedspaceseparatingrootlevelvalues

在[来源:[B @ 6297 d46d;行:1,列:8],data=223。67 .223 .215-[12/Jan/2017:01:28:05 0800]\ \ \ GET/resources/p _ w _ pic paths/m/landing/landing m 2016 12 21/Bt n1。pnghttp/1.1 \ \ \ \ 2001 01 94 \ \ \ \ https://m。国金宝。com/resources/CSS/landing 2011 Android 5。1 .1;r7 plusmbuild/lmy 47v)apple WebKit/537.36(KHTML,likeGecko)版本/4.0铬/37。0 .0 .0 mobilemqqbrowser/6.9 TBS/036906

(三)基巴纳配置

(1)登录192.168.180.3:5601登录基巴纳

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

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

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

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3