网站建设服务器
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