将Kubernetes事件通知到Slack

目标

    • kubernetesのeventが大好き

 

    Slack中毒

概述

我创建了一个工具。可以在以下链接找到:https://github.com/buildsville/kube-event-watcher

经过

kubernetes事件流中包含了集群发生的事件和节点问题检测器检测到的事件等。这些事件中含有对故障排除有用的信息,有时会悄悄地通过,但在一定时间(默认为1小时)后会消失,并且需要使用kubectl get ev等命令来查看(+希望能够过滤和格式化以提高可读性),让人感觉略微不方便。

在那之后,我开始寻找一个能够很好处理这个问题的好工具

https://github.com/bitnami-labs/kubewatch 这个是用来通知资源变更的,所以与我们现在的目的不同。。

https://github.com/GoogleCloudPlatform/k8s-stackdriver/tree/master/event-exporter/
这正是我需要的,但…
根据他们的说法,事件导出器只导出到Stackdriver。
对于我目前仅限于AWS的情况来说,这是一个不太友好的工具。
实际上,我想要与Slack集成,而不是AWS或GCP这些。

所以,最后找不到,所以我自己做了。

工作

undefined

我现在实际在使用,效果相当不错,对我很有帮助。
关于如何使用,我已经在README中写了,所以这里就不再详细说明了。不过我想写一些关于使用后的感想。

    • 全部受け取ると相当量が多い

楽しいのはほんの最初だけ
podひとつdeployするだけで5個6個と通知が来る…
configでしっかりフィルタリングしよう

重要度が恐ろしくピンキリ

WarningとNormalがあるし当然だが
これもconfigで通知するチャンネルを割り振られるようにした

countをprometheusのmetricsとして出してみたが油断すると描画が重い

メトリクスとしてそれほど重要な項目にはならなそうだけど、もし使うならpromQLできちんと制御するしか

同じeventが短時間にドバドバ出るやつがある

例えばNodeを増やす時に立ち上がるのを待ってる間、 FailedScheduling がすごいたくさん出る
eventのcreateだけを通知するようにすれば最初の1回だけ通知されるが、当然通知してほしいupdateも通知されなくなる

kube-apiserverのflag –event-ttl を短めに調整するなどと組み合わせていい感じにチューニングするか
気になったら都度configを細かく設定してやるか

後からeventの流れを追いたい時にslackだとちょっと厳しい

のでCloudwatchLogsにも出せるようにした

私が知らないだけでそもそもこんなもの必要がないイケてるeventのハンドリング方法があるんじゃないか

最后,这种东西如果不流向能看到的地方,很难见到。这次就到此为止。

追述

这里有一个链接,链接是 ultimateboy 在 Github 上的 slack8s 项目。

bannerAds