【Prometheus & Grafana】MetricFireでセットアップする方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/72206ca6-afa0-c53c-0501-9c847286adef.png)


Prometheusは優れた監視ツールですが、一時的にメトリクスを保存し読み取るだけのものです。 つまり、長期間のデータを読み解きたい場合、Prometheusにメトリックをストレージソリューションに書き込ませる必要があります。 これが実現する時こそ、MetricFireの出番です。MetricFireは長期的なPrometheusストレージを実行できるPrometheusのマネージドサービスを提供しているため、メトリックのストレージのセットアップやメンテナンスについて心配する必要はありません。ユーザーはPrometheusの監視のみに集中できます。

[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Set%20Up%20Prometheus%20and%20Grafana%20with%20MetricFire)にはHosted Grafanaも付属しているため、メトリックスの可視化を設定する時間と手間がさらに省けます。 この記事では、MetricFireアカウントが必要です。 [こちらをクリック](https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Set%20Up%20Prometheus%20and%20Grafana%20with%20MetricFire)すると、14日間の無料トライアルを取得できます。

Grafanaを使用して監視すると、最終的には次のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/d60d3e65-0f84-92ac-8509-6343254c9c71.png)

このチュートリアルに従って、どのように実行していくのかを確認してください。


#MetricFireのPrometheus構成設定
無料トライアルにサインアップした後、MetricFireダッシュボードからAPIキー設定が必要になります。 この情報は、独自のPrometheusインストールのPrometheus構成ファイルに入れられます。 下の画像のように、MetricFireダッシュボードから、[Add on]> [Prometheus]に移動します。 このコードブロックは、この記事の後半で使用されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/21c8ef04-d6e5-4d3c-4aba-8c46c170f65b.png)

Promethuesをご使用したことがない場合は、以下を読み続けてください。 それ以外の場合は、「prometheus.ymlの変更」セクションまで、スキップしてください。

#Prometheusのセットアップ
以下のチャートは、PrometheusがMetricFireと一緒に機能する方法の例を示しています。 ノードをPrometheusにセットアップし、PrometheusをMetricFireに転送するだけで、MetricFireがメトリックを読み書きできるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/d1c3c868-ff86-e817-1175-0437030bf365.png)

まず、Prometheusとノードエクスポーターをダウンロードします。 Prometheusサイトの[ダウンロードセクション](https://prometheus.io/download/)に進んでください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/49fac6b3-9b76-207b-ca90-0078c8e7f773.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/97be26b6-a43b-e104-7584-f743f59d9760.png)

上の画像から赤い丸で囲まれた部分のリンクの場所を右クリックしてコピーし、ダウンロードURLを取得します。

```
curl -LO URL_FROM_LINKS_ABOVE
```

上記のコードスニペットを使用して、PrometheusをホストするマシンにPrometheusをダウンロードし、監視するマシンにノードエクスポーターをダウンロードします。 上記のコマンドで、「URL_FROM_LINKS_ABOVE」をPrometheusダウンロードセクションから取得したリンクに置き換えます。 下の画像の完全な例を確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/9a8296ea-5286-6843-e1c7-e69c282e16d9.png)

次に、以下のコードスニペットを使用してtar.gzファイルを抽出します。

```
tar -xvf TAR_GZ_FILE_NAME
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/cd29771f-d1ee-c91a-4a8e-a054935a40f9.png)

#prometheus.ymlの変更
Prometheusを実行する前に、構成を編集して、いずれかのノードからメトリックを収集します。 次に、MetricFireにメトリックを送信して、Prometheusメトリックを格納および集約できるようにします。

まず、同じマシン上にある現在のノードをターゲットとするように.ymlファイルを変更します。 以下の画像のように、ifconfigを実行してIPアドレスを見つける必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/954446ae-9212-fc7a-9994-223950a3167e.png)


次に、.ymlファイルに移動して、下の画像のように内容を編集します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/7e307cc5-4a00-a84a-3996-3b53c099c34f.png)

job_nameは、ノードがエクスポートするメトリックの種類にすることができ、ターゲットはノードのリストです。 以下のコードスニペットからコピーして貼り付け、JOB_NAMEとIP_FROM_IFCONFIGを適切に置き換えることができます。

```
global:
 scrape_interval: 5s
scrape_configs:
 - job_name: 'JOB_NAME'
   static_configs:
   - targets: ['IP_FROM_IFCONFIG:9100']

```

最後に、.ymlファイルについて、この記事の最初のビットから取得したコードブロックを追加しましょう。 MetricFireダッシュボードからカスタム構成コードスニペットを取得しました。その方法は、上記の「MetricFireのPrometheus構成設定」セクションで確認できます。 18〜24行目のコードのインデントについては、下の画像を確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/47c0bc90-c438-9a0c-00c6-7682a1d223dd.png)

#PrometheusおよびNode Exporterの実行
すべての設定が完了したので、Prometheusとノードを実行します。 以前に入手した解凍したtar.gzファイルに移動します。 Prometheusフォルダーで./prometheusを実行し、node_exporterフォルダーで./node_exporterを実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/96987f8e-220e-58bd-345b-8ad35c03442f.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/14540907-e84c-528b-da54-331d579be5c2.png)

これで、メトリックスをMetricFireに送信し、メトリックスを格納して集約することができます。 最新のメトリックがいつPrometheusクライアントから送信されたかを確認できるMetricFireダッシュボードに移動して、機能しているかどうかを確認できます。 下の画像で丸で囲んであるのを見てください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/906f9bcd-c2b1-0e57-9602-cdc4186b0813.png)

MetricFireでのGrafanaの使用
ノードを実行し、.ymlファイルを変更してノードとMetricFireをターゲットにし、Prometheusクライアントを実行したら、MetricFireアカウントにPrometheusメトリックを格納および集計する必要があります。

MetricFireにはHosted Grafanaが付属しているため、Prometheusメトリック用のより動的なダッシュボードを使用できます。 また、MetricFireはメトリックストレージを処理しているため、Prometheusメトリックは短期だけでなく長期のグラフを表示できます。

現在受け取っているCPUデータのダッシュボードを作成してみましょう。 下の画像のように、「+Add dashboard」に移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/e7d4595e-0700-e37f-478d-88a9cae19ae1.png)

そして、[Add query]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/f457830c-1046-b743-1af6-3325ef901941.png)

次に、下の画像のように、cpuの合計使用量にクエリを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/eb192b82-e11e-e620-3a1f-93276e1a734c.png)

以下のコードスニペットを使用してクエリに貼り付けると、どのように機能するかを確認できます。 システムとユーザーのみの合計CPUでirateを使用しています。

```
irate(node_cpu_seconds_total{mode=~"system|user"}[1m])
```

#まとめ
このブログ投稿では、PrometheusとGrafanaをMetricFireで設定する方法を示しました。 MetricFireのHosted Prometheusは、すべてのユーザーのすべてのデータに対して3倍の冗長性で最大1年間メトリックを保存します。

クレジットカード不要の[無料トライアル]((https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Set%20Up%20Prometheus%20and%20Grafana%20with%20MetricFire))にサインアップして、開始してみてください。 また、[デモを予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Set%20Up%20Prometheus%20and%20Grafana%20with%20MetricFire)して、MetricFireチームにビデオ通話を依頼してください。 ユーザーがプラットフォームを最大限に活用できるようにサポートさせていただきます。

それでは、次の記事で！