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

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善などの副業、ansibleやterraformでのインフラコード化を推進し、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供、AWSでのインフラ構築、PHPバージョンアップ、CakePHPでのSEO対策とバッチ作成、Wordpressによるコーポレートサイトの修正、分析基盤の運用を担当している。

コメントを残す

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