首頁 后端開發 開源工具 瀏覽內容
Zabbix部署和監控Mysql排錯
首先,先簡單介紹下Zabbix,zabbix是一個高度集成的監控集成方案,而且配置部署簡單,大部分配置都可以再web上完成。
下面我們直接進入主題,本次zabbix版本為3.2
第一個問題:
zabbix is not running the information displayed may not be current#zabbix沒有運行,顯示的不是當前信息
排錯思路,先看看Zabbix是否啟動;再檢查端口是否正常
查看系統是否已經有zabbix進程正在運行 # ps aux |grep zabbix 查看系統是否已監聽zabbix server和zabbix agent所使用的10050、10051端口 # netstat -nplut |grep zabbix
檢查了上訴兩項,發現均正常的情況下;再來看看日志
zabbix的日志默認存放位置在/tmp下,服務器端對應的日志是zabbix_server.log,監控端對應的日志是zabbix_agentd.log
發現有如下報錯內容:
# tail -f /tmp/zabbix_server.log
11150:20170804:154458.092 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)11150:20170804:154458.092 database is down: reconnecting in 10 seconds11150:20170804:154508.093 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)
上面的報錯信息是,數據庫被拒絕,沒有使用密碼,因為默認的zabbix_server.conf的DBPassword是注釋掉的
老版本的zabbix的配置文件一般是丟在/etc/zabbix/下的,新版zabbix的配置文件調用的是安裝目錄下面的
解決方法:
其它版本
/etc/zabbix/zabbix_server.conf 中的數據庫配置項目 密碼那項沒有啟用,去掉注釋,填上密碼再次啟動即可.
3.2版本
/ usr/local/zabbix/etc/zabbix_server.conf 中的數據庫配置項目,密碼那項沒有啟用,去掉注釋,填上密碼再次啟動即可.
PS:文中安裝路徑為我們的安裝路徑,請自行核對自己的安裝路徑;另,數據庫配置去掉注釋不僅僅是密碼這一項
然后重啟zabbix服務,刷新zabiix的web界面
# service zabbix_server restartOR# /etc/init.d/zabbix_server restart
第二個問題:
使用zabbix默認監控mysql模版,監控項目全部not supported或無數據
排錯思路,檢查配置和監控設置錯誤,查看監控端日志
重新仔細檢查了一邊監控設置,模版設置;均為正常,那么故障原因就只能是配置問題了
檢查一邊安裝目錄配置文件,發現并沒有mysql監控所需的.my.cnf和userparameter_mysql.conf這兩個配置文件
那么我們來配置并添加這兩個文件
.my.conf內容:
[mysql]host=localhostuser=zabbixpassword=123456socket=/tmp/mysql.sock[mysqladmin]host=localhostuser=zabbixpassword=123456socket=/tmp/mysql.sock# 上面的各項信息請參考自己的情況設置,不要直接Copy過去
userparameter_mysql.conf內容:
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].# Key syntax is mysql.status[variable].UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix/ mysql -N | awk '{print $$2}'# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].# Key syntax is mysql.size[,,].# Database may be a database name or "all". Default is "all".# Table may be a table name or "all". Default is "all".# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".# Database is mandatory if a table is specified. Type may be specified always.# Returns value in bytes.# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single tableUserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix/ mysql -N'UserParameter=mysql.ping,HOME=/var/lib/zabbix/ mysqladmin ping | grep -c aliveUserParameter=mysql.version,mysql -V
上面的userparameter_mysql.conf文件為官方默認的,我們需要將文件里的HOME路徑:/var/lib/zabbix/ 修改為.my.cnf存在的路徑,如:/etc/zabbix/agentd/.my.cnf
PS:配置mysql監控前提,最好自己將mysql的全局變量和軟鏈接配置好
文件都配置好了,我們重啟agentd;重啟完成后我們需要到web界面重啟配置mysql監控才能正常和有數據
# service zabbix_agentd restartOR# /etc/init.d/zabbix_agentd restart
第三個問題:
Get value from agent failed: Cannot connect to [127.0.0.1:10050] [Connection refused]
譯文:從代理獲取值失敗:無法連接到[127.0.0.1:10050] [拒絕連接]
排錯思路,依次查看監控代理是否啟動,端口是否正常,配置文件是否正常。
檢查服務啟動和端口監聽情況:
查看系統是否已經有zabbix進程正在運行 # ps aux |grep zabbix 查看系統是否已監聽zabbix server和zabbix agent所使用的10050、10051端口 # netstat -nplut |grep zabbix
檢查端口是否開放,防火墻是否屏蔽等:
# 檢測端口是否正常# telnet 127.0.0.1 10050OR# telnet IP 10050# 檢查配置中的hotsname是否可以解析# ping hostname# 查看防火墻# iptables -L -nOR# less /etc/sysconfig/iptables# 開放端口# iptables -A INPUT -s 127.0.0.1 -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT# iptables -A INPUT -s 127.0.0.1 -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT# 上面兩天是限制IP訪問,下面兩條是任意IP訪問# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10050:10051 -j ACCEPT# iptables -A INPUT -p udp -m state --state NEW -m udp --dport 10050:10051 -j ACCEPT# 保存# service iptables save# 重載或重啟,應用新規則# service iptables restartOR# service iptables reload#重啟方式不局限于這一個,不多描述
PS:hostname不可解析的情況下
1.修改hostname為IP地址,zabbix界面中的hostname和配置文件中的hostname要對應
2.在/etc/hosts中新增解析
127.0.0.1 hostname#hostname 為配置文件的hostname的值,127.0.0.1也可為其它IP
查看配置文件,發現agentd.conf里面的配置文件路徑并沒有啟用
修改配置文件路徑,去掉注釋;重啟agentd
# vim /etc/zabbix/zabbix_agentd.conf# 找到下面內容,取消其中一個的注釋既可;具體情況請根據自己配置來# Include=/etc/zabbix/zabbix_agentd.userparams.conf# Include=/etc/zabbix/zabbix_agentd.conf.d/# Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf# 修改下面一項的值為1,默認為0;意思是啟用自定義文件# UnsafeUserParameters=1
到這里,本次zabbix有關的三個問題和排錯就記錄完了;如有不同意見和不可用之處,歡迎及時提出以便于我們修正



