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 Monitoring, AWS CloudWatchなどのモニタリングサービスをデータソースとして持つことができ、データの可視化を一元化することができます。

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

Grafana Labs
https://grafana.com/

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

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

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

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

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

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

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

$ sudo vim /etc/yum.repos.d/grafana.repo
[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

インストールします。

$ sudo yum install grafana

そして起動します。

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ボタン(歯車)を選択しましょう。

configuration

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

add datasource

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

add datasource

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

add datasource

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

add datasource

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

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

add datasource

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

add datasource

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

add datasource

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

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

まとめ

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