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 註:使用docker需要使用加速器,否則那龜速,自己體會吧。加速器daocloud和阿裡雲都可以,我使用的前者。   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
更多相關文章
  • 1. order by (排序) 通常使用一個欄位作為參考標準,進行排序。 語法:order by 【欄位】 asc|desc;(升序、降序) tip : 校對規則 決定 排序關係。 允許多欄位排序(先按第一個欄位排序,當出現不能區分的時候,按第二個欄位進行排序,依此類推)。 【舉個慄子】 對於下表 ...
  • 正常途徑訪問Mongodb的官方網站,它只提供了msi 安裝包的下載,這種方式帶來的好處是直接作為windows的服務進行管理。 但是在有些情況下,我們希望不作為windows的服務進行安裝,比如受到公司IT 安全策略的限制,管理員許可權不會提供給我們,那麼在這種情況下,我們希望能夠通過免安裝的方式使 ...
  • 存儲引擎:也叫表類型,相當於 table 的存儲機制、索引方案等配套相關功能。 不同的存儲引擎,由於處理方式不同,帶來的功能or優化不一樣。 要根據實際需求,選擇合理的引擎。 · 存儲類型: Myisam , InnoDB , BDB , Memory , Archive 。 · 預設的 table ...
  • 運維redis很久了,一直是口頭給rd說各種要求,嘗試把這些規範總結成文檔 摘選一些可能比較通用的規則如下: ...
  • 1. 是否允許為空(Null/not Null) 規定一個欄位的值是否可以是null。預設是可以為空。 此時,插入值a = 10 , b 為空,發現可以正確插入: 若試圖插入值b = 11,而a 不做處理,發現不能正確插入,提示 a 沒有預設值。 即當對某個欄位未輸入信息時,列屬性趨向於先查找有無默 ...
  • " 1、批量數據操作 " "1.1、批量生成數據" "1.2、批量插入數據" " 2、批量生成腳本 " " 3、生成數據字典 " " 4、常見系統包 " "4.1、DBMS_OUTPUT" "4.2、DBMS_RANDOM" "4.3、其它系統包及常用方法" " 5、總結 " 1、批量數據操作 1. ...
  • 記錄下mysql-connector-java與mysql版本的對應關係,已方便以後參考,這是最新版本對應, 時間:2017年5月23日 官網文檔地址: https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html (C ...
  • 1、索引相關查詢 2、觸發器相關查詢 查看當前庫中所有的觸發器: 1 SELECT * FROM Sysobjects WHERE xtype = 'TR' 查看當前庫中所有的觸發器和與之相對應的表: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...