mysql日志监控 zabbix_zabbix监控mysql+报警

做完这一步后需要做的就是,将这个监控命令添加到Zabbix Agent中,并与一个Key对应,这样Zabbox Server就能通过这个Key获取MySQL的状态了。我们使用mysql.ping作为MySQL状态的Key。

首先在去除/etc/zabbix/zabbix-agentd.conf中 包含子配置文件路径的注释,并修改

Include=/etc/zabbix/zabbix-agentd.conf.d/ (这里根据自己情况取名就行,别忘了创建这个目录)

其次,在etc/zabbix/zabbix_agentd.conf.d/目录下创建userparameter_mysql.conf文件。在文件中添加如下命令:

linux:/etc/zabbix/zabbix-agentd.conf.d # cat userparameter_mysql.conf

UserParameter=mysql.ping,mysqladmin -uzabbix -p'123456' -h127.0.0.1 ping | grep -c alive

这个命令中”UserParameter”表示这是一个用户自定义的脚本;“=”号后是脚本的内容;“mysql.ping”是Key,“,”号后的命令会在Zabbix Server向Agent发起获取“mysql.ping”这个key的请求时被调用,并将返回值返回给Server。

保存并退出后可以使用下面的命令测试是否正常工作。

linux:/etc/zabbix # /usr/sbin/zabbix-agentd -t mysql.ping -c /etc/zabbix/zabbix-agentd.conf.d/userparameter_mysql.conf   (正常工作)

mysql.ping [t|1]

这里zabbix_agentd使用方法可参考:

同时,在Server端也可以使用使用zabbix_get命令来测试从Server端获取指定的Client端的数据,如下:

[root@Zabbixserver alertscripts]# zabbix_get -s192.168.2.6 -p 10050 -k mysql.ping1

这里如果操作是跟我一样,但你是有错误的

可能跟你安装版本不统一有问题。

也可以参考官网方法:

然后下载安装MySQL监控的模板  (我这里使用脚本监控+zabbix自带MySQL模板)

我这里使用的是zabbix 自带模板 Template App MySQL

创建主机 192.168.2.6

关联模板

创建监控项

创建图形

查看监控图像

设置报警,创建触发器,动作(当STATUS=0时,报警)

进行测试

停掉数据库(测试环境)

linux:~ # /etc/init.d/mysql stop

查看邮件

邮件提示我数据库STATUS=0 也就是down了

恢复数据库

linux:~ # /etc/init.d/mysql start

邮件提示我数据库STATUS=1也就是UP了

zabbix监控mysql性能

通过获取mysql状态值将这些状态值传递给服务器并绘制成图片,这样可以观察mysql的工作情况,通常需要获得状态变量有以下

Com_update:mysql执行的更新个数

Com_select:mysql执行的查询个数

Com_insert:mysql执行插入的个数

Com_delete:执行删除的个数

Com_rollback:执行回滚的操作个数

Bytes_received:接受的字节数

Bytes_sent:发送的字节数

Slow_queries:慢查询语句的个数

监控mysql脚本(chk_mysql.sh 在客户端编写)

linux:/etc/zabbix # cat chk_mysql.sh

#!/bin/bash

#-------------------------------------------------------------------------------# FileName: check_mysql.sh

# Revision:1.0#-------------------------------------------------------------------------------# Copyright:

# License: GPL

# 用户名

MYSQL_USER='zabbix'# 密码

MYSQL_PWD='123456'# 主机地址/IP

MYSQL_HOST='127.0.0.1'# 端口

MYSQL_PORT='3306'# 数据连接

MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"# 参数是否正确if [ $# -ne "1"];then

echo"arg error!"fi

# 获取数据case $1 inUptime)

result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`

echo $result

;;

Com_update)

result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`

echo $result

;;

Slow_queries)

result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`

echo $result

;;

Com_select)

result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`

echo $result

;;

Com_rollback)

result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`

echo $result

;;

Questions)

result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`

echo $result

;;

Com_insert)

result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`

echo $result

;;

Com_delete)

result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`

echo $result

;;

Com_commit)

result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`

echo $result

;;

Bytes_sent)

result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`

echo $result

;;

Bytes_received)

result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`

echo $result

;;

Com_begin)

result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`

echo $result

;;*)

echo"Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)";;

esac

重启zabbix客户端

linux:/etc/zabbix # /etc/init.d/zabbix-agentd restart

在userparameter_mysql.conf增加自定义key

linux:/etc/zabbix # cat zabbix-agentd.conf.d/userparameter_mysql.conf

UserParameter=mysql.ping,mysqladmin -uzabbix -p'123456' -h127.0.0.1 ping | grep -c alive

UserParameter=mysql.version,mysql -V

UserParameter=mysql.status[*],/etc/zabbix/chk_mysql.sh $1

在zabbix服务器端测试

[root@Zabbixserver alertscripts]# zabbix_get -s 192.168.2.6 -p10050 -k mysql.status[Com_insert]121354[root@Zabbixserver alertscripts]# zabbix_get-s 192.168.2.6 -p10050 -k mysql.status[Uptime]62602

在zabbix客户端测试是否能获取到信息

linux:/etc/zabbix/zabbix-agentd.conf.d # zabbix-agentd -tmysql.status[Uptime] -c /etc/zabbix/zabbix-agentd.conf.d/userparameter_mysql.conf

mysql.status[Uptime] [t|62325]

创建图形(步骤就不演示了)

查看图形

zabbix配置文件详解

zabbix的配置文件一般有三种:

zabbixserver的配置文件zabbix_server.conf

zabbixproxy的配置文件zabbix_proxy.conf

zabbix_agentd的配置文件zabbix_agentd.conf

1.zabbixserver的配置文件:

NodeID=0 #分布式节点id号,0代表是独立服务器,默认是被注释掉的,不强制配置

ListenPort=10051 #zabbix server的端口,默认是10051,可以自行修改,

范围是1024-32767 ,一般默认即可

SourceIP=  #连接的源ip地址,默认为空,默认即可

LogFile=/tmp/zabbix_server.log #日志文件的存放位置

LogFileSize=1 #日志文件的大小,单位为MB,当设置为0时,表示不仅行日志轮询,

默认设置为1,默认即可

DebugLevel=3 #指定调试级别,默认即可

PidFile=/tmp/zabbix_server.pid #pid文件的存放位置

DBHost=localhost #数据库主机名,当设置为localhost时,连接mysql通过sock

DBName=zabbix #指定存放zabbix数据数据库的名字

DBUser=zabbix #指定连接数据库的用户名

DBPassword=123456 #用户连接数据库需要的密码

DBSocket=/var/lib/mysql/mysql.sock #前文主机设置为localhost,用户

连接数据库所用的sock位置,

DBPort=3306 #数据库的端口号,当用sock连接时,无关紧要,当通过网络连接时需设置

StartPollers=5 #默认即可

StartIPMIPollers=0 #使用IPMI协议时,用到的参数

StartTrappers=5 #打开的进程数,

StartPingers=1 同上

StartDiscoverers=1

StartHTTPPollers=1

JavaGateway=127.0.0.1 #JavaGateway的ip地址或主机名

JavaGatewayPort=10052 #JavaGateway的端口号

StartJavaPollers=5 #开启连接javagatey的进程数

SNMPTrapperFile=/tmp/zabbix_traps.tmp

StartSNMPTrapper=0 #如果设置为1,snmp trapper进程就会开启

ListenIP=0.0.0.0 #监听来自trapper的ip地址

ListenIP=127.0.0.1

HousekeepingFrequency=1 #zabbix执行Housekeeping的频率,单位为hours

MaxHousekeeperDelete=500 #每次最多删除历史数据的行

SenderFrequency=30 #zabbix试图发送未发送的警报的时间,单位为秒

CacheSize=8M #缓存的大小

CacheUpdateFrequency=60#执行更新缓存配置的时间,单位为秒数

StartDBSyncers=4

HistoryCacheSize=8M

TrendCacheSize=4M

HistoryTextCacheSize=16M

NodeNoEvents=0

NodeNoHistory=0

Timeout=3

TrapperTimeout=300

UnreachablePeriod=45

UnavailableDelay=60

UnreachableDelay=15

AlertScriptsPath=/usr/local/zabbix/shell #脚本的存放路径

FpingLocation=/usr/local/sbin/fping #fping指令的绝对路径

SSHKeyLocation=

LogSlowQueries=0

TmpDir=/tmp

Include=/usr/local/etc/zabbix_server.general.conf

Include=/usr/local/etc/zabbix_server.conf.d/ #子配置文件路径

StartProxyPollers=1 #在zabbix proxy被动模式下用此参数

ProxyConfigFrequency=3600#同上

ProxyDataFrequency=1

zabbixagentd的配置文件

啊别必须

PidFile=/tmp/zabbix_agentd.pid #pid文件的存放位置

LogFile=/tmp/zabbix_agentd.log #日志文件的位置

LogFileSize=1 #当日志文件达到多大时进行轮询操作

DebugLevel=3 #日志信息级别

SourceIP= #连接的源ip地址,默认为空,即可

EnableRemoteCommands=0 #是否允许zabbix server端的远程指令,

0表示不允许,

1表示允许

LogRemoteCommands=0 #是否开启日志记录shell命令作为警告 0表示不允许,1表示允许

Server=127.0.0.1 #zabbix server的ip地址或主机名,可同时列出多个,需要用逗号隔开

ListenPort=10050 #zabbix agent监听的端口

ListenIP=0.0.0.0 #zabbix agent监听的ip地址

StartAgents=3 #zabbix agent开启进程数

ServerActive=127.0.0.1 #开启主动检查

Hostname=Zabbix server#在zabbix server前端配置时指定的主机名要相同,最重要的配置

RefreshActiveChecks=120 #主动检查刷新的时间,单位为秒数

BufferSend=5 #数据缓冲的时间

BufferSize=100 #zabbix agent数据缓冲区的大小,当达到该值便会发送所有的数据到zabbix server

MaxLinesPerSecond=100 #zabbix agent发送给zabbix server最大的数据行

AllowRoot=0 #是否允许zabbix agent 以root用户运行

Timeout=3 #设定处理超时的时间

Include=/usr/local/etc/zabbix_agentd.userparams.conf

Include=/usr/local/etc/zabbix_agentd.conf.d/ #包含子配置文件的路径

UnsafeUserParameters=0 #是否允许所有字符参数的传递

UserParameter= #指定用户自定义参数

zabbixproxy的配置文件

Server=192.168.70.133 #指定zabbix server的ip地址或主机名

Hostname=zabbix-proxy-1.35 #定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同

LogFile=/tmp/zabbix_proxy.log #指定日志文件的位置

PidFile=/tmp/zabbix_proxy.pid #pid文件的位置

DBName=zabbix_proxy #数据库名

DBUser=zabbix #连接数据库的用户

DBPassword=123456#连接数据库用户的密码

ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率

DataSenderFrequency=60 #zabbix proxy发送监控到的数据给zabbix server的频率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值