Pacemaker - 記錄 ping 檢查的結果?
它還解釋瞭如何設置可以連結到資源分配的 ping。
雖然這可行,但如果我有超過 1 個 URL 或超過 1 個 ping 檢查,我怎麼知道哪個失敗了?
如果發生這種情況,似乎沒有記錄在任何地方。它剛剛發生,起搏器做出決定……
閱讀此原始碼:https ://github.com/ClusterLabs/pacemaker/blob/master/extra/resources/ping
似乎需要啟用調試環境變數。我寧願不這樣做,假設我必須為它重新啟動起搏器並因此搞亂分配,再加上任何數量的額外日誌現在都將佔用磁碟空間。
如果 ping 失敗,有沒有辦法只記錄一行,只說這一點,而不影響其他任何事情?
事實證明,調試選項不僅僅是一個環境變數,它可以在 ping 資源本身上設置,如下所示:
pcs resource update ping debug=1
唯一的缺點是:日誌沒有
/var/log/pacemaker.log
按預期出現,而是出現在/var/log/syslog
.
查看資源代理 (RA) 的原始碼,似乎通過將其設置為啟用調試選項
warn
是您想要做的。如果由於某種原因該行為不是您想要的,則如下所示更改函式中的
1)
case 語句ping_check()
(ping RA 中的第 305 行)可能是您要查找的內容:ping_check() { active=0 for host in $OCF_RESKEY_host_list; do p_exe=ping case $(uname) in Linux) p_args="-n -q -W $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts";; Darwin) p_args="-n -q -t $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts -o";; FreeBSD) p_args="-n -q -t $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts -o";; *) ocf_log err "Unknown host type: $(uname)"; exit $OCF_ERR_INSTALLED;; esac case "$host" in *:*) p_exe=ping6 esac ping_output=$($p_exe $p_args $OCF_RESKEY_options $host 2>&1); rc=$? case $rc in 0) active=$(expr $active + 1) if [ $OCF_RESKEY_debug -gt 1 ]; then ping_conditional_log info "$ping_output" fi ;; 1) ocf_log warn "$host is inactive: $ping_output";; *) ocf_log err "Unexpected result for '$p_exe $p_args $OCF_RESKEY_options $host' $rc: $ping_output";; esac
但是這種更改看起來將遵循與設置 param 相同的邏輯
debug=warn
。我沒有對此進行測試,只是遵循 RA 中的邏輯。
maintenance-mode=true
此外,如果您出於某種原因確實需要重新啟動 Pacemaker,您始終可以在這樣做之前將集群放入其中。如果maintenance-mode=true
設置 Pacemaker 即使在重新啟動時也不會啟動/停止/監控服務。完成後請記住設置maintenance-mode=false
。