Grafana and Stackdriver

Grafana and Stackdriver

こんにちは、Cloud Monitoring(旧称Stackdriver)おじさんです。
今回はネタ切れと時間の都合諸事情によりGrafanaからCloud Monitoringのデータを可視化してみます。


Grafanaって?

Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture:

Grafana Labs.によって開発されたオープンソースのデータ分析ソフトウェアです。
特徴として、Graphite, Prometheus, Influx DBをはじめとする様々なデータ基盤や、Google Cloud (GCP) Monitoring, AWS CloudWatchなどのモニタリングサービスをデータソースとして持つことができ、データの可視化を一元化することができます。

今回はGoogle Cloud (GCP) Monitoringをバックエンドとし、GCPインスタンスで簡単なグラフを作成することを目標とします。

Grafana Labs
https://grafana.com/

GitHub
https://github.com/grafana/grafana

  • 検証環境
cloud provider Service OS
Google Cloud (GCP) Platform Compute Engine CentOS 7

※インスタンス作成の際、インスタンスに付与するサービスアカウントに roles/monitoring.viewer が設定されている必要があります。

1. Grafana OSS インストール・起動

公式ドキュメントに従い、Grafana OSSのyumリポジトリを設定しインストールを行います。

https://grafana.com/docs/grafana/latest/installation/rpm/

まずはyumリポジトリを設定し…

Plain text
$ sudo vim /etc/yum.repos.d/grafana.repo
Plain text
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

インストールします。

Plain text
$ sudo yum install grafana

そして起動します。

Plain text
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

2. ダッシュボードにアクセスする

statusで起動を確認(Active: active (running))できたら、Webブラウザでダッシュボードにアクセスします。
デフォルトではport 3000を使用しますので、必要に応じてfirewallを設定してください。

http://<EXTERNAL_IP>:3000/

ダッシュボードにアクセスしたら、 usernameとpasswordにそれぞれ admin と入力し、ログインしてください。
デフォルトパスワードでのログイン時にはパスワードの変更を促されますので、画面上の指示に従ってください。

3. datasourceを設定する

Grafanaでは様々なバックエンドに対応しているため、まずは参照するdatasourceを指定する必要があります。
まずはConfigurationボタン(歯車)を選択しましょう。

GrafanaでConfigurationメニューを開く画面

次に、Add data sourceを選択します。

GrafanaでAdd data sourceを選択する画面

下方向へスクロールしていき、Stackdriverを選択します。

Grafanaのデータソース一覧からStackdriverを選択する画面

認証の種別を選択します。
今回はインスタンスのサービスアカウントにroles/monitoring.viewerを付与しているため、GCE Default Service Accountを指定します。
インスタンスのサービスアカウントに必要な権限が付与されていない場合や、GCE以外のサービスを使用する場合(例えばAWSなど)などは、別途必要な権限を持つサービスアカウントを作成し、Upload Service Account key fileからuploadする必要があります。
認証情報を扱うため、可能であれば事前にhttpsでアクセスできるよう設定することが望ましいです。 また、万が一乗っ取られた場合を考慮し、付与する権限は最小限に設定しましょう。

GrafanaのStackdriverデータソースでGCE Default Service Accountを指定する画面

Save & Testを選択し、Successfully~となったらdatasourceの追加は成功です。
次のステップに進みましょう。

GrafanaでStackdriverデータソースの接続テストに成功した画面

4. ダッシュボードの設定

次に、追加されたdatasourceを使用しグラフを作成します。
まずはダッシュボードの追加を選択します。

Grafanaで新しいダッシュボードを追加する画面

次に、Add new panelを選択し、パネルを新規作成します。

Grafanaでダッシュボードに新しいパネルを追加する画面

先ほど追加したdatasourceを選択します。

GrafanaのパネルでStackdriverデータソースを選択する画面

今回は例としてGCEインスタンスのCPU使用率をインスタンスごとに表示するグラフを作成します。

  • ServiceにComputeを設定します。GCEインスタンス
  • MetricにCPU usageを設定します。CPU使用率
  • Group byにmetric.label.instance_nameを設定します。インスタンスごとに
    以上3点を設定することで、例題通りのグラフが設定されました。

GrafanaにGCEインスタンスごとのCPU使用率を表示したグラフ

まとめ

以上、簡単ではありますがCloud MonitoringのメトリクスをGrafanaで可視化しました。 色々お試しいただき、GCE,GKE(Prometheus)とCloud Monitoringのような組み合わせや、AWS CloudWatchとの組み合わせなど、VMやコンテナ、マネージドサービス、マルチクラウドといった複雑化する構成の可視化の助けとなれば幸いです。