热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql大数据日志_使用Logstash收集MySQL日志

一处理MySQL慢查询日志和错误日志MySQL的慢查询日志有两种记录方式,文件和表。MySQL的慢查询日志如下:usrlocalmysqlbinmysq

一 处理MySQL慢查询日志和错误日志

MySQL的慢查询日志有两种记录方式,文件和表。

MySQL的慢查询日志如下:

/usr/local/mysql/bin/mysqld, Version: 5.5.21-log (Source distribution). started with:

Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock

Time                 Id Command    Argument

# Time: 150422 12:08:32

# [email protected]: root[root] @ localhost []

# Query_time: 0.000496  Lock_time: 0.000329 Rows_sent: 1  Rows_examined: 1

use zabbix;

SET timestamp=1429675712;

SELECT dv.mandatory,dv.optional FROM dbversion dv;

# [email protected]: root[root] @ localhost []

# Query_time: 0.001546  Lock_time: 0.000320 Rows_sent: 0  Rows_examined: 0

SET timestamp=1429675712;

SELECT n.* FROM nodes n WHERE n.nodetype=1 ORDER BY n.nodeid;

# [email protected]: root[root] @ localhost []

# Query_time: 0.000486  Lock_time: 0.000364 Rows_sent: 1  Rows_examined: 1

SET timestamp=1429675712;

select t.globalmacroid,t.macro,t.value from globalmacro t order by t.globalmacroid;

# [email protected]: root[root] @ localhost []

# Query_time: 0.000887  Lock_time: 0.000349 Rows_sent: 16  Rows_examined: 130

SET timestamp=1429675712;

select t.interfaceid,t.hostid,t.main,t.type,t.useip,t.ip,t.dns,t.port from interface t where (t.hostid between 10151 and

10158 or t.hostid between 10826 and 10831 or t.hostid in (10001,10050,10060,10065,10068,10070,10094,10100,10101,10102,101

04,10119,10140,10201,10203,10291,10728,10734,10820,10821,10823,10824,10836,10839,10840,10841,10842,10869)) order by t.int

erfaceid;

在配置文件中设置:

slow_query_log_file=/data/app_data/mysql/mysql-slow.log

slow_query_log=1

long_query_time=3

#log_queries_not_using_indexes=1

log_error=/data/app_data/mysql/mysql-error.log

slow_query_log_file指定慢查询记录日志

slow_query_log开启慢查询记录日志功能

long_query_time指定SQL语句最大执行时间,超过这个时间将被记录

log_queries_not_using_indexes  记录那些没有使用索引的查询语句,但是会有很多执行时间比较快但是没有索引的语句记录

二 编写Logstash配置文件

input {

file {

#  slow log output to a file

type => "mysql_slow_file"

path => "/data/app_data/mysql/mysql-slow.log"

sincedb_path => "/dev/null"

codec => multiline{

pattern => "^# [email protected]:"

negate => true

what => previous

}

}

file {

# slow log output to mysql.slow_log

type => "mysql_slow_table"

path => "/data/app_data/mysql/mysql-slow.csv*"

sincedb_path => "/dev/null"

}

file {

type => "mysql_error"

path => "/data/app_data/mysql/mysql-error.log"

sincedb_path => "/dev/null"

}

}

filter {

if [type] == "mysql_slow_file" {

grok {

match => [ "message", "^# [email protected]: %{USER:mysql.user}(?:\[[^\]]+\])?\s+@\s+%{HOST:mysql.host}?\s+\[%{IP:mysql.ip}?\]" ]

}

grok {

match => [ "message", "^# Query_time: %{NUMBER:mysql.query_time:float}\s+Lock_time: %{NUMBER:mysql.lock_time:float} Rows_sent: %{NUMBER:mysql.rows_sent:int} \s*Rows_examined: %{NUMBER:mysql.rows_examined:int}"]

}

grok {

match => [ "message", "^SET timestamp=%{NUMBER:timestamp};" ]

}

date {

match => [ "timestamp", "UNIX" ]

}

mutate {

remove_field => "timestamp"

}

}

if [type] == "mysql_slow_table" {

mutate { gsub => [ "message", '\\"', '""' ] }

csv {

columns => [ "start_time", "user_host", "query_time", "lock_time",

"rows_sent", "rows_examined", "db", "last_insert_id",

"insert_id", "server_id", "sql_text" ]

}

mutate { convert => [ "rows_sent", "integer" ] }

mutate { convert => [ "rows_examined", "integer" ] }

mutate { convert => [ "last_insert_id", "integer" ] }

mutate { convert => [ "insert_id", "integer" ] }

mutate { convert => [ "server_id", "integer" ] }

date {

match => [ "start_time", "YYYY-MM-DD HH:mm:ss" ]

remove_field => [ "start_time" ]

}

ruby { code => "event['query_time'] = event['query_time'] ? event['query_time'].split(':').inject(0){|a, m| a = a * 60 + m.to_i} : 0" }

ruby { code => "event['lock_time'] = event['lock_time'] ? event['lock_time'].split(':').inject(0){|a, m| a = a * 60 + m.to_i} : 0" }

mutate { remove_field => [ "message" ] }

}

if [type] == "mysql_error" {

mutate {

add_tag => ["zabbix-sender"]

add_field => [

"zabbix_host","%{host}",

"zabbix_item","mysql.error"

#                "send_field","%{message}"

]

}

}

}

output {

stdout {

codec => "rubydebug"

}

zabbix {

tags => "zabbix-sender"

host => "xxxxxxx"

port => "10051"

zabbix_sender => "/usr/local/zabbix/bin/zabbix_sender"

}

redis {

host => "xxxxxxx"

data_type => "list"

key => "logstash"

}

}

最后根据情况设置Kibana的图表,添加Zabbix监控报警

参考文档:

http://www.phase2technology.com/blog/adding-mysql-slow-query-logs-to-logstash/

https://gist.github.com/mjpowersjr/740a9583e9ec8b49e0a3

http://gurutek.biz/mysql-slow-query-logging-to-table/



推荐阅读
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 在将Web服务器和MySQL服务器分离的情况下,是否需要在Web服务器上安装MySQL?如果安装了MySQL,如何解决PHP连接MySQL服务器时出现的连接失败问题? ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。netstat -anlp | grep mysqltcp 0&am ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 1.创建目录mkdir-phomerocketmqnamesvr1data&&mkdir-phomerocketmqnamesvr1log&&mkdir-phomerocketm ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 数据库多表联合查询:内连接与外连接详解
    在数据库的多表查询中,内连接和外连接是两种常用的技术手段。内连接用于检索多个表中相互匹配的记录,即只有当两个表中的记录满足特定的连接条件时,这些记录才会被包含在查询结果中。相比之下,外连接则不仅返回匹配的记录,还可以选择性地返回不匹配的记录,具体取决于左外连接、右外连接或全外连接的选择。本文将详细解析这两种连接方式的使用场景及其语法结构,帮助读者更好地理解和应用多表查询技术。 ... [详细]
author-avatar
夏天电艹热毯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有