LoginSignup
9
4

More than 5 years have passed since last update.

kubernetesのeventをSlackに通知する

Last updated at Posted at 2019-03-06

対象

  • kubernetesのeventが大好き
  • Slack中毒

要約

ツール作った
https://github.com/buildsville/kube-event-watcher

経緯

kubernetesのeventには、クラスタで起こったイベントや、node-problem-detectorが検出したものなどが流れています。
トラブル時のデバッグに役立つような情報がさりげなく流れてたりするのですが、一定時間(デフォルト1h)経つと消えたり、kubectl get evなどで見ないといけなかったり(+見やすいようにフィルタしたり整形したかったり)微妙に取り回しにくいと感じていました。

そこでこれをいい感じにハンドリングできるよさげなツールがないかと探したところ、

https://github.com/bitnami-labs/kubewatch
これはresourceの変更を通知するものだから今回の目的とは違う…

https://github.com/GoogleCloudPlatform/k8s-stackdriver/tree/master/event-exporter/
まさにこういうのが欲しかった、が…
Event exporter exports only to Stackdriver.
とのことで、現状AWSオンリーの私には非情なツールでした。
というかAWSとかGCPとかじゃなくてSlackと連携したいんす。

で、結局見当たらなかったので作りました。

工作

こんな感じで通知されます

実際に使ってますが、結構いい感じに役立っています。
使い方は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のハンドリング方法があるんじゃないか

結局こういうのって見える所に流れてこないとなかなか見ないものなんですよね。
今回は以上です。

追記

あった…
https://github.com/ultimateboy/slack8s

9
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4