Zabbix?Timeout?設(shè)置不當導(dǎo)致的問題及解決方案
今天跟大家分享一個關(guān)于 zabbix Timeout 值設(shè)置不當導(dǎo)致的問題,這個問題不知道大家有沒有碰到過
問題
事情經(jīng)過是這樣的:
把某一臺 zabbix agent 的模板由原來的 Template OS Windows by Zabbix agent 換成了 Template OS Windows by Zabbix agent active

Template OS Windows by Zabbix agent active 使用 主動模式 主動獲取數(shù)據(jù)
Template OS Windows by Zabbix agent 使用 被動模式 等待 Server 請求數(shù)據(jù)
也就是說在主動模式下,Zabbix Agent 主動連接到 Zabbix Server 并發(fā)送監(jiān)控數(shù)據(jù),Zabbix Server 只需監(jiān)聽指定的端口,接收 Agent 發(fā)送過來的數(shù)據(jù)
結(jié)果發(fā)現(xiàn) zabbix server 接收不到數(shù)據(jù)
排查
查看 agent 日志(/var/log/zabbix/zabbix_agentd.log),發(fā)現(xiàn) ZBX_TCP_READ() timed out
8452:20230620:134942.947 active check configuration update from [192.168.149.129:10051] started to fail (ZBX_TCP_READ() timed out) 8452:20230620:135044.072 active check configuration update from [192.168.149.129:10051] is working again 8452:20230620:140049.959 active check configuration update from [192.168.149.129:10051] started to fail (ZBX_TCP_READ() timed out) 8452:20230620:140149.093 active check configuration update from [192.168.149.129:10051] is working again
而且經(jīng)過進一步排查,發(fā)現(xiàn):
- server 節(jié)點運行正常,agent 節(jié)點正常運行
- server 節(jié)點和 agent 節(jié)點之間可以 ping 通,而且 Telnet 端口可用
綜合上面的現(xiàn)象,懷疑是網(wǎng)絡(luò)原因?qū)е?TCP 建立連接時間超時,agent 向 server 發(fā)送數(shù)據(jù)失敗
既然是網(wǎng)絡(luò)原因,那為什么我在修改模板(即被動模式)之前,server 是能夠向 agent 獲取數(shù)據(jù)的
怎么被動模式就沒超時,主動模式就超時了呢?
解決
在 Zabbix 中,timeout(超時)是指在進行監(jiān)控數(shù)據(jù)獲取或傳輸時,等待響應(yīng)的時間限制
在配置文件中如下所示,默認值是 3 s
### Option: Timeout
# Spend no more than Timeout seconds on processing
# Timeout=3
我們分別來看下 server 和 agent 關(guān)于超時時間的配置
#server 端
Timeout=30#agent 端
Timeout=3
可以看到,sever 端設(shè)置的超時時間是 30 s,agent 端設(shè)置的超時時間是 3s,這兩個時間相差太大了吧
如果 agent 的 timeout 設(shè)置得太短,可能會導(dǎo)致一些請求無法完成;而如果 server 的 timeout 設(shè)置得太短,可能會導(dǎo)致 agent 的請求被錯誤地判定為超時
結(jié)合上面的情況,可以得知:
- 主動模式下,agent 向 server 發(fā)送數(shù)據(jù)的時候,agent 端設(shè)置的超時時間是 3s,有可能會出現(xiàn)網(wǎng)絡(luò)原因?qū)е?TCP 建立連接時間超時,server 端獲取不到數(shù)據(jù),就會出現(xiàn)上面的問題
- 被動模式下,server 向 agent 獲取數(shù)據(jù),但是 server 端設(shè)置的超時時間是 30s,這個超時時間可以說是非常大了
我們把 agent 端的超時時間改一下,跟 server 端一致
#agent 端
Timeout=30
重啟 agent 后發(fā)現(xiàn)日志沒有報 started to fail (ZBX_TCP_READ() timed out) 錯,zabbix server 端也能夠獲取數(shù)據(jù)了

總結(jié)一下:
- 在 Zabbix 中,timeout 是指在進行監(jiān)控數(shù)據(jù)獲取或傳輸時,等待響應(yīng)時間的限制
- Agent 和 Server 之間的超時時間設(shè)置應(yīng)該相互協(xié)調(diào),并根據(jù)實際網(wǎng)絡(luò)狀況和環(huán)境來進行調(diào)整。如果 Agent 的 timeout 設(shè)置得太短,可能會導(dǎo)致一些請求無法完成;而如果 Server 的 timeout 設(shè)置得太短,可能會導(dǎo)致 Agent 的請求被錯誤地判定為超時
- 主動模式下 agent 的 timeout 值最好高于 server 配的 timeout 值,被動模式下 server 配的 timeout 值最好高于 agent 的 timeout
If used with the passive agent, Timeout value in server configuration may need to be higher than Timeout in the agent configuration file. Otherwise the item may not get any value because the server request to agent timed out first.
到此這篇關(guān)于Zabbix Timeout 設(shè)置不當導(dǎo)致的問題的文章就介紹到這了,更多相關(guān)Zabbix Timeout 設(shè)置不當內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用zabbix監(jiān)控oracle表空間的操作流程
zabbix是一款極其強大的開源監(jiān)控工具,下面我分享下zabbix如何監(jiān)控表空間,跟著這個思路,監(jiān)控其他項都是類似操作,對zabbix監(jiān)控oracle表空間相關(guān)知識感興趣的朋友一起看看吧2021-06-06
CentOS 6.9 安裝 Zabbix 3.0 的詳細步驟
Zabbix 是一個基于 WEB 界面的,提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級開源解決方案,本文重點研究 Zabbix,使用它的目的是為了更好地監(jiān)控MySQL 數(shù)據(jù)庫服務(wù)器,并生成圖形報表,相較于 Nagios,Zabbix 在這方面功能更為強大,感興趣的朋友一起看看吧2025-04-04
zabbix agent2 監(jiān)控oracle數(shù)據(jù)庫的方法
這篇文章主要介紹了zabbix agent2 監(jiān)控oracle數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具體一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
zabbix通過percona插件監(jiān)控mysql的方法
這篇文章主要介紹了zabbix通過percona插件監(jiān)控mysql的方法步驟詳解,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06

