フルマネージドなPrometheus + Grafanaサービス「MetricFire」を触ってみた

Kenji Tsutsusmi

2020.10.15

こんにちは。スリーシェイクの大阪オフィスでSREをやっている堤 健二(Kenji Tsutsumi)と言います。

私は、2020年6月にスリーシェイクに入社しました。長年IT業界でエンジニアをやっていまして、インフラ、セキュリティ、ソフトウェア開発、プロジェクト管理、プレセールスなど多数のロールを経験。近年はパブリッククラウド(GCP、AWS)、Kubernetes、Docker、IaCなどなどを携わっています。

さて、ご縁がありまして、アイルランド発のPrometheusとGraphiteのマネージドサービスである「MetricFire」を試す機会があったので、試してみました。

MetricFireは、元々Graphiteという監視ツールでのマネージドサービスが始まりなのだが、現在はPrometheusのマネージドサービスもやっています。最近、日本に上陸したようです。

MetricFire サーバー監視サービス


用意するもの

今回の記事ではKubernetesクラスタの構築やHelmのインストールなどは書きません。別途Googleや各種公式ドキュメントなどをご参照ください。

またMetricFireのトライアルアカウントを事前に作成をお願いします(クレジットカードの登録などは不要です)

監視対象のKubernetesクラスタにPrometheusをデプロイ

MetricFire上で監視するには、監視対象のKubernetesクラスタ(以下、k8sクラスタ)にPrometheusをデプロイする必要があります。デプロイしたPrometheusから、「remote-read」「remote-write」の仕組みを使ってMetricFireに転送します。

まずremote-readおよびremote-writeの設定に必要な情報をMetricFireのコンソール画面より取得します。(左メニューの「Add-Ons」→「Prometheus」)

そして上記情報を参考に、以下のようなyamlファイルを作成します(ファイル名をvalues.yamlとします)

server:
remoteRead:
– url: https://prod.promlts.metricfire.com/read
bearer_token: YOUR_TOKEN_CODE
remoteWrite:
– url: https://prod.promlts.metricfire.com/write
bearer_token: YOUR_TOKEN_CODE

次に、helmを使ってprometheusを監視対象のk8sクラスタにデプロイをします。

### Namespaceの作成
$ kubectl create namespace monitor
### Helmのリポジトリを追加
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
### Prometheusのデプロイ
$ helm -n monitor install prometheus prometheus-community/prometheus -f values.yaml

※参考 https://github.com/prometheus-community/helm-charts

kubectlコマンドで無事にデプロイされていることを確認します。

$ kubectl -n monitor get pods
NAME                                             READY   STATUS    RESTARTS   AGE
prometheus-alertmanager-6c4fb7684d-z4hsj         2/2     Running   0          5h38m
prometheus-kube-state-metrics-6df5d44568-8t662   1/1     Running   0          89m
prometheus-node-exporter-fp6dw                   1/1     Running   0          88m
prometheus-node-exporter-tl7jq                   1/1     Running   0          5h38m
prometheus-node-exporter-ww6mr                   1/1     Running   0          5h38m
prometheus-pushgateway-77784bdf86-njdb7          1/1     Running   0          89m
prometheus-server-58b77d454f-lmmjm               2/2     Running   0          89m

また、「helm get values」コマンドで値が正しく入っていることを確認します。

$ helm -n monitor get values prometheusUSER-SUPPLIED VALUES:
server:
remoteRead:
– bearer_token: YOUR_TOKEN_CODE
url: https://prod.promlts.metricfire.com/read
remoteWrite:
– bearer_token: YOUR_TOKEN_CODE
url: https://prod.promlts.metricfire.com/write

MetricFireのコンソールよりGrafanaダッシュボードを追加する

MetricFireのコンソールメニューの「Dashboards」→「Grafana」でGrafanaに入れます。

一からダッシュボードを作るのもありですが、今回はお試しなので、サクッと構築したいと思います。Grafanaのダッシュボードは、コミュニティによって開発および管理されているので、既存のものをインポートしたいと思います。

Kubernetesで検索を掛けると一番上に出てきた中国語ベースのものが出てきたので、これを使ってみます(一応、私は中国語が読めます)

1 Kubernetes for Prometheus Dashboard CN v20201010 dashboard for Grafana

ただ、MetricFireでは現在Grafanaのバージョンがv6.xが使われているようですので、上のダッシュボードをそのままインポートすると、正しくダッシュボードが表示されません。

中国語で記載があるのですが、一旦jsonファイルをダウンロードして、「table-old」を「table」に置換してください。

如果使用的是grafana 6.x,请下载后编辑该json文件,把table-old替换成table,再导入到grafana即可。

そして、GrafanaのUIの「+」→「import」の画面より先程ダウンロードして編集したjsonファイルをインポートします。

インポート画面

「VictoriaMetrics」を「metricfire-prometheus-v2」に設定してインポートを行うと完成です。

インポート画面の設定
MetricFire Grafana Dashboard(Chinese)

MetricFireを試してみた感想

思っていた以上にセットアップが簡単でした。

MetricFireは、基本的に中身はPrometheusおよびGrafanaなので、Prometheus/Grafanaを使ったことのある人は、すぐに監視ができるようになります。

料金体系も、監視対象が大規模になればなるほどDataDogやMackerel、CloudWatchと比較しても安いというのも特徴です。

細かなところは、MetricFireさんのQiitaの記事もご参照ください。

【MetricFire】 海外で人気の監視ツールを徹底解析! – Qiita

衝撃!!サーバ監視ツールの値段を徹底分析 〜Datadog, CloudWatch, Mackerel, MetricFire〜 – Qiita