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がんばるぞ!!!✊

Pocket

カテゴリー: GoMackerel

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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