文档章节

Logstash收集单机多个MySQL慢查询日志

l
 lics_me
发布于 2017/06/07 19:00
字数 493
阅读 35
收藏 0
input {
	file {
		path => "/data/order-slave-slow.log"
		type => "mysql-slow-log"
		start_position => "beginning"
		codec => multiline {
			pattern => "^# User@Host:"
			negate => true
			what => previous
		}
	}
	file {
		path => "/data/other-slave-slow.log"
		type => "mysql-slow-log"
		start_position => "beginning"
		codec => multiline {
			pattern => "^# User@Host:"
			negate => true
			what => previous
		}
	}
	file {
		path => "/data/order-master-slow.log"
		type => "mysql-slow-log"
		start_position => "beginning"
		codec => multiline {
			pattern => "^# User@Host:"
			negate => true
			what => previous
		}
	}
	file {
		path => "/data/other-master-slow.log"
		type => "mysql-slow-log"
		start_position => "beginning"
		codec => multiline {
			pattern => "^# User@Host:"
			negate => true
			what => previous
		}
	}
}
filter {
	if [path] =~ "order-slave-slow" { //根据文件内容不同,增加不同的字段
		grok {
			match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?<clientip>\S*) )?\[(?:%{IPV4:clientip})?\]\s+Id:\s+%{NUMBER:row_id:int}\n#\s+Query_time:\s+%{NUMBER:Query_time:float}\s+Lock_time:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:Row_sent:int}\s+Rows_examined:\s+%{NUMBER:Rows_examined:int}\n\s*(?:use %{DATA:database};\s*\n)?SET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<sql>(?<action>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$" }
			remove_field => [ "message" ]
		}
		mutate {
		    replace => [ "host" , "%{host}" ]
			add_field => [ "nsCode", "%{nsCode}" ]
			add_field => [ "envCode", "%{envCode}" ]
			add_field => [ "mysqlType", "%{mysqlType}" ]
			gsub => [ "sql", "\n# Time: \d+\s+\d+:\d+:\d+", "" ]
		}
	}
	if [path] =~ "other-slave-slow" {
		grok {
			match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?<clientip>\S*) )?\[(?:%{IPV4:clientip})?\]\s+Id:\s+%{NUMBER:row_id:int}\n#\s+Query_time:\s+%{NUMBER:Query_time:float}\s+Lock_time:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:Row_sent:int}\s+Rows_examined:\s+%{NUMBER:Rows_examined:int}\n\s*(?:use %{DATA:database};\s*\n)?SET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<sql>(?<action>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$" }
			remove_field => [ "message" ]
		}
		mutate {
			replace => [ "host" , "%{host}" ]
			add_field => [ "nsCode", "%{nsCode}" ]
			add_field => [ "envCode", "%{envCode}" ]
			add_field => [ "mysqlType", "%{mysqlType}" ]
			gsub => [ "sql", "\n# Time: \d+\s+\d+:\d+:\d+", "" ]
		}
	}
	if [path] =~ "order-master-slow" {
		grok {
			match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?<clientip>\S*) )?\[(?:%{IPV4:clientip})?\]\s+Id:\s+%{NUMBER:row_id:int}\n#\s+Query_time:\s+%{NUMBER:Query_time:float}\s+Lock_time:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:Row_sent:int}\s+Rows_examined:\s+%{NUMBER:Rows_examined:int}\n\s*(?:use %{DATA:database};\s*\n)?SET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<sql>(?<action>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$" }
			remove_field => [ "message" ]
		}
		mutate {
			replace => [ "host" , "%{host}" ]
			add_field => [ "nsCode", "%{nsCode}" ]
			add_field => [ "envCode", "%{envCode}" ]
			add_field => [ "mysqlType", "%{mysqlType}" ]
			gsub => [ "sql", "\n# Time: \d+\s+\d+:\d+:\d+", "" ]
		}
	}
	if [path] =~ "other-master-slow" {
		grok {
			match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?<clientip>\S*) )?\[(?:%{IPV4:clientip})?\]\s+Id:\s+%{NUMBER:row_id:int}\n#\s+Query_time:\s+%{NUMBER:Query_time:float}\s+Lock_time:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:Row_sent:int}\s+Rows_examined:\s+%{NUMBER:Rows_examined:int}\n\s*(?:use %{DATA:database};\s*\n)?SET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<sql>(?<action>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$" }
			remove_field => [ "message" ]
		}
		mutate {
			replace => [ "host" , "%{host}" ]
			add_field => [ "nsCode", "%{nsCode}" ]
			add_field => [ "envCode", "%{envCode}" ]
			add_field => [ "mysqlType", "%{mysqlType}" ]
			gsub => [ "sql", "\n# Time: \d+\s+\d+:\d+:\d+", "" ]
		}
	}
}
output {
	if [type] == "mysql-slow-log" {
		redis {
			host => "%{ES_SEVER}"
			data_type => "list"
			key => "mysql-slow-log"
		}
	}
}

 

© 著作权归作者所有

l
粉丝 0
博文 12
码字总数 2955
作品 0
浦东
私信 提问
logstash推送mysql慢查询日志

本文将将介绍通过logstash用来收集mysql的慢查询日志,然后推送给elasticsearch,并创建自定义的索引,最终通过kibana进行web展示。 环境介绍: 操作系统版本:centos6.6 64bit Mysql版本: ...

ylw6006
2015/12/03
0
0
利用filebeat推送mysql慢查询日志

介绍通过利用filebeat来收集mysql的慢查询日志,logstash解析后推送到elasticsearch,并创建自定义的索引,最终通过kibana进行web展示。 环境介绍: 操作系统版本:CentOS Linux release 7....

arezone
2017/04/21
0
0
简单使用packetbeat

在前面两篇文章中记录了使用logstash来收集mysql的慢查询日志,然后通过kibana以web的方式展示出来,但在生产环境中,需求会更复杂一些,而且通过logstash写正则,实在是个费时费劲的事。例如...

ylw6006
2015/12/14
0
0
logstash日志系统搭建

本文将介绍如果使用logstash,elasticsearch,kibana搭建一个日志分析系统。Logstash支持的日志类型非常的广泛,支持nginx,postfix.windows系统日志,java日志以及mysql慢查询日志,Docker日...

ylw6006
2015/12/02
0
0
ELK 系统在中小企业从0到1的落地实践

ELK 简介 ELK 是一般被称作日志分析系统,是三款开源软件的简称。通常在业务服务上线后我们会部署一套 ELK 系统,方便我们通过图形化界面直接查找日志,快速找到问题源并帮助解决问题。 Elas...

wang123459
2018/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《生活的难题》的读后感3600字范文

《生活的难题》的读后感3600字范文: 假如我们对丑的事物也能够像对待美的事物那般抱持一种开放、接纳的心态,拥有相同的感受力,那么我们便会发现它们都是充满意义的,而这种认识会使生活变...

原创小博客
15分钟前
1
0
Linux learn(四)

7. Linux磁盘与文件系统管理 文件系统通常会将数据放在不同的区块,权限与属性放置到inode中,至于实际数据则放到datab lock区块中,另外,还有一个超级区块(superblock)会记录整个文件系统...

lazy~
23分钟前
1
0
微信公众号开发(四)

微信公众号开发时常需要一个用户授权绑定的过程。关于微信公众号的用户绑定,一般有如下两种实现方式: (1)通过发送短信验证码的方式; (2)使用用户登录时,向后端传递openid的方式。 使...

织梦之魂
今天
3
0
设计模式-工厂模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端...

HOT_POT
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部