【问题标题】:Monitor and take action based on pod log event根据 pod 日志事件监控并采取行动
【发布时间】:2018-02-27 02:41:59
【问题描述】:

我已将 PagerBot https://github.com/stripe-contrib/pagerbot 部署到我们的内部 k8s 集群作为学习机会。我为它写了一个舵图很开心!

机器人似乎在未知时间断开了松弛,并且从未重新连接。我杀死了 pod,部署重新创建它并再次连接(我们使用的是 Slack RTM 选项)。

Pod 在断开连接时会记录以下条目:

2018-02-24 02:31:14.382590 I [9:34765020] PagerBot::SlackRTMAdapter -- Closed connection to chat. --

我想学习一种监视此日志条目并采取措施的方法。最初,我认为 Liveness 探测将是使用在记录此条目时返回非零的命令的方法。但是日志没有存储在容器内部(我可以看到)。

您如何根据可以使用kubectl logs pod-name 看到的日志来监控和采取行动?

我可以在我们的 Prometheus 测试部署中实现这一点吗?我应该使用已知的 k8s 功能吗?

【问题讨论】:

    标签: kubernetes prometheus


    【解决方案1】:

    我认为 最好的 行动方案是将 pagerbot 扩展到表面,而不仅仅是其 /ping endpoint 中的字符串文字 pong,然后将其用作其 livelinessProbe,并带有紧随其后的是教它重新连接,因为这几乎肯定比拆掉 Pod 便宜

    话虽如此,您可以考虑的一种方法是使用 Pod 的服务帐户凭据来监控兄弟容器的 sidecar 容器(类似于if kubectl logs -f -c pagerbot $my_pod_name | grep "Closed connection to chat"; then kill -9 $pagerbot_pid; fi 类型交易)。这有点尴尬,但我无法立即想到为什么它不起作用

    【讨论】:

      【解决方案2】:

      我最终登陆“活性探针”来解决我的问题。我为 pageyBot 部署添加了以下内容:

          livenessProbe:
            exec:
              command:
              - bash
              - -c
              - "ss -an | grep -q 'EST.*:443 *$'"
            initialDelaySeconds: 120
            periodSeconds: 60
      

      基本上测试是否为 443 建立了连接,当机器人断开连接时,我们注意到该连接消失了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 2013-11-15
        • 2022-01-01
        相关资源
        最近更新 更多