前言:
当前朋友们对“elknginxgrok”可能比较着重,我们都需要了解一些“elknginxgrok”的相关文章。那么小编在网上搜集了一些对于“elknginxgrok””的相关资讯,希望你们能喜欢,咱们快快来学习一下吧!前言
之前完成了elk的平台搭建工作,接下来就可以提取日志了。提取日志一般写正则表达式,但是比较麻烦,要偷懒的话,可以使用logstash的内置表达式grok。
grok就是这些filters里最重要的一个插件,下面我就说说它。
Grok提供的常用Patterns说明及举例
大多数Linux使用人员都有过用正则表达式来查询机器中相关文件或文件里内容的经历,在Grok里,我们也是使用正则表达式来识别日志里的相关数据块。
有两种方式来使用正则表达式:
1、直接写正则来匹配
2、用Grok表达式映射正则来匹配
logstash内置grok的安装路径
要学习Grok的默认表达式,我们就要找到它的具体配置路径,路径如下:
linux:
[你的logstash安装路径]/vendor/bundle/jruby/x.x.x/gems/logstash-patterns-core- x.x.x/patterns/
windows:
[你的logstash安装路径]\vendor\bundle\jruby\x.x\gems\logstash-patterns-core-x.x.x\patterns\grok-patterns
常用表达式
USERNAME 或 USER
用户名,由数字、大小写及特殊字符(._-)组成的字符串
比如:1234、Bob、Alex.Wong等
EMAILLOCALPART
电子邮件用户名部分,首位由大小写字母组成,其他位由数字、大小写及特殊字符(_.+-=:)组成的字符串。注意,国内的QQ纯数字邮箱账号是无法匹配的,需要修改正则
比如:stone、Gary_Lu、abc-123等
EMAILADDRESS
电子邮件
比如:stone@abc.com、Gary_Lu@gmail.com、abc-123@163.com等
HTTPDUSER
Apache服务器的用户,可以是EMAILADDRESS或USERNAME
INT
整数,包括0和正负整数
比如:0、-123、43987等
BASE10NUM 或 NUMBER
十进制数字,包括整数和小数
比如:0、18、5.23等
BASE16NUM
十六进制数字,整数
比如:0x0045fa2d、-0x3F8709等
BASE16FLOAT
十六进制数字,整数和小数
WORD
字符串,包括数字和大小写字母
比如:String、3529345、ILoveYou等
NOTSPACE
不带任何空格的字符串
SPACE
空格字符串
QUOTEDSTRING 或 QS
带引号的字符串
比如:"This is an apple"、'What is your name?'等
UUID
标准UUID
比如:550E8400-E29B-11D4-A716-446655440000
MAC
MAC地址,可以是Cisco设备里的MAC地址,也可以是通用或者Windows系统的MAC地址
IP
IP地址,IPv4或IPv6地址
比如:127.0.0.1、FE80:0000:0000:0000:AAAA:0000:00C2:0002等
HOSTNAME
主机名称
IPORHOST
IP或者主机名称
HOSTPORT
主机名(IP)+端口
比如:127.0.0.1:3306、api.stozen.net:8000等
PATH
路径,Unix系统或者Windows系统里的路径格式
比如:/usr/local/nginx/sbin/nginx、c:\windows\system32\clr.exe等
URIPROTO
URI协议
比如:http、ftp等
URIHOST
URI主机
比如:、10.0.0.1:22等
URIPATH
URI路径
比如://、/api.php等
URIPARAM
URI里的GET参数
比如:?a=1&b=2&c=3
URIPATHPARAM
URI路径+GET参数
比如://;b=2&c=3
URI
完整的URI
比如:;b=2&c=3
日期时间表达式
MONTH
月份名称
比如:Jan、January等
MONTHNUM
月份数字
比如:03、9、12等
MONTHDAY
日期数字
比如:03、9、31等
DAY
星期几名称
比如:Mon、Monday等
YEAR
年份数字
HOUR
小时数字
MINUTE
分钟数字
SECOND
秒数字
TIME
时间
比如:00:01:23
DATE_US
美国日期格式
比如:10-15-1982、10/15/1982等
DATE_EU
欧洲日期格式
比如:15-10-1982、15/10/1982、15.10.1982等
ISO8601_TIMEZONE
ISO8601时间格式
比如:+10:23、-1023等
TIMESTAMP_ISO8601
ISO8601时间戳格式
比如:2016-07-03T00:34:06+08:00
DATE
日期,美国日期%{DATE_US}或者欧洲日期%{DATE_EU}
DATESTAMP
完整日期+时间
比如:07-03-2016 00:34:06
HTTPDATE
http默认日期格式
比如:03/Jul/2016:00:36:53 +0800
Log表达式
LOGLEVEL
日志等级
比如:Alert、alert、ALERT、Error等
grok提取日志实战logstash最简单配置,输入什么,就输出什么
1、修改配置文件
vim /usr/local/logstash-6.2.3/config/logstash.conf
注:在vim命令模式下输入:ggdG可以清除文件所有内容!
添加如下内容:
input{
stdin{}
}
output{
stdout{
codec=>rubydebug
}
}
2、重启logstash
/usr/local/logstash-6.2.3/bin/logstash -f /usr/local/logstash-6.2.3/config/logstash.conf
重启成功,在绿色光标处输入相关内容,我这里选取/var/log/messages日志
cat /var/log/messages
输入内容"Oct 20 05:30:01 master-2 systemd: Starting Session 18 of user root.",显示结果:
使用grok提取系统日志
1、字段说明
以字段"192.168.139.98 GET /index.html 1344 1.169"说明:
这里需要提取IP、字段、内容大小、回复包头等,修改内容如下:
input{
stdin{}
}
filter {
grok {
match=> {"message"=>"%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}
}
}
output{
stdout{
codec=>rubydebug
}
}
提取结果如下:
标签: #elknginxgrok