Datadog の利用料を確認する - GKE 編

こんにちは、京セラコミュニケーションシステム 井筒 (@kccs_naoto-izutsu) です。

ここのところ、業務で GKE に触れる機会が増えてきました。
GKE 環境に Datadog Agent を導入することで、GKE クラスターの稼働状況が可視化されてとても便利だなーと、改めて感じています。

「でも、お高いんでしょ？」と思われる方もおられると思いますので、GKE の Datadog の利用料についてまとめてみたいと思います。

## この記事の対象者

- Datadog に興味がある人
- GKE に Datadog を導入してみたいけど、利用料が気になっている人

## Datadog Agent on GKE の概要

まずは、GKE に Datadog Agent を入れると、どのような状態になるのかを簡単に整理してみます。

GKE に Datadog Agent を入れる場合は、2種類の Agent をセットアップします。

|Agent の種類|K8s 上のリソースタイプ|役割|
|---|---|---|
|Node Agent|DaemonSet|いわゆる Datadog Agent。ノード上で稼働する各種リソースのメトリクスを収集。|
|Cluster Agent|Deployment|Kubernetes Cluster に特化した Agent。クラスタレベルのメトリクス収集や、Node Agent に対してメタデータを提供。|

構成イメージは以下のようになります。
※図は、[Datadog 公式ブログ](https://www.datadoghq.com/ja/blog/datadog-cluster-agent/)から引用させていただきました。同ブログには Cluster Agent の目的や役割が説明されていますので、興味のある方はぜひ読んでみてください。

![Q-0135_001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/e8557f18-7b21-cca3-b630-32739cf6d538.jpeg)

## Datadog 利用料

次に、Datadog の利用料です。
GKE に Datadog Agent を入れると、どのような要素に対して Datadog の課金が発生するのかを見てみます。

### 課金ポイント

GKE における Datadog の課金ポイントは、以下のようになります。

|要素|プロダクト|月額利用料|備考|
|---|---|---|---|
|クラスタノード|Infrastructure|$18/ホスト|Pro プラン、月払い(オンデマンド)|
|コンテナ|Infrastructure|$0.002/コンテナ起動時間1時間あたり|事前購入で $1/コンテナ|

それぞれ見ていきましょう。
※ログやAPMなど、GKE 固有のものではないプロダクトについては、今回の説明では省略します。

#### クラスタノード

Datadog Agent は、DaemonSet として GKE クラスタに展開されます。
これにより、Infrastructure でクラスタノード数に対して課金が発生します。

たとえば、10ノードのクラスタであれば、

> $18 x 10ノード = **$180/月**

となります。

悩ましい点としては、GKE を Autopilot モードで利用している場合です。
Autopilot モードの詳細は割愛しますが、クラスタノードの管理を GCP 側でマネージしてくれるため、ノード数をコントロールすることができません。
利用状況によっては、想定以上にノード数が増えて、Datadog の課金も増える可能性がありますので、注意が必要です。

#### コンテナ

コンテナについては、延べ起動時間に対して課金が発生します。

ここで注意したいのは、Pod ではなくコンテナが対象ということです。
たとえば、1つの Pod にアプリケーション用コンテナと Cloud SQL Auth Proxy コンテナが同居している場合、それぞれのコンテナの起動時間に対して課金されます。

なお、Datadog Agent に関係するコンテナは課金対象外となります。
また、コンテナ以外のワークロードやサービスなども課金対象外です。

### 試算

では、以下の構成を例に利用料を試算してみます。

- ノード数：6 ノード
- コンテナ数：100 コンテナ
  - 計算をシンプルにするため、すべてのコンテナが24時間365日起動すると仮定

それぞれ計算すると、Pro プランの月払いであれば $256.8/月 となります。
1ドル150円とすると **約38,000円** です。

|要素|数量|単価|月額料金|
|---|---|---|---|
|ノード(ホスト)|6|$18|$108|
|コンテナ|100x24x31=74,400|$0.002/1時間あたり|$148.8|

## コンテナ起動時間の確認方法

Infrastructure のホスト数については、Organization メニュー内の [Plan ＆ Usage](https://app.datadoghq.com/billing) で確認できるのですが、コンテナの起動時間は表示されません。

![Q-0135_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/8f031323-391c-2ca8-8e6e-502246c45441.png)

請求書を見るまでコンテナの利用料が分からないのは不安になってしまいますので、ダッシュボードで可視化しておきましょう。

コンテナ起動時間は `gcp.gke.container.uptime` というメトリクスで確認することができます。
以下のように設定することでコンテナの累積起動時間をグラフ化されます。

![Q-0135_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/ed872938-a892-f57b-9dfa-3faa304b3e86.png)

ダッシュボードのJSONは以下のような感じになります。
よろしければ、インポートしてご利用ください。

```json
{
    "title": "コンテナ起動時間",
    "description": "",
    "widgets": [
        {
            "definition": {
                "title": "コンテナ起動時間(Hour)",
                "title_size": "16",
                "title_align": "left",
                "show_legend": true,
                "legend_layout": "auto",
                "legend_columns": [
                    "avg",
                    "min",
                    "max",
                    "value",
                    "sum"
                ],
                "time": {
                    "live_span": "month_to_date"
                },
                "type": "timeseries",
                "requests": [
                    {
                        "formulas": [
                            {
                                "formula": "cumsum(per_minute(query1)) / 3600"
                            }
                        ],
                        "queries": [
                            {
                                "data_source": "metrics",
                                "name": "query1",
                                "query": "sum:gcp.gke.container.uptime{*}.rollup(sum, 3600)"
                            }
                        ],
                        "response_format": "timeseries",
                        "style": {
                            "palette": "dog_classic",
                            "line_type": "solid",
                            "line_width": "normal"
                        },
                        "display_type": "area"
                    }
                ]
            },
            "layout": {
                "x": 0,
                "y": 0,
                "width": 4,
                "height": 2
            }
        }
    ],
    "template_variables": [],
    "layout_type": "ordered",
    "notify_list": [],
    "reflow_type": "fixed"
}
```

なお、メトリクス `gcp.gke.container.uptime` を使用するには、GCP Integration のセットアップが必要です。
GCP Integration のセットアップについては、以下の記事を参照ください。

https://qiita.com/kccs_naoto-izutsu/items/0c6c124070897c9cd227

## まとめ

本記事では、GKE に Datadog を導入した際の利用料を確認しました。

GKE クラスタのリソースキャパシティは足りているのか、ワークロードで問題は起こっていないかなど、モニタリングしたいポイントがたくさんあります。
Datadog を用いることでほどんどの稼働状況をモニタリングすることができ、ノードや Pod がスケールした際も、自動的に追従してくれますので安心です。
GKE のモニタリングでお困りの場合は、Datadog の導入を検討してみてはいかがでしょうか。

弊社では、MSP サービスとして Datadog の導入や活用の支援を行っています。
少しでも興味がありましたら、お気軽にご連絡いただけたらと思います。

https://www.kccs.co.jp/ict/service/msp/

## 免責事項

本記事に記載している内容は、2024年02月時点の情報となります。
記事の内容を筆者の理解をベースに作成したものとなり、実際の内容とは異なる可能性があります。
正確な情報は、必ず Google Cloud や Datadog の公式ドキュメントを参照してください。
また、正確な Datadog 利用料については、請求書の内容を参照してください。