モバイル/エッジコンピューティングプラットフォームCouchbase Mobileの運用監視について


## はじめに

本稿では、Couchbaseをモバイル/エッジコンピューティングプラットフォームとして活用する場合の、システム運用監視について解説します。

Couchbaseをモバイル/エッジコンピューティングプラットフォームとして活用する意義については、以下の記事をご参考ください。

https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2

## 概要

Sync Gatewayのシステム監視のために、提供されている機能について説明します。
その一例として、Prometheus/Grafanaとのインテグレーションについても解説します。

Sync GatewayのメトリクスREST APIは、以下をカバーします。

- パフォーマンス
- リソース使用率
- サービス正常性


## レポートフォーマット

JSONまたはPrometheusのいずれかレポートフォーマットで統計情報をリクエストすることができます。

### JSONレポートフォーマット

下に示すように、`_expvar`メソッドを使用してリクエストします。

```
curl -X GET "http://localhost:4986/_expvar" -H "accept: application/json"
```

### Prometheusフォーマット

下に示すように、`_metrics`メソッドを使用してリクエストします。

```
curl -X GET "http://localhost:4986/_metrics" -H "accept: application/json"
```

## 統計情報カテゴリー

統計情報のカテゴリー構造は、以下のように整理できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/baee82b7-8763-7ef1-d94f-0d83d51c61d0.png)

詳細は[ドキュメント](https://docs.couchbase.com/sync-gateway/3.0/stats-monitoring.html#sync-gateway-stats-schema)を参照してください。

### 統計情報ライフタイム

統計は、ノードが再起動するたびにリセットされます。つまり、合計、カウント、平均値は、ノードが（再）起動された後の状況を反映した値になります。


## Prometheus/Grafana連携

- **Prometheus**は、オープンソースの監視およびアラートプラットフォームであり、Cloud Native Computing Foundationによってホストされています。その中核となるのは、「Prometheusターゲット」の統計情報をポーリングし、それを時系列データとして保存する役割を担うPrometheusサーバーです。
- **Grafana**は、オープンソースのデータ視覚化およびアラートプラットフォームです。データソースとしてPrometheusをサポートし、包括的なダッシュボードを構築するために使用できます。

### Prometheusターゲット/エクスポーター
Prometheusがシステムを監視するには、そのシステムに対応する「Prometheusターゲット」が必要です。このターゲットは、「エクスポーター」と呼ばれるコンポーネントが担います。エクスポーターはシステムの統計情報をPrometheusにエクスポートする役割を担います。

### Sync Gateway Exporter
Sync Gateway統計情報をエクスポートするために、Sync Gateway Exporterが提供されています。
Sync Gateway ExporterはSync GatewayメトリクスREST APIをポーリングして統計情報を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/c787a63d-1777-7132-c0e0-c26f305b63a8.png)


### アーキテクチャーと各コンポーネントの構成と役割

以下は、ここで解説しているシステム監視のためのアーキテクチャー構成の概念図です。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/08a20527-ba8a-8b78-1c7a-84918e9ff306.png)


#### Sync Gateway Exporterの構成と役割

Sync Gateway Admin REST APIは、デフォルトでは、ローカルホストでのみ公開されます。これは、セキュリティの観点から本番環境でも推奨される構成です。この構成を前提とすると、エクスポーターはSync Gatewayと同じホスト/ノード上にある必要があります。また、Sync Gatewayの統計情報はノードごとにレポートされます。したがって、複数のSync Gatewayノードが存在する場合は、各Sync Gatewayノードにそれぞれエクスポーターが必要になります。

エクスポーターはSync Gateway RESTエンドポイントをポーリングします。

#### Prometheus Serverの構成と役割

Prometheus Serverは、継続的にエクスポーターの統計をポーリングします。

Prometheus Serverはrules.yamlで定義されたルールを使用して、アラートをアラートマネージャーにプッシュします。

#### Grafanaの構成と役割

Grafanaサービスは、Prometheusサーバーの統計をポーリングし、WebブラウザーからアクセスできるWebベースのダッシュボードにグラフ化します。

## まとめ
Sync Gateway Exporterを使用すると、Sync Gatewayの統計情報をPrometheusにエクスポートし、Grafanaなどの視覚化ツールを使用して視覚化できます。
また、Couchbase Serverの統計情報についても、Prometheus用Exporterを利用することができ、同様の構成を取ることが可能です。
Prometheus/Grafanaを利用することにより、Couchbase Mobileソリューション全体の監視が容易に実現可能です。


## 最後に

Sync GatewayをPrometheusと連携する場合のより具体的な内容を以下の記事で発表しています。

https://qiita.com/yoshiyuki_kono/items/c03e3a28125a9d610336

Couchbase Mobileについての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。

https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

本稿で扱っていない、Couchbase Serverについては、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。

https://www.amazon.co.jp/-/en/%E6%B2%B3%E9%87%8E-%E6%B3%B0%E5%B9%B8/dp/429560030X/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=1636588872&sr=1-1

## 関連情報

https://blog.couchbase.com/monitoring-sync-gateway-prometheus-grafana/

https://docs.couchbase.com/sync-gateway/3.0/stats-monitoring.html#introduction