使用 zabbix 自動發現監控 MySQL
介紹
使用 zabbix 的 low-level 自動發現功能完成單主機多埠的監控, 詳見low_level_discovery, 整體上監控類似 percona 的zabbix監控插件, 不過使用mymonitor.pl
替換了腳本ss_get_mysql_stats.php
, 而且配置有點不同.
具體代碼及配置詳見: zabbix_mysql
1. 結構說明:zabbix_mysql/
|-- README.md
|-- bin
| |-- get_mysql_stats_wrapper.sh # 對 mymonitor.pl 運行結果的一個封裝腳本, 默認 5 分鐘運行一次
| |-- mymonitor.pl # 等同 ss_get_mysql_stats.php 腳本
| `-- mysql_port.pl # 自動發現 MySQL 埠的腳本, 返回 json 格式的輸出
|-- install.sh # 安裝腳本
`-- templates
|-- userparameter_discovery_mysql.conf # zabbix_agent 配置參數
`-- zabbix_mysql_multiport.xml # zabbix_server 端模板
mymonitor.pl
腳本依賴以下模塊:
perl-DBI
perl-DBD-mysql
監控需要的許可權包括: PROCESS, SUPER, REPLICATION SLAVE
, 在mysql_port.pl
腳本中通過netstat
命令獲取運行 MySQL 的埠, 腳本以 zabbix 用戶(或普通用戶)啟動, 為避免許可權問題, 腳本 install.sh 默認執行chmod +s /bin/netstat
命令.
mymonitor.pl 腳本默認以 monitor/monitor
用戶及口令的方式連接 MySQL 獲取狀態, 可以在腳本的初始處修改默認密碼, 或者在運行時指定--user
和--password
相關參數信息, 也可以在/home/mysql/.my.cnf
指定用戶信息, 詳細可參見perldoc mymonitor.pl
get_mysql_stats_wrapper.sh
腳本默認讀取mymonitor.pl
生成的文件以響應 zabbix 的請求, 默認5分鐘一次; 同時因為需要頻繁(默認1分鐘)檢測 slave 運行狀態, 需要提供 MySQL 登錄信息, 以便 slave 的檢測.
在 agent 端操作:
# git clone https://github.com/chenzhe07/zabbix_mysql.git /usr/local/zabbix_mysql
# bash /usr/local/zabbix_mysql/install.sh 192.168.1.2
192.168.1.2
為內網 ip 地址, 這裡考慮到可能存在多個內網ip, 所以沒有自動獲取, 需要用戶手動添加.
在 server 端操作:
import templates/zabbix_mysql_multiport.xml using Zabbix UI(Configuration -> Templates -> Import),
and Create/edit hosts by assigning them 「MySQL」 group and linking the template 「MySQL_zabbix」 (Templates tab).
導入模板, 並將模板加到待監控的機器里.
3. 測試# perl mymonitor.pl --host 10.0.0.10 --port 3300 --items hv
hv:36968
# perl mymonitor.pl --host 10.0.0.10 --port 3300 --items kx
kx:1070879944
# php ss_get_mysql_stats.php --host 10.0.0.10 --port 3300 --items hv
hv:36968
# php ss_get_mysql_stats.php --host 10.0.0.10 --port 3300 --items kx
kx:1070911408
# zabbix_get -s 10.0.0.10 -p 10050 -k "MySQL.Bytes-received[3300]"
472339244134
其它特性
較新的版本增加了 innodb 事務, 鎖, 長語句運行檢測:
item throttle
max_duration if > 100s, then trigger an alarm
waiter_count if > 10, then trigger an alarm
idle_blocker_duration if > 200s, then trigger an alarm
如下測試:
# zabbix_get -s cz-test2 -p 10050 -k "MySQL.max_duration[3301]"
max_duration:longest transaction active seconds: max time: 18, thread_id: 4838781, user: root@10.0.21.5:59980


※圖像工具包VintaSoftImaging.NET SDK v8.5,新增獨立web服務
※UIDebuggingInformationOverlay在OC語法中使用
※Zxing 的集成——Maven 對應 Gradle 的寫法
※python 字元串常用方法
※尚學堂高琪JAVA300篇視頻筆記(31-37)
TAG:達人科技 |
※教你如何利用zabbix自動發現監控mongo資料庫
※dubbo+zipkin調用鏈監控
※zabbix監控linux磁碟性能
※Zabbix低級發現監控supervisor管理的進程
※FortiAppMonitor:用於監控macOS上的系統活動的強大工具
※Linux上監控Tomcat down掉後自動重啟Tomcat
※Apache SkyWalking 為.NET Core帶來開箱即用的分散式追蹤和應用性能監控
※如何用zabbix 監控 tomcat
※Python 腳本實現對 Linux 伺服器的監控
※Spring Boot監控與管理的實現
※監控管理之Spring Boot Admin使用
※Prometheus+Grafana打造Mysql監控平台
※在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?
※配置SAP Solution Manager連接監控遠程Microsoft SQL Server
※springboot:使用Spring Boot Actuator監控應用
※Spring Boot應用監控實戰
※在 Linux 上用 Bash 腳本監控 messages 日誌
※如何利用Pspy監控沒有Root許可權的Linux進程
※利用Skywalking-netcore監控你的應用性能
※在Linux終端中監控CPU利用率:Stress Terminal UI(s-tui)