欢迎使用Markdown编辑器写博客
本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:
- Markdown和扩展Markdown简洁的语法
–>监控思路
先在zabbix主机上面配置好mysql服务器的信息,添加好zabbix自带的Template App MySQL模版,然后去mysql服务器上安装agent,再添加mysql监控脚本。
1,建立mysql host groups组
模板是 zabbix系统提供的,进入 zabbix web 后台,Configuration–>Hosts groups–>点击“Create host group”–>选择template选项卡,选择模板“TemplateApp MySQL,Templdate OS Linux”,最后点击update 即可(032.png)
2,建立hosts
模板是 zabbix系统提供的,进入zabbix web 后台,configuration–>hosts–>点击你的主机 name–>选择template选
项卡,选择模板“Template App MySQL”,最后点击左边的“Add”按钮,最后点击“update”按钮即可(033.png)
3,rpm部署agent客户端
rpm方式安装:
# 添加zabbix帐号
groupadd zabbix
useradd zabbix -g zabbix -s /sbin/nologin
# 下载安装包
wget http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.0-2.el6.x86_64.rpm
rpm -ivh zabbix-agent-3.0.0-2.el6.x86_64.rpm
# 报错信息如下:
[root@db_m1_slave_1 zabbix]# rpm -ivh zabbix-agent-3.0.0-2.el6.x86_64.rpm
warning: zabbix-agent-3.0.0-2.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
error: Failed dependencies:
libodbc.so.2()(64bit) is needed by zabbix-agent-3.0.0-2.el6.x86_64
[root@db_m1_slave_1 zabbix]#
# 解决方法:
yum -y install unixODBC
blog源地址:http://blog.csdn.net/mchdba/article/details/51288767,谢绝转载
启动agent:
# 启动:
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
# 添加开机自启动:
chkconfig –add zabbix_agentd
4,源码方式agent客户端
tar zxvf zabbix-3.0.2.tar.gz
cd zabbix-3.0.2
./configure –enable-agent –with-mysql
make
make install
# 其它zabbix_agentd.conf配置信息和rpm方式一样
5,开始mysql性能监控
这里可以采用zabbix自带的mysql模版,但是也需要在mysql服务器上准备获取mysql status的脚本chk_mysql.sh,zabbix通过调用这个脚本来获取mysql的运行信息。
在配置文件zabbix_agentd.conf里面添加mysql监控信息:
# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[],/usr/local/zabbix/scripts/chk_mysql.sh 1</p> <p>UserParameter=mysql.ping,mysqladmin -uzabbix -pys_ipowerlong0418 -P3306 -h127.0.0.1 ping | grep -c alive </p></td> </tr></tbody></table><p> </p><p><strong>添加mysql帐号:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'ys_ipowerlong0418'; </p></td> </tr></tbody></table><p> </p><p><strong>添加check脚本权限:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p>chmod u+x /usr/local/zabbix/chk_mysql.sh</p> <p>chown -R zabbix.zabbix /usr/local/zabbix/chk_mysql.sh </p></td> </tr></tbody></table><p> </p><p><strong>去zabbix服务器上面检查基本mysql服务器信息是否能正常获取到,zabbix_get -s 192.168.1..62 -p10050 -k"system.cpu.load[all,avg15]";:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p>[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..62 -p10050 -k "system.cpu.load[all,avg15]"; </p> <p>0.050000</p> <p>[root@hch_test_121_12 html]#</p></td> </tr></tbody></table><p> </p><p> </p><p><strong>接下来准备mysql的运行信息监控,需要准备新的mysql监控脚本chk_mysql.sh,/usr/local/zabbix/chk_mysql.sh:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p><span style="color:#0070C0;">#!/bin/sh </span></p> <p><span style="color:#0070C0;"># ------------------------------------------------------------------------------- </span></p> <p><span style="color:#0070C0;"># FileName: check_mysql.sh </span></p> <p><span style="color:#0070C0;"># Revision: 1.0 </span></p> <p><span style="color:#0070C0;"># Date: 2016/04/22</span></p> <p><span style="color:#0070C0;"># Author: tim</span></p> <p><span style="color:#0070C0;"># Email: mchdba@sohu.com</span></p> <p>MYSQL_SOCK="/usr/local/mysql/mysql.sock" </p> <p>MYSQL_USER='zabbix'</p> <p>MYSQL_PWD='ys_ipowerlong0418'</p> <p>MYSQL_HOST='127.0.0.1'</p> <p>MYSQL_PORT='3306'</p> <p>ARGS=1 </p> <p>if [# -ne “ARGS" ];then </p> <p> echo "Please input one arguement:" </p> <p>fi </p> <p>case1 in
Uptime)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"
echo result </p> <p> ;; </p> <p> Com_update) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3` </p> <p> echoresult
;;
Slow_queries)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"
echo result </p> <p> ;; </p> <p> Com_select) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3` </p> <p> echoresult
;;
Com_rollback)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3
echo result </p> <p> ;; </p> <p> Questions) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"` </p> <p> echoresult
;;
Com_insert)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3
echo result </p> <p> ;; </p> <p> Com_delete) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3` </p> <p> echoresult
;;
Com_commit)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3
echo result </p> <p> ;; </p> <p> Bytes_sent) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` </p> <p> echoresult
;;
Bytes_received)
result=
/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3
echo result </p> <p> ;; </p> <p> Com_begin) </p> <p> result=`/usr/local/mysql/bin/mysqladmin -uMYSQL_USER -h MYSQLHOST−p {MYSQL_PWD} -S MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3` </p> <p> echoresult
;;
)
echo “Usage:0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)" </p> <p> ;; </p> <p>esac</p></td> </tr></tbody></table><p> </p><p><strong>脚本准备完后,重启agent,然后在zabbix-server服务器上测试是否可以获取到mysql的status信息:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p>[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_update] </p> <p>Warning: Using a password on the command line interface can be insecure.</p> <p>78055</p> <p>[root@hch_test_121_12 html]# </p> <p>[root@hch_test_121_12 html]# </p> <p>[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_insert]</p> <p>Warning: Using a password on the command line interface can be insecure.</p> <p>51332</p> <p>[root@hch_test_121_12 html]#</p></td> </tr></tbody></table><p> </p><h2><span style="color:#00B050;">6</span><span style="color:#00B050;">,监控性能视图</span></h2><p>监控脚本运行正常后,就会在zabbix-server的host下面的graph里面看到mysql的监控性能视图,monitoringààGraphsààHost(选择mysql服务器)ààGraph(选择mysql选项),可以看到性能监控视图,zabbix自带模版默认有2个性能图,这些图要等运行一段时间后才能画出来:</p><p><br></p><p><strong>041.png,MySQL operations:</strong></p><p><img src="https://img-blog.csdn.net/20160501002133567?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p><p> </p><p><strong>042.png,MySQL bandwidth:</strong></p><p><img src="https://img-blog.csdn.net/20160501002152074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p><p> </p><p> </p><h2><span style="color:#00B050;">7</span><span style="color:#00B050;">,</span><span style="color:#00B050;">mysqladmin</span><span style="color:#00B050;">的缺陷</span></h2><p>当mysql down了的时候,zabbix监控不到。因为默认的MySQL is down 的触发器的触发条件是mysql.ping.last(0),mysql.ping的实现方式是UserParameter=mysql.ping,mysqladmin -uzabbix -pys_ipowerlong0418-P3306 -h127.0.0.1 ping | grep -c alive,当mysql服务停止了后,mysqladmin执行报错是一推错误信息返回不了数字0,所以zabbix触发不了,所以zabbix界面会看到problems但是不会触发报警动作的,也就意味着你不会第一时间接到email、短信、电话报警了。</p><p> </p><p>所以必须改正不能用mysqladmin这种方式,想到了用telnet mysql端口的方式来判断,如下所示:UserParameter=mysql.ping,netstat -ntpl |grep 3317 |grep mysql |wc|awk '{print $1}'</p><p>3317就是mysql运行的端口号,这样当mysqlis alive那么返回为1,当mysql is down返回为0,就满足了zabbix的mysql.ping.last(0)=0的触发条件了。</p><p> </p><p><strong>修改zabbix_agentd.conf配置信息:</strong></p><table border="1" cellspacing="0" cellpadding="0"> <tbody><tr> <td valign="top"><p><span style="color:#0070C0;"># </span><span style="color:#0070C0;">先移除默认的配置</span></p> <p>mv /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /usr/local/zabbix/</p> <p> </p> <p><span style="color:#0070C0;"># </span><span style="color:#0070C0;">添加新的配置</span></p> <p>vim /etc/zabbix/zabbix_agentd.conf</p> <p>UserParameter=mysql.version,mysql -V</p> <p>UserParameter=mysql.status[*],/usr/local/zabbix/chk_mysql.sh1
UserParameter=mysql.ping,netstat -ntpl |grep 3317 |grep mysql |wc |awk ‘{print $1}’
8,报错汇总记录
8.1报错信息
[root@db_m1_slave_1 zabbix-3.0.2]# tail -f/var/log/zabbix/zabbix_agentd.log
……
17336:20160422:163813.319 no active checkson server [192.168.121.12:10051]: host [hch_test_121_12] not found
17336:20160422:164013.503 no active checks onserver [192.168.121.12:10051]: host [hch_test_121_12] not found
解决办法:
出现该错误的原因是一般是zabbix_agentd.conf里面的Hostname和前端zabbix web里面的配置不一样所造成的,即在zabbix web页面Monitoring->Configuration->Hosts 页面的Host Name和zabbix_agentd.conf里面的Hostname要一样。
再看后台日志信息,正常如下:
[root@db_m1_slave_1 zabbix-3.0.2]# tail -f/var/log/zabbix/zabbix_agentd.log
17468:20160422:164350.284 IPv6 support: YES
17468:20160422:164350.284 TLS support: YES
17468:20160422:164350.284**************************
17468:20160422:164350.284 using configurationfile: /etc/zabbix/zabbix_agentd.conf
17468:20160422:164350.293 agent #0 started[main process]
17469:20160422:164350.294 agent #1 started[collector]
17470:20160422:164350.294 agent #2 started[listener #1]
17471:20160422:164350.294 agent #3 started[listener #2]
17472:20160422:164350.295 agent #4 started[listener #3]
17473:20160422:164350.295 agent #5 started[active checks #1]
8.2问题is not suitable for value type [Numeric (unsigned)] and datatype [Decimal]
12394:20160422:200640.676 error reason for “db_master_1:mysql.status[Questions]” changed: Received value [Warning: Using a password on the command line interface can be insecure.18463244] is not suitable for value type [Numeric (float)]
12393:20160422:200642.678 error reason for “db_master_1:mysql.status[Uptime]” changed: Received value [Warning: Using a password on the command line interface can be insecure.580661] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
后台zabbix服务器日志:
[root@hch_test_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_update]
Warning: Using a password on the command line interface can be insecure.
92315
[root@hch_test_121_12 ~]#
解决办法是,在zabbix客户端,添加用户名密码配置,这样避免shell密码外泄也不会报错,(这里报这种错误是因为返回的结果集中有字符串提醒信息,而后台zabbix的item的是decimal所以存储不进去报错):
vim /usr/local/mysql/my.cnf
[mysqladmin]
user=zabbix
password=ys_ipowerlong0418
然后重启zabbix_agent
然后在后台zabbix测试,没有报多余的信息:
[root@hch_test_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_insert]
58272
[root@hch_test_121_12 ~]#
之后再看zabbix_server后台日志,正常了不会报错了,如下所示:
12855:20160422:233520.636 item “db_master_2:mysql.status[Bytes_received]” became supported
12857:20160422:233521.636 item “db_master_2:mysql.status[Bytes_sent]” became supported
12854:20160422:233522.637 item “db_master_2:mysql.status[Com_begin]” became supported
12856:20160422:233523.638 item “db_master_2:mysql.status[Com_commit]” became supported
12857:20160422:233524.641 item “db_master_2:mysql.status[Com_delete]” became supported
12855:20160422:233525.642 item “db_master_2:mysql.status[Com_insert]” became supported
12856:20160422:233526.642 item “db_master_2:mysql.status[Com_rollback]” became supported
12854:20160422:233527.643 item “db_master_2:mysql.status[Com_select]” became supported
12855:20160422:233528.645 item “db_master_2:mysql.status[Com_update]” became supported
12857:20160422:233529.646 item “db_master_2:mysql.status[Questions]” became supported
12856:20160422:233530.646 item “db_master_2:mysql.status[Slow_queries]” became supported
8.3报错Check access restrictions in Zabbix agent configuration:
[root@hch_test_121_12 alertscripts]#zabbix_get -s 192.168.1..72 -p10050 -k “system.hostname”;
zabbix_get [17730]: Check accessrestrictions in Zabbix agent configuration
[root@hch_test_121_12 alertscripts]#
解决:
配置文件坏了,copy一个备份的过来,改下,重启agent。
在zabbix服务器上测试:
[root@hch_test_121_12 alertscripts]#/usr/local/zabbix/bin/zabbix_get -s 192.168.1.63 -p10050 -k mysql.ping
(Not all processes could be identified,non-owned process info
willnot be shown, you would have to be root to see it all.)
0
[root@hch_test_121_12 alertscripts]#
去mysql服务器上赋予s权限
[root@db_m1_slave2 soft]# chmod +s /bin/netstat
You have new mail in /var/spool/mail/root
[root@db_m1_slave2 soft]#
8.4 zabbix_get [1291]: Get value error
[root@hch_test_121_12 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.1.21 -p10050 -k system.info
zabbix_get [1291]: Get value error: cannotconnect to [[10.254.1.21]:10050]: [111] Connection refused
[root@hch_test_121_12 ~]#
- 代码块高亮
- 图片链接和图片上传
- LaTex数学公式
- UML序列图和流程图
- 离线写博客
- 导入导出Markdown文件
- 丰富的快捷键
快捷键
- 加粗
Ctrl + B
- 斜体
Ctrl + I
- 引用
Ctrl + Q
- 插入链接
Ctrl + L
- 插入代码
Ctrl + K
- 插入图片
Ctrl + G
- 提升标题
Ctrl + H
- 有序列表
Ctrl + O
- 无序列表
Ctrl + U
- 横线
Ctrl + R
- 撤销
Ctrl + Z
- 重做
Ctrl + Y
Markdown及扩展
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
表格
Markdown Extra 表格语法:
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
-
Markdown Extra 定义列表语法:
项目1
项目2
- 定义 A
- 定义 B 项目3
- 定义 C
-
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
脚注
生成一个脚注1.
目录
用 [TOC]
来生成目录:
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
- 行内公式,数学公式为: Γ(n)=(n−1)!∀n∈N 。
- 块级公式:
更多LaTex语法请参考 这儿.
UML 图:
可以渲染序列图:
或者流程图:
离线写博客
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
浏览器兼容
- 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
- IE9以下不支持
- IE9,10,11存在以下问题
- 不支持离线功能
- IE9不支持文件导入导出
- IE10不支持拖拽文件导入
- 这里是 脚注 的 内容. ↩