【IBM Cloud】IBM Cloud LogsダッシュボードでTCO Optimizerを構成してみた

## はじめに
今回の記事ではIBM Cloud LogsのTCO Optimizerについての簡単なご紹介とTCO Optimizerを構成する流れについて作成しています。
すでにIBM Cloud Logsのインスタンスを作成していることを前提としていますので、必要に応じて以下の記事もご参考ください。
[①【IBM Cloud】 Log AnalysisからCloud LogsへのLogs Routingサービス変更の流れ](https://qiita.com/Sungyun_Moon/items/1a51879fd2fd478ec84d)
[②【IBM Cloud】 Activity TrackerからCloud LogsへのActivity Tracker Event Routing設定変更の流れ](https://qiita.com/Sungyun_Moon/items/445f44bbbffa975c2905)
[③【IBM Cloud】 Log AnalysisからCloud Logsへのマイグレーションの流れ](https://qiita.com/Sungyun_Moon/items/f3a2ea36eae12c9da7e6)

なお、今回の内容にはIBM Cloudの[アカウント](https://cloud.ibm.com/docs/account?topic=account-accounts)（無料利用可能）も前提となっています。

## TCO Optimizerとは
![スクリーンショット 2024-10-24 12.04.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/f5d7000e-6836-1d50-a2aa-8105f6de8b6c.png)
TCO Optimizerとは、IBM Cloud Logsのログに優先度をつけることでログの表示方法や保管方法を設定し、ログ運用やコストの最適化を実現することができる機能です。
例えば、優先度の高いログにはホットストレージを利用した高速なログ検索、優先度の低いログは低コストで保管、など、ユーザーから定義したポリシーに伴ってログの優先度を選択することができます。
![スクリーンショット 2024-10-24 11.49.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/2787ea87-dfd4-c149-e63b-55bbd8485a65.png)
- Store and search（保管および検索）、Low
    - ICOSに対するログ保管・検索が可能
    - 例：監査に必要なログ
- Analyze and alert（分析とアラート）、Medium
    - 上記機能に加え、アラート通知や処理が必要なログ保管
    - 例：監視や統計分析に使用されるログ
- Priority insights（優先順位の洞察）、High
    - ログを期間限定でSSDに保管 (7〜90日間で指定)
    - 保管期間に応じて、課金額が変更
    - 上記2つの機能に加え、高速検索・クエリ実行が可能
    - 例：優先度の高いログまたはビジネス・クリティカルなログ

:::note warn
Analyze and alertやPriority insightsのアラート機能を利用する場合は、別途Event Notificationsを立ち上げ、IBM Cloud Logsインスタンスと統合させる必要があります。
:::

## 構成の流れ
まずはすでに作成されたIBM Cloud Logsダッシュボードに入り、`データ・パイプライン`→`TCO optimizer`をクリックします。
![スクリーンショット 2024-10-24 13.47.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/7a084228-9ca5-bdc9-989f-13f2e5ef84aa.png)

現在のTCO Optimizerで設定されている優先度が表示されます。
デフォルト設定は Priority insights（High）になっていますので、もしTCO Optimizerの設定を実施したことがなければ、基本全てのログが`Priority insights（High） 100%`と表示されているかと思います。
そのため、今回の構成の流れとしては表示させたいログやイベントはデフォルトの`High`のままにし、あまり重要ではない項目をStore and search（Low）に設定する流れで操作しています。

下段の`Add new policy`をクリックします。
![スクリーンショット 2024-10-24 13.47.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6888150e-843f-9847-9e85-8ee3014ee1f2.png)

ポリシーの設定画面が表示されますが、ここでポリシー名を適宜設定し、設定を行う対象を選択します。
なお、ApplicationsおよびSubsystemsの設定では、値が`All`、`Is`、`Is Not`、`Includes`、または`Starts With` の条件を利用することができて、これは条件に当てはまるログを表示させるためのフィルター機能と理解いただくとイメージしやすいかと思います。
![スクリーンショット 2024-10-24 13.55.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b53a6c94-862b-ce18-4aa1-794d22cef844.png)

設定自体は非常に簡単で、Applications、Subsystems、Severitiesの３項目を入力し、最後重要度を選択する流れとなりますが、ここでApplicationsはログやイベントのルーティング設定などによって作成されたアプリケーション（ibm-platform-logs、ibm-audit-eventなど）であり、Subsystemsはそのログとイベントの括りとなります。最後にSeveritiesは「debug」や「info」などのログの重要度となります。
![スクリーンショット 2024-10-24 14.03.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/72a863af-b253-4adf-3160-b966199b3d13.png)

まずはApplications設定を行いますが、上記の通り値とアプリケーションを選択します。今回は値を`Is`、対象アプリケーションは[過去の記事](https://qiita.com/Sungyun_Moon/items/1a51879fd2fd478ec84d)にてLog Analysisから引っ張ってきたログデータである`ibm-platform-logs`を選択しています。
![スクリーンショット 2024-10-24 13.55.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/1cae90cc-ec8c-ce3c-e4d6-6c6a1f0f4a01.png)

Subsystemsでは値を`Starts With`、項目は`containers-kubernetes`に設定しました。なお、こちらの項目は他にも`databases-for-postgresql`など、設定したい項目を適宜書き込むことができます。
![スクリーンショット 2024-10-24 14.19.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b669959f-6aaf-bcfe-fc8b-a9694e279bb7.png)

Severitiesの設定ですが、上記の通り今回の検証はコスト削減のため重要ではないログをStore and search（Low）に変更する前提のため、表示させなくてもいい`info`と`warning`（正常稼働状態を想定）のみ選択しています。繰り返しとなりますが、ここでも重要度に沿って表示させたい項目、表示させなくてもいい項目などがあれば修正いただいても構いません。
![スクリーンショット 2024-10-24 14.24.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/77cecc23-319d-d216-edf5-cdf871d6a656.png)

最後に優先度の設定ですが、上記のApplications、Subsystems、Severitiesで設定した値の優先度を設定する画面となります。ここで前提のように`Low`を選択します。
![スクリーンショット 2024-10-24 14.35.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/92060170-d683-df4b-0191-357e6c8e6e23.png)

:::note warn
注意：verbose/info/warningなどのSeverityが付与されていないログを受信した場合は、その重要度が`debug`として扱われます。
:::

全てのポリシー設定が完了したら、右上の`Apply`をクリックします。
![スクリーンショット 2024-10-24 14.39.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b922b6a4-0c2e-201e-cdf0-d058e9036843.png)

ポリシー設定後、ダッシュボードをリフレッシュすると、パイプラインの割合が変更されたことを確認できます。繰り返しとなりますが、Store and search（Low）は重要度が低い分、ログ管理機能も最小限で安価なため、このようにコストの最適化を実現することができます。
![スクリーンショット 2024-10-24 14.42.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/c71e8ba0-47f3-c5e4-dc28-939a6cfac913.png)

## 参考
- [IBM Cloud Docs](https://cloud.ibm.com/docs/cloud-logs?topic=cloud-logs-tco-optimizer)