ELK logstash 处理MySQL慢查询日志

在生产环境下,logstash 经常会遇到处理多种格式的日志,不同的日志格式,解析方法不同。下面来说说logstash处理多行日志的例子,对MySQL慢查询日志进行分析,这个经常遇到过,网络上疑问也很多。

MySQL慢查询日志格式如下:

 
1
2
3
4
5
# User@Host: ttlsa[ttlsa] @  [10.4.10.12]  Id: 69641319
# Query_time: 0.000148  Lock_time: 0.000023 Rows_sent: 0  Rows_examined: 202
;
;
# Time: 160229 11:46:37

filebeat配置

我这里是使用filebeat 1.1.1版本的,之前版本没有multiline配置项,具体方法看后面那种。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
:
:
-
:
log
mysqlslowlog
log
:
true
after
registry
:
:
]
:
:
:

logstash配置

1. input段配置

 
1
2
3
4
5
6
7
# vi /etc/logstash/conf.d/01-beats-input.conf 
{
{
5046
}
}

2. filter 段配置

 
1
2
3
4
5
6
7
8
9
10
11
12
# vi /etc/logstash/conf.d/16-mysqlslowlog.log
{
{
{
}
}
{
]
]
}
}
}

关键之重是grok正则的配置。

3. output段配置

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# vi /etc/logstash/conf.d/30-beats-output.conf
{
{
}
}
 
{
{
]
true
false
true
}
}
}

标准输出结果截图

ELK logstash 处理MySQL慢查询日志

elasticsearch结果截图

ELK logstash 处理MySQL慢查询日志

ELK logstash 处理MySQL慢查询日志

如果是使用filebeat1.1.1之前的版本,配置如下:

1. filebeat配置

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
:
:
-
:
log
mysqlslowlog
log
registry
:
:
]
:
:
:

2. logstash input段配置

 
1
2
3
4
5
6
7
8
9
10
11
{
{
5046
{
true
previous
}
}
}

其它配置不变。

如有疑问跟帖,或者加群沟通。