根据pod日志事件监视并执行操作

时间:2018-02-27 02:41:59

标签: kubernetes prometheus

我已将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功能吗?

2 个答案:

答案 0 :(得分:0)

我认为最佳行动方案是将pagerbot扩展到表面而不仅仅是/ping endpoint中的字符串文字pong,然后将其用作{{3}} { 1}},紧接着教会重新连接的东西,因为这几乎肯定比拆除Pod更便宜

话虽如此,您可以考虑的一种方法是使用Pod的服务帐户凭据监控兄弟容器(类似于livelinessProbe类型交易)的边车容器。这有点尴尬,但我不能立即想到为什么它不起作用

答案 1 :(得分:0)

我最终登陆了"活动探测"解决我的问题。我已将以下内容添加到pageyBot部署的部署中:

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

基本上测试看看是否为443建立了连接,我们注意到它在僵尸程序断开时消失了。