使用python對mysql主從進行監控,並調用釘釘發送報警信息


1.編寫python的監控腳本

  A.通過獲取mysql庫中的狀態值來判斷這個mysql主從狀態是否正常

       B.進行兩個狀態值的判斷

  

       C.進行調取釘釘機器人,發送消息

    

2.設置定時任務進行腳本運行

  crontab -e    添加定時任務

  */5 * * * * source ~/.bashrc && /usr/bin/python /lvdata/send_msg.py 

  給腳本執行權限  chmod +x /lvdata/send_msg.py

      這里出現一個問題,就是手工能執行腳本,但定時任務時不能執行python腳本,參考解決方法:

  1.將腳本中的中文進行刪除或更改為英文

        2.在對日志監控查看時,腳本確以執行,但沒有達到預期的效果

  tail -f /var/log/cron

       Sep  4 18:25:01 VM_DATA_ANALYSIS_DB_38 CROND[20870]: (root) CMD (/usr/bin/python /lvdata/send_msg.py)

  然后將定時任務進行修改 */5 * * * * source ~/.bashrc && /usr/bin/python /lvdata/send_msg.py,再次查看,能夠正常運行

      整個腳本

  

  #!/usr/bin/python

  import os
  import json
  import urllib2


  def get_fljr189_status():
  #獲取SQL_Running 的狀態值
  SQL=os.popen("mysql -uroot -p密碼-S /tmp/mysql.sock \"-e show slave '自定義名稱' status\G\"|grep \"Slave_SQL_Running\"")
  #獲取IO_Running 的狀態值
  IO=os.popen("mysql -uroot -p密碼 -S /tmp/mysql.sock \"-e show slave '自定義名稱' status\G\"|grep \"Slave_IO_Running\"")
  #獲取IP地址
  IP=os.popen("mysql -uroot -p密碼 -S /tmp/mysql.sock \"-e show slave '自定義名稱' status\G\"|grep \"Master_Host\"")
  #對SQL_Running 和 IO_Running狀態值進行判斷
  sql_status=cmp(SQL.read().split(":")[1].strip(),"Yes")
  io_status=cmp(IO.read().split(":")[1].strip(),"Yes")
  ip=IP.read().split(":")[1]
  #如果這兩個值都為Yes,則不報警
  if(sql_status==0 and io_status==0):
    pass
  else:
  #如果有不為Yes的值,則開發通過python 調用釘釘發送信息到群中
    send_msg(ip)

 

 

#調用釘釘發送信息到群中

def send_msg(ip):
  #釘釘的webhook 值,如有不知道可自行百度
  url="https://oapi.dingtalk.com/robot/send?access_token="
  headers={
    "Content-Type":"application/json",
    "Charset":"UTF-8"
  }
  data={
  "msgtype":"text",
  "text":{
  "content":str(ip)+"master-slave Error"
  },
  "at":{
    "isAtAll":True
  }

}
  data=json.dumps(data)
  request=urllib2.Request(url,data=data,headers=headers)
  response=urllib2.urlopen(request)
  print(response.read())


get_fljr189_status()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM