免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15240 | 回复: 15
打印 上一主题 下一主题

MMM进阶技巧---角色切换报警【原创】 [复制链接]

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-11 13:09 |只看该作者 |倒序浏览
背景:
众所周知MMM会自动进行writer或者reader角色的切换。
但是他何时,因为何种原因进行了切换呢?
为了回答这个问题,我们只能查看日志文件。这无疑是一种低效的解决方式。
能不能让MMM在进行切换的时候,自动发出信息,进行报警和提示呢? 可以!

解决方案:
MMM的日志配置,使用的是log4perl。
查看文档发现log4perl支持的日志载体有,File,Mail,Pipe
本文介绍的重点就是Pipe类型。

修改 /etc/mysql-mmm/mmm_mon_log.conf 文件如下
  1. log4perl.logger = INFO, MMMLog , MailFatal
  2. log4perl.appender.MMMLog = Log::Log4perl::Appender::File
  3. log4perl.appender.MMMLog.Threshold = INFO
  4. log4perl.appender.MMMLog.filename = /var/log/mysql-mmm/mmm_mond.log
  5. log4perl.appender.MMMLog.recreate = 1
  6. log4perl.appender.MMMLog.layout = PatternLayout
  7. log4perl.appender.MMMLog.layout.ConversionPattern = %d %5p %m%n

  8. log4perl.appender.MailFatal = Log::Log4perl::Appender::File
  9. log4perl.appender.MailFatal.Threshold = FATAL
  10. log4perl.appender.MailFatal.mode = pipe
  11. log4perl.appender.MailFatal.filename = /var/log/mysql-mmm/mpipe
  12. log4perl.appender.MailFatal.recreate = 1
  13. log4perl.appender.MailFatal.buffered = 0
  14. log4perl.appender.MailFatal.layout = PatternLayout
  15. log4perl.appender.MailFatal.layout.ConversionPattern = %d %5p %m%n
复制代码
其中MMMLog 部分为基本日志记录。
MailFatal 部分为短信或者邮件自动发送部分配置。

主要原理如下:
当log4perl 配置 appender mode 为 pipe 时,会认为 filename是一个可执行文件
mmm_mon在启动时,会调用filename所配置的文件。
filename文件需要是一个能读取STDIN的可执行文件,并对读入做某些预期的操作(发短信,发邮件等)
filename文件需要是一个循环执行的文件,范例如下:
  1. #! /bin/sh

  2. while read Message
  3. do
  4.         #do something with $Message
  5. done;
复制代码
通过替换注释部分成为所需要的警报命令(mail,短信均可)。从而达到了文章开始所阐述的实时报警的需求。

论坛徽章:
0
2 [报告]
发表于 2010-11-11 13:30 |只看该作者
这两天在弄mmm,整需要这个东西,谢谢楼主!

论坛徽章:
0
3 [报告]
发表于 2010-11-11 16:49 |只看该作者
支持兄弟

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
4 [报告]
发表于 2010-11-11 17:45 |只看该作者
谢谢分享

论坛徽章:
0
5 [报告]
发表于 2010-11-12 10:03 |只看该作者
回复 1# cenalulu

刚测试了下,脚本写好了,mmm_mon_log.conf配置也写好了(和你的一样),利用短信报警!
当我把原来的主停掉之后,切换到另外一个主上,没收到报警。利用tail -f /var/log/mysql-mmm/mmm_mond.log查看到了FATAL级别的日志如下:
  1. 2010/11/10 07:25:36  WARN Check 'rep_backlog' on 'db1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.1.161:3306, user = mmm_monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
  2. 2010/11/10 07:25:36  WARN Check 'rep_threads' on 'db1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.1.161:3306, user = mmm_monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
  3. 2010/11/10 07:25:46 ERROR Check 'rep_threads' on 'db4' has failed for 10 seconds! Message: ERROR: Replication is broken
  4. 2010/11/10 07:25:46 ERROR Check 'rep_threads' on 'db2' has failed for 10 seconds! Message: ERROR: Replication is broken
  5. 2010/11/10 07:25:46 ERROR Check 'rep_threads' on 'db3' has failed for 10 seconds! Message: ERROR: Replication is broken

  6. 2010/11/10 07:25:49 FATAL State of host 'db4' changed from ONLINE to REPLICATION_FAIL
  7. 2010/11/10 07:25:49  INFO Removing all roles from host 'db4':
  8. 2010/11/10 07:25:49  INFO     Removed role 'reader(192.168.1.112)' from host 'db4'
  9. 2010/11/10 07:25:49 FATAL State of host 'db2' changed from ONLINE to REPLICATION_FAIL
  10. 2010/11/10 07:25:49  INFO Removing all roles from host 'db2':
  11. 2010/11/10 07:25:49  INFO     Removed role 'reader(192.168.1.111)' from host 'db2'
  12. 2010/11/10 07:25:49 FATAL State of host 'db3' changed from ONLINE to REPLICATION_FAIL
  13. 2010/11/10 07:25:49  INFO Removing all roles from host 'db3':
  14. 2010/11/10 07:25:49  INFO     Removed role 'reader(192.168.1.114)' from host 'db3'
  15. 2010/11/10 07:25:49  INFO Orphaned role 'reader(192.168.1.111)' has been assigned to 'db1'
  16. 2010/11/10 07:25:49  INFO Orphaned role 'reader(192.168.1.112)' has been assigned to 'db1'
  17. 2010/11/10 07:25:49  INFO Orphaned role 'reader(192.168.1.114)' has been assigned to 'db1'
  18. 2010/11/10 07:25:50 ERROR Check 'mysql' on 'db1' has failed for 10 seconds! Message: ERROR: Connect error (host = 192.168.1.161:3306, user = mmm_monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
  19. 2010/11/10 07:25:52 FATAL State of host 'db1' changed from ONLINE to HARD_OFFLINE (ping: OK, mysql: not OK)
  20. 2010/11/10 07:25:52  INFO Removing all roles from host 'db1':
  21. 2010/11/10 07:25:52  INFO     Removed role 'reader(192.168.1.111)' from host 'db1'
  22. 2010/11/10 07:25:52  INFO     Removed role 'reader(192.168.1.112)' from host 'db1'
  23. 2010/11/10 07:25:52  INFO     Removed role 'reader(192.168.1.114)' from host 'db1'
  24. 2010/11/10 07:25:52  INFO     Removed role 'reader(192.168.1.115)' from host 'db1'
  25. 2010/11/10 07:25:52  INFO     Removed role 'writer(192.168.1.113)' from host 'db1'
  26. 2010/11/10 07:25:55 FATAL State of host 'db4' changed from REPLICATION_FAIL to ONLINE
  27. 2010/11/10 07:25:55 FATAL State of host 'db2' changed from REPLICATION_FAIL to ONLINE
  28. 2010/11/10 07:25:55 FATAL State of host 'db3' changed from REPLICATION_FAIL to ONLINE
  29. 2010/11/10 07:25:55  INFO Orphaned role 'writer(192.168.1.113)' has been assigned to 'db2'
  30. 2010/11/10 07:25:55  INFO Orphaned role 'reader(192.168.1.111)' has been assigned to 'db3'
  31. 2010/11/10 07:25:55  INFO Orphaned role 'reader(192.168.1.112)' has been assigned to 'db4'
  32. 2010/11/10 07:25:55  INFO Orphaned role 'reader(192.168.1.114)' has been assigned to 'db2'
  33. 2010/11/10 07:25:55  INFO Orphaned role 'reader(192.168.1.115)' has been assigned to 'db3'
  34. 2010/11/10 07:25:57  INFO Check 'rep_threads' on 'db4' is ok!
  35. 2010/11/10 07:25:57  INFO Check 'rep_threads' on 'db3' is ok!
复制代码
帮我看下错在什么地方了,谢谢,我的脚本如下:
#! /bin/sh
while read Message
do
        LD_LIBRARY_PATH=fx/. fx/fetion --mobile=159200××××× --pwd=zilanxing@123  --to=15920××××× --msg-utf8="mysql-master-is-changed" >/dev/null 2>&1
done

直接执行 LD_LIBRARY_PATH=fx/. fx/fetion --mobile=159200××××× --pwd=zilanxing@123  --to=15920××××× --msg-utf8="mysql-master-is-changed" >/dev/null 2>&1能收到短信报警。

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2010-11-12 10:40 |只看该作者
回复  cenalulu

刚测试了下,脚本写好了,mmm_mon_log.conf配置也写好了(和你的一样),利用短信报警! ...
飞鸿无痕 发表于 2010-11-12 10:03



    可能性很多,配置完以后,需要mond server restart。
确认下这个脚本有没有+x , 另外可以先把发短信这段话改成 echo 'sth' >> /tmp/foo.log ,至少先确认,脚本被正常调用了。

论坛徽章:
0
7 [报告]
发表于 2010-11-12 11:02 |只看该作者
回复 6# cenalulu

脚本如果没有x权限,监控端启动不了的。我再试下,谢谢。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
8 [报告]
发表于 2010-11-12 11:02 |只看该作者
可能试一下,前些天玩MMM,,没有报警功能!

论坛徽章:
0
9 [报告]
发表于 2010-11-12 11:29 |只看该作者
回复 6# cenalulu

配置完后重启了监控端,现在确定当mysql主从进行切换的时候没有调用我的脚本文件,不太清楚问题出现在什么地方。脚本如下,我停掉正在写的主切换后,没有生成aaa文件。
while read Message这个要不要更改?
#!/bin/bash
while read Message
do
        echo "teaaaaa" >> aaa
done;

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
10 [报告]
发表于 2010-11-12 13:47 |只看该作者
回复  cenalulu

配置完后重启了监控端,现在确定当mysql主从进行切换的时候没有调用我的脚本文件,不太 ...
飞鸿无痕 发表于 2010-11-12 11:29



    while 不用改。 log4perl.appender.MailFatal.filename = /var/log/mysql-mmm/mpipe
你的脚本确定是在这个目录下?
PS:用不用什么IM,论坛交流效率太低了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP