1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Compute のカスタムメトリクス取得方法 - Custom Logs Monitoring Plugin 編

1
Posted at

001samune.png

はじめに

本記事は OCI Compute のカスタムメトリクス取得方法 - Custom Logs Monitoring Plugin 編 です。
カスタムメトリクス取得方法の概要については以下記事を参照してみてください。

メトリクスを収集するサービスとしては Prometheus Node Exporter を使います。


使用方法(デモ)

検証構成

検証構成図は以下の通りです。
なお、以下リソースは作成済みで進めていきます。

  • NWリソース
  • OCI Bastion
  • OCI Compute インスタンス
  • IAM ポリシー
  • Node Exporter

architecture.drawio.png

検証では、以下実施していきます。

  • エージェント構成作成
  • 環境コードは以下 GitHub にあげてますので、よかったら覗いてみてください

前提条件確認

以下設定項目は、後述するエージェント構成に加えて設定する必要があります。

  • IAM ポリシー
  • Oracle Cloud Agent の Custom Logs Monitoring Plugin の有効化
  • OCI Monitoring への疎通性
IAM ポリシー

動的グループ (Compute) に、use metrics 権限を付与する必要があります。
本検証では以下のポリシーを作成しています。

allow dynamic-group Compute_Dynamic_Group_Oracle, Compute_Dynamic_Group_Windows to use metrics in compartment oci-compute-custom-metrics-broadcast-custom-logs-monitoring-plugin

上記権限を付与することで、Custom Logs Monitoring PluginOCI Monitoring にメトリクスをプッシュすることが可能となります。

加えて、動的グループ (Compute) に、UNIFIED_AGENT_CONFIG_GENERATE = use log-content 権限を付与する必要があります。
本検証では以下のポリシーを作成しています。

allow dynamic-group Compute_Dynamic_Group_Oracle, Compute_Dynamic_Group_Windows to {UNIFIED_AGENT_CONFIG_GENERATE} in compartment oci-compute-custom-metrics-broadcast-custom-logs-monitoring-plugin

上記権限を付与することで、Custom Logs Monitoring Plugin が エージェント構成情報を取得して、インスタンス内に設定ファイルを取り込めるようになります。

  • 権限とは関係ないですが、インスタンスごとに動的グループを分けています
  • というのも、後述するエージェント構成作成時に、関連付ける動的グループを指定する必要があり、管理をわかりやすくするため分けています
Oracle Cloud Agent の Custom Logs Monitoring Plugin の有効化

OS に関係なく、Custom Logs Monitoring Plugin が有効化されており、Running 状態である必要があります。
図1.png

OCI Monitoring への疎通性

インスタンス内で稼働している Custom Logs Monitoring Plugin からの カスタムメトリクス出力 には、プラグインから Oracle Services Network に所属する OCI Monitoring への疎通性が必要となります。
本構成は以下の通り、インスタンスが所属するプライベートネットワークのルートテーブルに Service Gateway をネクストホップとするルートを設定しています。
image.png

  • NAT Gateway 宛もありますが、こちらはミドルウェアインストールにインターネットと通信が必要なため追加しています
  • 正直、NAT Gateway で外に抜けられるのであれば、Oracle Services Network 宛の TCP/443 を個別に登録する必要はありません

エージェント構成作成

エージェント構成を作成していきましょう。
操作方法と設定項目はOSに関係なく同じなので、適宜読み替えてください。

OCI コンソール左上のハンバーガーマークをクリックし、Observability & ManagementAgent Configurations をクリックします。
図1.png

  • Agent Configurations が2つあります
  • 作成したエージェント構成自体は同期されていますが、それぞれ設定できる内容が異なるので注意

図2.png

Create agent config をクリックします。
図3.png

各設定を入力していきます。
コンパートメント は作成するエージェント構成を所属させたいところを指定します。
注意点としては、OCI Compute に付与しているIAMポリシーの権限範囲に、指定するコンパートメントが含まれているかどうかです。
グループタイプ は今回動的グループとしています。他にもユーザーグループがありますが、これは OCI Compute にAPIキーを登録して権限を付与する場合に用います。本構成では動的グループを介して権限を付与しているので、動的グループとしています。
画像1.png

HTTP Endpoint は、実際にメトリクスを収集しているサービスが公開しているエンドポイントを指定します。Custom Logs Monitoring Plugin は本項目で指定したエンドポイントにポーリングし、OCI Monitoring にプッシュします。
本構成では、インスタンス内で Prometheus Node Exporter を稼働させており、そのサービスが公開しているエンドポイントが http://localhost:9100/metrics なのでそのように指定しています。

Namespace は任意ですが、予約接頭辞 (oci_, oracle_) は使えないので注意。

入力が完了したら Create configuration をクリックして完了です。
画像2.png

  • ちなみに、Monitoring ページの Agent ConfigurationsLogging ページの Agent Configurations が同期されているのがわかりますね

image.png

動作確認

最後、出力されたメトリクスを確認していきましょう。
操作方法はOSに関係なく同じなので、適宜読み替えてください。

  • 確認時にはまりポイントがあったので、番外編 に記載しています

OCI コンソール左上のハンバーガーマークをクリックし、Observability & ManagementMetrics Explorer をクリックします。
図5.png

  • Service Metrics は、OCIサービスが出力するメトリクスのみ確認できる機能です
  • Metrics Explorer は、OCIサービスのメトリクス及びカスタムメトリクスが確認できる機能です

各種項目を入力し、Update Chart をクリックします。
今回は、Linux インスタンス内で事前にサービス化した Nginx のステータスが running のメトリクスを確認します。
画像3.png

クリック後、画面上部に移動すると、問題なく取得できているのが確認できます。
image.png


おわりに

本記事では、Custom Logs Monitoring Plugin 方式についてまとめました。
Management Agent Plugin 方式に比べると、断然導入がしやすい方式ですが、メトリクス取得サービス側 (今回だと Prometheus Node Exporter) でより詳細にフィルタリングしないと、OCI Monitoring にプッシュされるメトリクスが大量になってしまうので、どちらの方式も一長一短だなと感じました。


🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。


番外編

Fluentd の初期設定ファイルに注意

権限、NW疎通性、エージェント構成もインスタンスに読み込まれているのに、なぜかメトリクスがプッシュされない。
そんな時は、Fluentd の設定ファイルを疑ってください。(結構はまった。。。)

  • 設定ファイルが空の場合、OSに関係なく、unified-monitoring-agentサービスを再起動してください
  • それでもだめな場合は、Oracle Cloud Agentサービスを再起動してください

Linux における、インスタンスに読み込まれる初期設定ファイルは以下の通りです。
※OCIDはマスクしています

/etc/unified-monitoring-agent/conf.d/fluentd_config/fluentd.conf
    <source>
        @type openmetrics
        tag ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehoge
        <parse>
            @type openmetrics
        </parse>
        <scrape>
            resource_type URL
            <target>
                name custom-name-3be30b8f-80be-953b-3085-f4e94384cd40
                url  http://localhost:9100/metrics
            </target>
        </scrape>
    </source>

    <filter ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehoge>
        @type  grep
        <regexp>
            key name
            pattern /()/
        </regexp>
        <exclude>
            key name
            pattern /()/
        </exclude>
    </filter>

    <match ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehgoe.**>
        @type oci_monitoring
        compartment  ocid1.compartment.oc1..hogehoge
        metrics_namespace  custom_metrics_namespace_oraclelinux
        <buffer tag>
            @type memory
            queued_chunks_limit_size  20
            flush_thread_burst_interval  0.1
            chunk_limit_records  50
            flush_thread_interval  0.5
            flush_thread_count  10
            flush_interval  2s
            overflow_action  drop_oldest_chunk
        </buffer>
    </match>

Windows における、インスタンスに読み込まれる初期設定ファイルは以下の通りです。
※OCIDはマスクしています

C:\oracle_unified_agent\conf.d\fluentd_config\unified-monitoring-agent.conf
    <source>
        @type openmetrics
        tag ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehoge
        <parse>
            @type openmetrics
        </parse>
        <scrape>
            resource_type URL
            <target>
                name custom-name-4d827a4f-ba4d-5de7-75ea-9e210af7e28f
                url  http://localhost:9182/metrics
            </target>
        </scrape>
    </source>

    <filter ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehgoe>
        @type  grep
        <regexp>
            key name
            pattern /()/
        </regexp>
        <exclude>
            key name
            pattern /()/
        </exclude>
    </filter>

    <match ocid1unifiedagentconfigurationoc1ap-tokyo-1hogehoge.**>
        @type oci_monitoring
        compartment  ocid1.compartment.oc1..hogehoge
        metrics_namespace  custom_metrics_namespace_windows
        <buffer tag>
            @type memory
            queued_chunks_limit_size  20
            flush_thread_burst_interval  0.1
            chunk_limit_records  50
            flush_thread_interval  0.5
            flush_thread_count  10
            flush_interval  2s
            overflow_action  drop_oldest_chunk
        </buffer>
    </match>

見ていただくと分かる通り、<filter>セクションの<exclude>にて全てマッチする正規表現が入っていました。
手動でエージェント構成を作成すると、デフォルトで入っているようです。。

  • Terraform で作成する場合は、作成時に制御できます

なのでもし権限等問題ないのにメトリクスがプッシュされない場合は、設定ファイルを疑いましょう。


参考資料

リファレンス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?