アイルランド発のPrometheusとGraphiteのマネージドサービスである「MetricFire」を試してみました。
フルマネージドなPrometheus + Grafanaサービス「MetricFire」を触ってみた
こんにちは。スリーシェイクの大阪オフィスでSREをやっている堤 健二(Kenji Tsutsumi)と言います。
私は、2020年6月にスリーシェイクに入社しました。長年IT業界でエンジニアをやっていまして、インフラ、セキュリティ、ソフトウェア開発、プロジェクト管理、プレセールスなど多数のロールを経験。近年はパブリッククラウド(GCP、AWS)、Kubernetes、Docker、IaCなどなどを携わっています。
さて、ご縁がありまして、アイルランド発のPrometheusとGraphiteのマネージドサービスである「MetricFire」を試す機会があったので、試してみました。
MetricFireは、元々Graphiteという監視ツールでのマネージドサービスが始まりなのだが、現在はPrometheusのマネージドサービスもやっています。最近、日本に上陸したようです。
用意するもの
- Kubernetesクラスタ(今回はGKE)
- helm v3
- MetricFireの14日トライアルアカウント
今回の記事では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 prometheus USER-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を試してみた感想
思っていた以上にセットアップが簡単でした。
MetricFireは、基本的に中身はPrometheusおよびGrafanaなので、Prometheus/Grafanaを使ったことのある人は、すぐに監視ができるようになります。
料金体系も、監視対象が大規模になればなるほどDataDogやMackerel、CloudWatchと比較しても安いというのも特徴です。
細かなところは、MetricFireさんのQiitaの記事もご参照ください。
【MetricFire】 海外で人気の監視ツールを徹底解析! – Qiita
衝撃!!サーバ監視ツールの値段を徹底分析 〜Datadog, CloudWatch, Mackerel, MetricFire〜 – Qiita