LINEで送る
Pocket

ゴールデンウィーク最終日!!

Goのお勉強がてら、mackerel-client-goを使ってオープンアラートの一覧をGoでSlackに通知させるよう作ってみました。公式のslack通知の機能とはどう違うの!?と思いますがツッコまないでくださいな!バッチとかにでも使ってください!!


■必要なドキュメントら

  • mackerel-client-go

https://github.com/mackerelio/mackerel-client-go

  • alerts.go

https://github.com/mackerelio/mackerel-client-go/blob/c64facc02ae71213da9b8a423b3cfeab3c3ea387/alerts.go#L74

  • hosts.go

https://github.com/mackerelio/mackerel-client-go/blob/c64facc02ae71213da9b8a423b3cfeab3c3ea387/hosts.go

  • アラート – Mackerel API ドキュメント (v0)

  • ホスト – Mackerel API ドキュメント (v0)

  • 実装したこと

・アラートType
・Host ID
・Host Name
・ステータス
・メッセージ

をSlackにpostする。

オープンアラートではmkr/apiでHostnameがないため(IDだけじゃわからん)、hosts.goからfor文ですべてのホストを取得、マッピングをする必要があります。その後に、関数からSlackへpostする感じです。
(ちなみに以下はすべてのホストを取得するコード)

https://blog.lorentzca.me/trying-out-go-mackerel-client-library/ より


■RVIRUS0817/mackerel-notification-alerts

https://github.com/RVIRUS0817/mackerel-notification-alerts

  • 準備

  • main.go

49行目の連想配列にすることで、HostID(キー)がHostName(要素)と一致するようにして、31行目で出力したい各パラメーターに渡すだけです。(マッピング)slack通知は以下を参考にしました。

https://qiita.com/yhidetoshi/items/5e47fc8a54eb9f7380ff

  • Slack

実際にcheck-procsで適当にテストアラートを出して実行してみましょう。

もちろんクローズされたときに実行しても通知は来ません。


■まとめ

GoでMackerel関連ツールなんでも作れそう!
他のも試してみます!
Mackerel-client-go使ってGoの勉強最適かもしれぬ。
Goがんばるぞ!!!✊

LINEで送る
Pocket

カテゴリー: GoMackerel

adachin

1989年生まれのランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はDocker開発環境の提供、AWSでのインフラ構築、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください