Zabbix 3.2.6——Mysql多實例監控--Percona_Monitoring_Plugins自動發現

来源:http://www.cnblogs.com/guoyishen/archive/2017/05/22/6891953.html
-Advertisement-
Play Games

mysql多實例監控實錄 系統環境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 內核版本: uname -r 3.10.0-514.el7.x86_64 docker版本: docker -v Docker versio ...


mysql多實例監控實錄   系統環境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 內核版本: uname -r 3.10.0-514.el7.x86_64 docker版本: docker -v Docker version 1.12.6, build 3a094bd/1.12.6 docker 相關鏡像版本: docker.io/zabbix/zabbix-web-nginx-mysql latest docker.io/zabbix/zabbix-server-mysql latest docker.io/mysql 5.7 被監控mysql應用版本: mysql-5.7.17-linux-glibc2.5-x86_64 Percona Monitoring Plugins版本: 1.1.7-2.noarch.rpm   寫在最前:如果zabbix server和zabbix agent已經通過其他方式安裝,可以直接跳過1、2步,直接從第3步開始看。   1、zabbix服務端我們運行在docker容器內 所以伺服器端先安裝docker服務 yum install -y epel-release yum install -y docker #centos6.x版本的命令是yum install -y docker-io   然後運行docker服務 systemctl start docker docker加入開機自啟動 systemctl enable docker 查看docker是否成功啟動 systemctl status docker   2.安裝相關容器 2.1. mysql 容器 docker run --name mysql-server -t \       -e MYSQL_DATABASE="zabbix" \       -e MYSQL_USER="zabbix" \       -e MYSQL_PASSWORD="ywwd.net" \       -e MYSQL_ROOT_PASSWORD="ywwd.net" \       -v /data/container/mysql/zabbix:/var/lib/mysql \       -v /etc/localtime:/etc/localtime:ro \       --restart=always \       -d mysql:5.7 \       --character-set-server=utf8 --collation-server=utf8_general_ci --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"   2.2. zabbix-server 容器 docker run --name zabbix-server-mysql -t \       -e DB_SERVER_HOST="mysql-server" \       -e MYSQL_DATABASE="zabbix" \       -e MYSQL_USER="zabbix" \       -e MYSQL_PASSWORD="ywwd.net" \       -e MYSQL_ROOT_PASSWORD="ywwd.net" \       --link mysql-server:mysql \       -p 10051:10051 --restart=always \       -v /etc/localtime:/etc/localtime:ro \       -d zabbix/zabbix-server-mysql:latest   2.3. zabbix-web 容器(nginx) docker run --name zabbix-web-nginx-mysql -t \       -e DB_SERVER_HOST="mysql-server" \       -e MYSQL_DATABASE="zabbix" \       -e MYSQL_USER="zabbix" \       -e MYSQL_PASSWORD="ywwd.net" \       -e MYSQL_ROOT_PASSWORD="ywwd.net" \       --link mysql-server:mysql \       --link zabbix-server-mysql:zabbix-server \       -v /etc/localtime:/etc/localtime:ro \       -p 80:80 \       --restart=always \       -d zabbix/zabbix-web-nginx-mysql:latest   註意:這裡有個小問題,zabbix-web-nginx-mysql的啟動腳本/run_zabbix_component.sh中,指定了時區,不是中國的Asia/Shanghai,所以我們要進入zabbix-web-nginx-mysql進行修改 2.4. 修改zabbix-web的時區 docker exec -it zabbix-web-nginx-mysql /bin/bash TZ=${TZ:-"Asia/Shanghai"} 這裡改為Asia/Shanghai,否則zabbix-web端的時間會慢5個小時 sed -in 's#Europe/Riga#Asia/Shanghai#g' /run_zabbix_component.sh 修改時區後,需要重啟容器 docker restart zabbix-web-nginx-mysql 2.5. 在firewall防火牆放開zabbix-server和zabbix-agent的服務埠號 firewall-cmd --permanent --add-port=10050-10051/tcp #--permanent永久生效,10050zabbix-agent服務埠,10051zabbix-server服務埠 firewall-cmd --reload #更改後需要重新載入firewall防火牆 firewall-cmd --list-all #最後查看配置是否生效   這樣zabbix-server端就已經安裝完畢 接下來客戶端我們採用rpm包進行安裝 rpm -ivh zabbix-agent-3.2.6-1.el7.x86_64.rpm 同樣需要放開zabbix-agent埠 firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --reload   然後對zabbix-agent端進行配置 egrep -v '^$|^#' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log Server=10.0.0.106 # <====zabbix-server端的IP地址 ServerActive=10.0.0.106 #<====zabbix-server端的IP地址,主動方式 Hostname=10.0.0.107 #<====zabbix-agent端的IP地址或者主機名 Include=/etc/zabbix/zabbix_agentd.d/*.conf   然後在zabbix-server端的web界面進行主機添加   1)修改主機名稱,要跟zabbix-agent的配置文件中的Hostname相對應 2)選擇你想設置的群組,如果群組不存在,可以在下麵一欄新的群組中進行添加 3)指定zabbix-agent端的IP地址或者功能變數名稱(埠號一般變) 其他保持預設,點擊添加即可   3、利用Percona Monitoring Plugins插件進行MySQL多實例的監控 1)percona監控zabbix的腳本是使用php寫的,所以需要準備好php運行環境,這裡直接用yum安裝就可以滿足要求了: yum install -y php php-mysql 2)安裝percona-zabbix-templates yum install -y https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm   也可配置Percona yum倉庫後安裝,建議配置percona的yum源,因為作為一個DBA你肯定會用到percona toolkit套件。 註:我沒有用這種方式,percona toolkit我是通過源碼包安裝的。 yum install -y https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-3.noarch.rpm yum install -y percona-zabbix-templates   4、yum安裝的shell為單實例版,所以我們要進行相關修改,這裡已經有小伙伴進行了修改,我們直接克隆,進行對比,需要先安裝git git clone https://github.com/lianghx7123/Mysql_Multiport_monitor_used_zabbix.git mysql_monitor   1)對比後,我們發現在get_mysql_stats_wrapper.sh腳本中,添加了相關參數 PORT=$2 HOST=127.0.0.1   2)CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items $ITEM --port $PORT" CMD變數的php路徑一定要指定正確,否則會報錯,我們在後面添加了 --port $PORT CACHEFILE改為判斷 if [ $PORT == 3306 ];then CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt" else CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt":$PORT fi   3)running-slave進行如下修改,此處報警跟模板中的另一個Slave Stopped是重疊的,不過這個比Slave Stopped要靈敏,大概提前3分鐘左右報警,不過需要在/etc/my.cnf以及腳本中添加mysql的賬號和密碼等信息,各有利弊吧   if [ "$ITEM" = "running-slave" ]; then # Check for running slave RES=`HOME=~zabbix /usr/local/mysql/bin/mysql -P$PORT -h127.0.0.1 -uzabbix -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | grep -i yes|wc -l ` if [ "$RES" -ne 2 ]; then echo 1 else echo 0 fi exit 併在/etc/my.cnf中添加 [mysql] password=123456 #存在安全隱患,所以建議把my.cnf文件屬性改為600   4)#cat $CACHEFILE | sed 's/ /\n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}' 這一列改為: cat $CACHEFILE | sed 's/ /\n/g'| grep $ITEM | awk -F: '{print $2}' 或者 cat $CACHEFILE | sed 's/ /\n/g; s/-1/1/g'| grep $ITEM | awk -F: '{print $2}' 改為第一個,在zabbix-server的web端配置報警閾值為小於0,或者等於1的時候報警, 改為第二行,可以統一設置報警閾值為等於1,因為這個問題,困擾了我好久   5、修改自動發現腳本 cat mysql_low_discovery.sh #!/bin/bash #Fucation:mysql low-level discovery #Script_name mysql_low_discovery.sh discovery() { port=($(sudo ss -tpln | awk -F "[ :]+" '/[m]ysql/ {print $4}')) printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $9}'|cut -d ' ' -f 1` printf '\t {\n' printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $9}'|cut -d ' ' -f 1` printf '\t {\n' printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n" fi done printf '\t ]\n' printf '}\n' } discovery   註意:由於此處使用了 sudo ,所以要把zabbix用戶加上sudo許可權,且只能執行 ss命令 echo 'zabbix ALL=(ALL) NOPASSWD:/usr/sbin/ss'>>/etc/sudoers   修改ss_get_mysql_stats.php腳本 $mysql_user = 'zabbix'; <=====此為php登錄mysql的用戶 $mysql_pass = 123456; <=====此為php登錄mysql的密碼 $mysql_port = NULL; <=====埠和socket要改為NULL $mysql_socket = NULL;   修改userparameter_percona_mysql.conf 配置文件 把每行中的逗號',' 替換為[*], sed -in 's#,#[*],#g' userparameter_percona_mysql.conf 在每行後面添加 $1 sed -in 's#$#$1#g' userparameter_percona_mysql.conf 最後在首行添加埠自動發現腳本 sed -in '1i UserParameter=MySQL.discovery,/bin/bash /var/lib/zabbix/percona/scripts/mysql_low_discovery.sh' userparameter_percona_mysql.conf   6、複製腳本文件並執行許可權 mkdir -p /var/lib/zabbix/percona/scripts/ cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ cp get_mysql_stats_wrapper.sh /var/lib/zabbix/percona/scripts/ cp mysql_low_discovery.sh /var/lib/zabbix/percona/scripts/ cp ss_get_mysql_stats.php /var/lib/zabbix/percona/scripts/ chmod 700 /var/lib/zabbix/percona/scripts/* chown -R zabbix. /var/lib/zabbix/ 7、最後一定要在所有的主庫上面做授權操作,否則拿不到監控數據 GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' identified by '123456'; flush privileges;   8、最後把模板Mysql_Multiport.xml導入到zabbix-server內,所有用到的腳本文件都已經添加到附件中,大家可以下載使用。 創建觸發器原型   在zabbix-server端,添加觸發器 依次點擊 主機===>自動發現===>觸發器類型===>點擊右上角的創建觸發器原型 分配報警級別,點擊表達式欄的添加,選擇選擇原型 然後選擇 例如:MySQL.slave-stopped[{#MYSQLPORT}] 選擇最新的T值小於N N為0 註:如果在第4.4中指定的是cat $CACHEFILE | sed 's/ /\n/g; s/-1/1/g'| grep $ITEM | awk -F: '{print $2}' 選擇最新的T值等於N N為1   然後我們可以手動停止主從複製,稍等片刻,就會發了報警信息   博客園不允許放附件,所以我只能把附件放在百度雲了 http://pan.baidu.com/s/1hrI03is   參考文章: https://ywwd.net/read-1271 https://github.com/hc-dba/Mysql_Multiport_monitor_used_zabbix http://www.ywnds.com/?p=6199   另外可以添加微信和郵件告警,這裡推薦下麵的博文 微信告警:https://www.oschina.net/news/75588/zabbix-3.0.3  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # POST / GET 請求 /*! 首先要知道,POST請求不能被緩存,只有 GET 請求能被緩存。因為從數學的角度來講,GET 的結果是 冪等 的,就好像字典里的 key 與 value 就是冪等的,而 POST 不 冪等 。緩存的思路就是將查詢的參數組成的值作為 key ,對應結果作為val ...
  • Origin : 今天同事問我一個關於配有 RT9458 charger ic 的手機的問題, 這手機可能要送到廠商那, 需要 porting charger ic, 看了一下,跟他說這個充電部份不需要 porting,也可以充電。 Reason : 這 RT9458 並沒有 CE (chargin ...
  • 當前(2017年5月22日 )React Native開發相當火爆,但是搜索下來,沒有最新版本0.44集成的教程,因此嘗試了一下如何集成到Android原生工程中去。本篇旨在記錄出現的問題以及應對方式。 一、集成的過程比較簡單,按照教程一步一步來即可: 中文版教程:http://reactnativ ...
  • Schematic : Precondition : 1. Vbat 1.8V 2. Plugin adapter 3. Preloader doesn't enable GPIO_CHG_EN Origin : 做個小實驗, 手機上的假電池給 1.8V, 接上adapter, 照原理,手機應該停在 ...
  • Gradle是一種依賴管理工具,基於Froovy語言,面向Java應用為主,它拋棄了基於xml的各種繁瑣配置,取而代之的是一種基於Groovy的內部領域特定(DSL)語言。 ...
  • 解決方案步驟如下:第一步給網站根目錄添加如下數據許可權,如圖1所示 圖1 第二步,右鍵我的電腦=》管理=》打開組,給administrator添加NETWORK SERVICE 許可權,如圖2所示 如圖2所示 最後一步 重新啟動IIS ...
  • 檢查使用共用表空間的表 最近接手一臺新的資料庫機器,發現某些庫某些表沒有ibd文件只有frm文件,而ibdata1文件一共有20G+,估計是使用了共用表空間 存放在ibdata1文件里 於是寫了一個腳本,檢查實例下哪些庫哪些表使用了共用表空間,原理是如果有frm文件而沒有ibd文件就認為是使用了共用 ...
  • 本文轉載自http://www.jianshu.com/p/d7665192aaaf 說起MySQL的查詢優化,相信大家積累一堆技巧:不能使用SELECT *、不使用NULL欄位、合理創建索引、為欄位選擇合適的數據類型..... 你是否真的理解這些優化技巧?是否理解其背後的工作原理?在實際場景下性能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...