GitHubアドオンを使用してGrafanaでGitHubイベントを表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/b792e5d4-75ab-2555-7c65-c41e37db958e.png)

###問題：
アプリケーションを監視するためにGraphiteとGrafanaをセットアップしましたが、アプリケーションを常に更新していく必要はあります。 Grafanaダッシュボードのメトリックに影響を与える変更をどのように追跡していくことができるでしょうか？
 
**例）**ウェブサイトのウェブサーバーを監視し、ウェブサイトが使用しているリソースの数を確認しています。 次に、バージョン管理としてGitHubを使用して同じサイトで作業している複数の人がいて、1週間でいくつかの変更が加えられました。 サイトへのどのコード変更がサーバーのパフォーマンスに影響を与えたかをどのように知ることができますか？

###解決策：
イベントに関する情報をGrafanaGithubアドオンに自動的に送信するWebhookをGitHubリポジトリに実装すると、この問題に対処することができます。このアドオンは、GrafanaGraphに注釈を直接作成します。 これらのアノテーションは、発生したGithubイベントと変更内容を正確に示してくれるはずです。

この記事では、Githubイベントをグラフの注釈ポイントとして統合して、何が起こっているのかをより明確に把握する方法を示します。 まず、HostedGraphiteのAdd-onをご覧ください。 Hosted Graphiteをまだ試していない場合は、デモを予約し14日間の無料トライアルをゲットしてください。 Hosted Graphiteアカウントにログインすると、[Add-on]セクションにサポートされている注釈アドオンがいくつか表示されます。

#Webhookと注釈
Webhook：APIのように見えるかもしれませんが、少し異なります。 APIは応答を返すために手動のリクエストを必要としますが、Webhookは何かが変更されるたびにペイロードデータを自動的に送信するため、リクエストの手順をスキップします。 Webhook URLを使用すると、ペイロードデータをそのURLに送信することができます。 Webhookがどのように機能するかについての基本的なビジュアルについては、以下の画像を確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/a7ba6734-edea-09d7-79d8-4fdea819d742.png)

###注釈（アノテーション）：
グラフ上の小さな付箋のようなものです。 これらは、グラフのタイムライン中に発生する変更を追跡するのに適しています。 たとえば、Pingdomを使用して注釈を作成し、Webサーバーが停止したときとその原因を確認できます。 イベント、イベントのタイミング、およびほぼ同時に発生したメトリックの変化を比較できれば、問題の原因をよりよく理解できます。

#設定
[MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=GitHub%20Add-on%20Shows%20GitHub%20Events%20in%20Grafana)のHosted Graphiteのセットアップは、オープンソースのGraphiteのセットアップよりもはるかに簡単であるため、HostedGraphiteを使用してこれらのWebhookを統合することをお勧めします。 アドオンするサービスはGitHubであるため、GitHubはイベントが発生したときに通知することができます。

まず、GitHub用のHostedGraphiteのWebhookURLを取得します。 HostedGraphiteインターフェースからWebhookURLを取得し、それをコピーしてGitHubインターフェースに貼り付けます。 [Add-ons]-> [Add-ons]-> [GitHub]に移動すると、GitHub WebhookURLのページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/dfd6ac18-fd59-0103-5c5a-550c3a585c04.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/46074996-7672-381f-c2a7-1a7866a3c81e.png)

Webhook URLができたので、GitHubにデータをURLに送信させることができます。 監視するリポジトリに移動します。 [Settings]、[Webhooks]の順に移動します。 Webhookを追加するためのフォームが表示されます。 ペイロードURL、コンテンツタイプ、HostedGraphiteに送信するイベントの種類などの必要な情報を入力します。 ペイロードURLは、HostedGraphiteのGitHubアドオンページからコピーしたURLです。 記入が終わったら、「Webhookを追加」をクリックします。 下の画像をチェックして、GitHubの「Add Webhooks」ページを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/572bfe1f-8c67-bfca-8ca1-5812ce57efd8.png)

そのWebhookが追加されると、GitHubが更新（プッシュやマージなど）を取得するたびに、HostedGraphiteにデータを送信します。 GitHubがHostedGraphiteにデータを送信していることを確認しましょう。 クイックプッシュを実行してリポジトリ内の何かを変更してから、前に設定したWebhookページを確認します。 下の画像をチェックして、GitHubのプッシュを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/684ddc32-9103-a150-bc27-47c596afed41.png)

次に、GitHubでWebhookページを確認します。 リポジトリのウェブフックタブ（一番下）に[Recent Deliveries]に緑色のチェックが表示されている場合は、GitHubがHosted Graphiteにデータを正常に送信したことを意味します。 送信された各データについて、詳細なレポートを表示することもできます。 ヘッダーを確認して、HostedGraphiteに送信されたGitHubイベントを確認できます。 後でGrafanaダッシュボードを設定して、送信されたデータを表示するときに、このイベントを参照できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/26207b69-4e8a-a74c-bfd3-8f6d32f6e49a.png)

次に、GitHubが送信したデータを表示するようにGrafanaダッシュボードを設定する必要があります。 Hosted Graphiteのメインページから、Dashboardに移動し、次にGrafanaに移動します。 右上隅の設定で、GitHubデータを表示するダッシュボードを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/b48181ea-7e72-ec7e-054c-f76b48f585a5.png)

次に、注釈を追加する必要があります。 [Annotation]に移動してから、[Add Annotation Query]に移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/8dc3cd7a-c118-46d2-25f7-cac6b1ef6507.png)

グラフを取得するデータソースがわからない場合は、デフォルトのHostedGraphiteを使用している可能性があります。 メトリックの追跡を開始したときに別のデータソースを指定しない限り、データソースはHostedGraphiteになります。 その後、イベントタグを指定する必要があります。 カンマ区切りでイベントタグをさらに追加できます。下の画像でGitHubのページのデータを含むアノテーションを編集する方法を確認し、[ドキュメント](https://www.hostedgraphite.com/docs/integrationguide/ig_github.html?&_ga=2.52839208.1662333892.1603353088-2038175526.1567400116#how-to-send-github-commit-data-to-hosted-graphite)で使用できるタグを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/660f9d21-5943-1d15-556b-fa1028c7a627.png)

###結果
ダッシュボードはタイムラインであるため、注釈はグラフに関係なく機能するはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/17ab9e4c-5131-2536-26ab-d4452e6fe27e.png)

これで、ウェブサーバーのグラフのタイムラインで、ウェブサイトのリポジトリがいつ変更されるかを確認できます。 メモリとCPU使用率のメトリックを追跡している場合、プッシュによってサーバーが使用する電力とメモリの量がどのように変化したかを確認できます。 大規模な場合、これは数十台のサーバーをタイムリーに最適化するのに役立ちます。 この記事からの良いポイントは、サービスを簡単に統合するための強力なツールであるWebhookの使用方法でもあります。

Hosted Graphiteについて詳しく知り、[MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=GitHub%20Add-on%20Shows%20GitHub%20Events%20in%20Grafana)が監視環境にどのように適合するかを確認してみたい方、または質問がある場合は、お気軽にデモを予約してください。