监视并根据 pod 日志事件采取措施
Monitor and take action based on pod log event
我已经将 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. --
我想学习一种监视此日志条目并采取措施的方法。最初我认为 Liveness 探测将是在记录此条目时使用 returns 非零命令的方式。但是日志并没有存储在容器内部(我可以看到)。
您如何根据使用 kubectl logs pod-name
可以看到的日志进行监控和采取措施?
我可以在我们的 Prometheus 测试部署中实现吗?我应该使用已知的 k8s 功能吗?
我认为 最好的 行动方案是将 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
类型的交易)。这有点尴尬,但我无法立即想到为什么它不起作用
我最终登陆 "liveness probe" 来解决我的问题。我已将以下内容添加到 pageyBot 部署的部署中:
livenessProbe:
exec:
command:
- bash
- -c
- "ss -an | grep -q 'EST.*:443 *$'"
initialDelaySeconds: 120
periodSeconds: 60
基本上测试是否为 443 建立了连接,我们注意到当 bot 断开连接时连接消失了。
我已经将 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. --
我想学习一种监视此日志条目并采取措施的方法。最初我认为 Liveness 探测将是在记录此条目时使用 returns 非零命令的方式。但是日志并没有存储在容器内部(我可以看到)。
您如何根据使用 kubectl logs pod-name
可以看到的日志进行监控和采取措施?
我可以在我们的 Prometheus 测试部署中实现吗?我应该使用已知的 k8s 功能吗?
我认为 最好的 行动方案是将 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
类型的交易)。这有点尴尬,但我无法立即想到为什么它不起作用
我最终登陆 "liveness probe" 来解决我的问题。我已将以下内容添加到 pageyBot 部署的部署中:
livenessProbe:
exec:
command:
- bash
- -c
- "ss -an | grep -q 'EST.*:443 *$'"
initialDelaySeconds: 120
periodSeconds: 60
基本上测试是否为 443 建立了连接,我们注意到当 bot 断开连接时连接消失了。