根据POD日志事件监视并采取措施



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

机器人似乎在未知时间与Slack断开,并且永远不会重新连接。我杀死了POD,部署重新创建它,然后再次连接(我们使用Slack RTM选项(。

POD断开连接时将记录以下条目:

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

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

如何根据可以使用kubectl logs pod-name看到的日志监视和采取操作?

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

我会争辩说最佳行动方案是将pagerbot扩展到表面,而不仅仅是字符串在其/ping端点中的字符串 pong,然后将其用作其用作其livelinessProbe,紧随其后的是要教东西要重新连接,因为这几乎肯定比拆除Pod

便宜

说过,您可能会考虑的一种方法是使用POD的服务帐户凭据来监视同胞容器(类似于if kubectl logs -f -c pagerbot $my_pod_name | grep "Closed connection to chat"; then kill -9 $pagerbot_pid; fi类型交易(。这有点尴尬,但是我无法立即想到为什么它不起作用

我最终降落在" livese探测器"上以解决我的问题。我已将以下内容添加到PageyBot部署的部署中:

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

基本上测试以查看是否建立了443的连接,我们注意到机器人断开时会消失。

最新更新