zabbix使用中出現的問題合集


一.[客戶端]重啟 libcurl.so.4: cannot open shared obje

問題:
yum安裝客戶端,重啟zabbix-agent客戶端

/usr/sbin/zabbix_agentd: error while loading shared libraries: libcurl.so.4: cannot open shared obje

解答:
看 /etc/zabbix/zabbix_agentd.conf是否存在,因為zabbix服務識別不到配置文件才會報錯。

看看/etc/zabbix下面是不是有備份或者類似名字的配置文件,修改為zabbix_agentd.conf,這樣服務就可以識別了。修改后重啟客戶端。

二.[客戶端]日志出現(Not all processes could be identified)

場景:一般是自定義監控項時,腳本里使用了netstat這個命令。

權限問題,zabbix_agentd是zabbix用戶啟動的,默認不能執行netstat -p等命令,導致從服務器取到的自動發現腳本為空

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)

解決方法 :
chmod +s /bin/netstat

chmod +s 是為了方便普通用戶執行一些特權命令,SUID/SGID程序允許普通用戶以root身份暫時執行該程序,並在執行結束后再恢復身份。

三.zabbix升級,再重啟服務端后網頁上出現Database error

報錯:

Database error
–The frontend does not match Zabbix database. Current database version (mandatory/optional): 3040000/3040000. Required mandatory version: 3020000. Contact your system administrator.

解答:
未完成

四.重啟客戶端或者服務端出現 [2332]: user zabbix does not exist

重啟zabbix客戶端或服務端
如下:
zabbix_agentd [2332]: user zabbix does not exist
zabbix_agentd [2332]: Cannot run as root!

解答:
創建一個zabbix用戶,如果存在zabbix用戶還是依然這個錯誤,則su - zabbix 再啟動。

用zabbix這個用戶去重啟,如果重啟還不行,切換回root后再重啟,一般就ok了

五.將編譯后的zabbix相關配置文件和東西放到新機器,啟動失敗

將zabbix配置文件整體放到新機器的目錄下,啟動失敗

解答:
還沒知道,不過還原可以
待定

六.zabbix無法啟動,啟動顯示正確,但是沒有端口號

解答:
關閉selinux即可
或者配置selinux策略(LAMP環境):
setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on

導入module注:若沒有audit2allow模板,請安裝selinux-policy* setroubleshoot
yum -y install selinux-policy* setroubleshoot
cat /var/log/audit/audit.log | grep zabbix_server | grep denied | audit2allow -M zabbix-server_setrlimit

生成modulesemodule -i zabbix-server_setrlimit.pp
semodule -i zabbix-server_setrlimit.pp

七.自定義的腳本服務端和客戶端獲得值不一致

前情提要:
自定義zabbix腳本監控mysql,出現在客戶端用zabbix_agentd -t slave_status[Slave_IO_Running]獲得值為0,是正確的

但在服務端用/usr/local/zabbix/bin/zabbix_get -s 192.168.1.14 -k slave_status[Slave_IO_Running]獲得卻為1

原因:
這是因為在服務端執行時用的當前終端,和腳本執行的一樣,而在服務端獲取是獨立的終端。

例如上述腳本需要調用mysql這個命令,但mysql是源碼安裝的,做了環境變量。那在客戶端執行時沒問題的,因為加載了當前的環境變量

如果是服務端執行,會報錯mysql not found,沒有mysql這個命令。因為腳本是對mysql -e "xxx"方式獲得的值進行if判斷,為真則echo 0,為假則echo 1。沒有mysql命令自然返回1了。

因為服務端不加載/etc/profile這種環境變量,他不登錄服務器。

解決辦法:
可以再腳本中寫絕對路徑來避免此類錯誤。也可以用ln -s對命令做一個軟連接,連接到/usr/local/bin/下面。

八.自定義監控項取不到數據,報錯Received value [sudo:sorry,you must have a tty to run sudoi]

報錯信息:
zabbix_agentd -t slave_status[Slave_IO_Running]
Received value [sudo:sorry,you must have a tty to run sudoi]is not suitable for value type [Numeric(unsigend)]

原因:
導致這問題的原因是 sudo默認需要在 tty終端里才能正確被調用,而用的腳本,才會出現這個問題。

解決:
我們可以通過修改 /etc/sudoers配置文件來解決這個問題:
vi /etc/sudoers

#Defaults requiretty #注釋掉此行

九.自定義監控項,檢測報錯ZBX_NOTSUPPORTED: Unsupported item key.

報錯信息:
file

原因:
Zabbix Agent默認的超時時間是3秒。往往我們自定義的Item由於各種原因返回時間會比較長(比如監控mysql,可能4秒后腳本才運行完畢)。所以建議統一修改一個適合自己實際的值。

解決:
vim /etc/zabbix/zabbix_agent.conf

Timeout=8

十.命令行可以取值,在圖形顯示不支持鍵值,看不到值

報錯:
自定義的腳本如下
a是mysql從和主同步時,從慢同步多少秒。
b是上一個a值
只有當上一值大於600,最新值大於600,才會輸出a,也就是該報警了
這樣做防止主執行一個大的事物,導致從瞬間sbm高漲,然后又降低了。
只有上一個值和當前值都很高,才判定有問題。

a=mysql同步慢多少秒
b=`cat /tmp/sbm.tmp`

if [[ $a -ge 600 ]] && [[ $b -ge 600 ]];then
    echo $a
else
    echo 0
fi
echo "$a" >> /tmp/sbm.tmp

結果發現值是灰色的,但用 zabbix_agentd -t 鍵值 來測試沒有問題

原因:
zabbix自定義的腳本不能有輸出或者寫入文件等操作。

解決:
將最后輸出那行刪除就行了

十一.zabbix啟動客戶端報錯libpcre.so.1找不到

報錯如下

/usr/local/zabbix-agent/sbin/zabbix_agentd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

在這里插入圖片描述

find / -name libpcre.so*

在這里插入圖片描述

#里面這個1應該是之前鏈接不行的 或者刪除 再鏈接
ln -s /usr/lib64/libpcre.so.0 /usr/lib64/libpcre.so.1
vim /etc/ld.so.conf
/usr/lib64/libpcre.so.1
ldconfig

在配置文件加上,再去啟動服務
/etc/init.d/zabbix_agentd start

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM