Pacemaker-记录 ping 检查的结果?

Pacemaker-记录 ping 检查的结果?

我阅读了这一页以及下一页:https://clusterlabs.org/pacemaker/doc/deprecated/en-US/Pacemaker/1.1/html/Pacemaker_Explained/_moving_resources_due_to_connectivity_changes.html

它还解释了如何设置可以链接到资源分配的 ping。

虽然这可行,但如果我有多个 URL 或多个 ping 检查,我怎么知道哪一个失败了?

如果发生这种情况,似乎不会在任何地方记录。它只是发生了,起搏器会做出决定……

阅读此源代码:https://github.com/ClusterLabs/pacemaker/blob/master/extra/resources/ping

似乎需要启用调试环境变量。我宁愿不这样做,因为我必须为此重新启动 Pacemaker,从而搞乱分配,而且现在无论多少额外的日志都会占用磁盘空间。

如果 ping 失败,有没有办法只记录一行,只记录一行,而不影响其他内容?

答案1

事实证明,调试选项不仅仅是一个环境变量,它可以在 ping 资源本身上设置,如下所示:

pcs resource update ping debug=1

唯一的缺点是:日志没有/var/log/pacemaker.log按预期出现在,而是出现在/var/log/syslog

答案2

查看资源代理 (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 中的逻辑。

此外,如果出于某种原因确实需要重新启动 Pacemaker,您可以随时在重新启动maintenance-mode=true之前将集群放入。如果maintenance-mode=true设置了,Pacemaker 即使在重新启动时也不会启动/停止/监控服务。只需记住maintenance-mode=false在完成后进行设置即可。

相关内容