Zabbix4.4.1系統告警“Zabbix agent is not available (for 3m)”
首先查看Zabbix Agent的日志,找到關鍵出錯信息,日志如下:
cat /var/log/zabbix/zabbix_server.log
由上圖log日志可見,顯示Zabbix Agent無法通過/var/lib/mysql/mysql.sock連接到本地數據庫服務器連接數據庫(但是理論Zabbix Agent是不會連接數據庫的)。
錯誤產生原因解析:
這是由於我們連接數據庫使用的主機名參數為“localhost”,或者未使用主機名參數、服務器默認使用“localhost”做為主機名。 使用主機名參數為“localhost”連接mysql服務端時,mysql客戶端會認為是連接本機,所以會嘗試以socket文件方式進行連接(socket文件連接方式,比“ip:端口”方式效率更高),這時根據配置文件“/etc/mysql.cnf”的路徑,未找到相應的socket文件,就會引發此錯誤。
由於這是一個socket文件,它的默認權限對其他用戶或用戶組是開發讀寫權限的。
確定mysql服務正常運行后,產生此錯誤的原因只剩下“socket”文件路徑不正確了,我們可以使用“find”命令或者“lsof”命令來確定socket文件的正確路徑:
故障解決方法:
修改“/etc/my.cnf”配置文件,在/etc/php.ini文件中"[MySQL]"項下找到"mysql.default_socket",並設置其值指向正確的mysql服務socket文件即可, 在配置文件中添加“[client]”選項和“[mysql]”選項,並使用這兩個選項下的“socket”參數值,與“[mysqld]”選項下的“socket”參數值,指向的socket文件路徑完全一致。如下:
vi /etc/php.ini