当前位置:Gxlcms > 数据库问题 > Xtradb+Haproxy高可用数据库集群(四)集群zabbix监控篇

Xtradb+Haproxy高可用数据库集群(四)集群zabbix监控篇

时间:2021-07-01 10:21:17 帮助过:13人阅读

集群zabbix监控

监控指标

官网参考地址:

https://www.percona.com/doc/percona-xtradb-cluster/5.6/manual/monitoring.html

 

1、报警参数

每个集群节点状态:

wsrep_cluster_status != Primary

wsrep_connected != ON

wsrep_ready != ON

 

复制冲突过高

wsrep_local_cert_failures

wsrep_local_bf_aborts

 

流量控制信息

wsrep_flow_control_sent

wsrep_flow_control_recv

 

复制队列大小

wsrep_local_recv_queue

 

2、长期图表收集参数

队列大小

wsrep_local_recv_queue

 wsrep_local_send_queue

 

流量控制

wsrep_flow_control_sent

wsrep_flow_control_recv

 

本节点进出交换数量

wsrep_replicated

wsrep_received

 

进出交换的字节数

wsrep_replicated_bytes

wsrep_received_bytes

 

复制冲突

wsrep_local_cert_failures

wsrep_local_bf_aborts

 

 

Zabbix监控脚本

[root@yang-219 ~]# cat monit_xtradb.py

  1. #!/usr/bin/python env
  2. #coding=utf-8
  3. #time: 2015-8-12
  4. #function: monit xtradb cluster status
  5. #author: yangr
  6.  
  7. import re,time,os
  8. import commands
  9. ###variable   数据库及监控项变量定义区域
  10. mysql_user=‘sstuser‘
  11. mysql_pass=‘s3cret‘
  12. mysql_host=‘localhost‘
  13. mysql_port=‘3306‘
  14. monit_message=‘‘‘
  15. wsrep_cluster_status
  16. wsrep_connected
  17. wsrep_ready
  18. wsrep_local_cert_failures
  19. wsrep_local_bf_aborts
  20. wsrep_flow_control_sent
  21. wsrep_flow_control_recv
  22. wsrep_local_recv_queue
  23. wsrep_local_recv_queue
  24. wsrep_local_send_queue
  25. wsrep_flow_control_sent
  26. wsrep_flow_control_recv
  27. wsrep_replicated
  28. wsrep_received
  29. wsrep_replicated_bytes
  30. wsrep_received_bytes
  31. wsrep_local_cert_failures
  32. wsrep_local_bf_aborts
  33. ‘‘‘
  34. monit_list=monit_message.split()
  35. ####zabbix 相关参数定义区域
  36. zabbix_agent_file=‘/usr/local/zabbix/etc/zabbix_agentd.conf‘
  37. zabbix_server=commands.getstatusoutput(‘‘‘grep ‘^ServerActive‘ %s|awk -F[=] ‘{print $2}‘ ‘‘‘%zabbix_agent_file)[1].strip()
  38. zabbix_hostname=commands.getstatusoutput(‘‘‘grep ‘^Hostname‘ %s|awk -F[=] ‘{print $2}‘  ‘‘‘%zabbix_agent_file)[1].strip()
  39. zabbix_server_port=10051
  40. timestamp = int(time.time())
  41. tmp_file_path=‘/tmp/xtradb_cluster_status.txt‘
  42. zabbix_hostname=‘zabbix_server‘
  43. zabbix_server=‘zabbix_server‘
  44.  
  45. ####end variable变量定义结束
  46.  
  47. #获取全局状态信息
  48. status,global_status=commands.getstatusoutput(‘‘‘ mysql -u%s -p%s -h%s -P%s -e ‘show global status like "wsrep%%";‘ ‘‘‘%(mysql_user,mysql_pass,mysql_host,mysql_port))
  49. #print ‘‘‘ mysql -u%s -p%s -h%s -P%s -e ‘show global status like "wsrep%%";‘ ‘‘‘%(mysql_user,mysql_pass,mysql_host,mysql_port)
  50. #print global_status
  51.  
  52. global_status=global_status.split(‘\n‘)
  53. #print global_status
  54. #清空文件
  55. with open(tmp_file_path,‘wb‘) as f:
  56.          f.write(‘‘)
  57. #循环要监控的指标
  58. for i in monit_list:
  59.   #循环状态列表,取出指标当前的值
  60.   for n in global_status:
  61.          if "%s\t"%i in n:
  62.                    value=re.sub(r‘.*\t‘,‘‘,n).strip()
  63.                    #print i,‘value:‘,value
  64.                    #把值写入临时文件
  65.                    with open(tmp_file_path,‘ab‘) as f:
  66.                             f.write(‘%s %s %s %s\n‘%(zabbix_hostname,i,timestamp,value))
  67.         
  68. #把临时文件通过zabbix_sender命令发送到server端
  69. send_data_cmd=‘/usr/local/zabbix/bin/zabbix_sender -vv -z %s -p %s -T -i %s‘%(zabbix_server,zabbix_server_port,tmp_file_path)
  70. print ‘/usr/local/zabbix/bin/zabbix_sender -vv -z %s -p %s -T -i %s‘%(zabbix_server,zabbix_server_port,tmp_file_path)
  71. #print send_data_cmd
  72. os.popen(send_data_cmd)


 

脚本里monit_message对应的监控项,需要在zabbix服务器上添加对应的监控项,然后把这个脚本放到crontab里每分钟执行一次即可。



本文出自 “楊雲” 博客,转载请与作者联系!

Xtradb+Haproxy高可用数据库集群(四)集群zabbix监控篇

标签:python   zabbix   haproxy   sysbench   percona xtradb cluster   

人气教程排行