Elasticsearchクエリ

Elasticsearch Query モニターには、この Splunk Observability Cloud インテグレーションを使用してください。メリット、インストール、設定、メトリクスを参照してください

注: このインテグレーションはベータ版です。

Splunk Distribution of OpenTelemetry Collector は、elasticsearch-queryモニタータイプの Smart Agent レシーバーを使用して、Elasticsearch からメトリクス化された集約レスポンスを取得します。このインテグレーションにより、Elasticsearch 集約タイプと集約名に基づいて Splunk Observability Cloud のデータポイントが構築されます。

メリット

インテグレーションを設定すると、これらの機能にアクセスできるようになります:

データモデルの変換

このインテグレーションは、Elasticsearch のレスポンスを Splunk Observability Cloud のデータポイントに変換します。

高いレベルでは、以下のようなタイプの反応を評価します:

  1. terms および filters 集約などの 1 つ以上のバケット集約内のメトリクス集約。データポイントのディメンションは、集約名(ディメンション名)と各バケットの key(ディメンション値)によって決定されます。メトリクス名は、メトリクス集約名のタイプと、複数値集約の場合のその値から派生します。metric_aggregation_type というディメンションも、対応するデータポイントに設定されます。

  2. バケット集約なしで適用されるメトリクス集約は、同じように変換されます。

  3. サブ集約としてメトリクス集約を持たないバケット集約は、<name_of_aggregation>.doc_count と呼ばれるメトリクスに変換され、各バケットの key とは別に bucket_aggregation_name ディメンションを持ちます。

注: バケット集約は Splunk Observability Cloud のディメンションを決定するため、ほとんどの場合、バケット集約は Elasticsearch からのデータの一部を表す string フィールドに対して実行する必要があります。

例:avgメトリクス集計

terms バケット集約のサブ集約としての avg メトリクス集約:

```json
{
"aggs":{
    "host" : {
    "terms":{"field" : "host"},
    "aggs": {
        "average_cpu_usage": {
        "avg": {
            "field": "cpu_utilization"
        }
        }
    }
    }
}
}
```

このクエリの結果は、elasticsearch_query.average_cpu_usage と呼ばれるメトリクスになり、データポイントは host ディメンションを持ち、その値はレスポンス内のバケットの key となります。メトリクス集約のタイプ(avg)は、metric_aggregation_type ディメンションとしてデータポイント上に設定されます。

例えば、以下の json は4つのデータポイントを提供し、それぞれ host の値が異なります:

```json
"aggregations" : {
"host" : {
    "doc_count_error_upper_bound" : 0,
    "sum_other_doc_count" : 0,
    "buckets" : [
    {
        "key" : "helsinki",
        "doc_count" : 13802,
        "average_cpu_usage" : {
        "value" : 49.77438052456166
        }
    },
    {
        "key" : "lisbon",
        "doc_count" : 13802,
        "average_cpu_usage" : {
        "value" : 49.919866685987536
        }
    },
    {
        "key" : "madrid",
        "doc_count" : 13802,
        "average_cpu_usage" : {
        "value" : 49.878350963628456
        }
    },
    {
        "key" : "nairobi",
        "doc_count" : 13802,
        "average_cpu_usage" : {
        "value" : 49.99789885523837
        }
    }
    ]
}
}
```

例:extended_stats メトリクス集約

terms バケット集約のサブ集約としての extended_stats メトリクス集約:

```json
{
"aggs":{
"host" : {
    "terms":{"field" : "host"},
    "aggs": {
    "cpu_usage_stats": {
        "extended_stats": {
        "field": "cpu_utilization"
        }
    }
    }
}
}
}
```

```json
"aggregations" : {
"host" : {
    "doc_count_error_upper_bound" : 0,
    "sum_other_doc_count" : 0,
    "buckets" : [
    {
        "key" : "helsinki",
        "doc_count" : 13996,
        "cpu_usage_stats" : {
        "count" : 13996,
        "min" : 0.0,
        "max" : 100.0,
        "avg" : 49.86660474421263,
        "sum" : 697933.0
        }
    },
    {
        "key" : "lisbon",
        "doc_count" : 13996,
        "cpu_usage_stats" : {
        "count" : 13996,
        "min" : 0.0,
        "max" : 100.0,
        "avg" : 49.88225207202058,
        "sum" : 698152.0
        }
    },
    {
        "key" : "madrid",
        "doc_count" : 13996,
        "cpu_usage_stats" : {
        "count" : 13996,
        "min" : 0.0,
        "max" : 100.0,
        "avg" : 49.92469276936267,
        "sum" : 698746.0
        }
    },
    {
        "key" : "nairobi",
        "doc_count" : 13996,
        "cpu_usage_stats" : {
        "count" : 13996,
        "min" : 0.0,
        "max" : 100.0,
        "avg" : 49.98320948842527,
        "sum" : 699565.0
        }
    }
    ]
}
}
```

この場合、各バケットは5つのメトリクスを出力します:

1. `cpu_usage_stats.count`
2. `cpu_usage_stats.min`
3. `cpu_usage_stats.max`
4. `cpu_usage_stats.avg`
5. `cpu_usage_stats.sum`

ディメンションは前の例と同じ方法で導き出されます。

インストール

このインテグレーションを導入するには、以下の手順に従ってください:

  1. Splunk Distribution of the OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:

  2. [設定] セクションの説明に従ってインテグレーションを設定します。

  3. Splunk Distribution of OpenTelemetry Collector を再起動します。

設定

Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:

  1. Smart Agent レシーバーを設定ファイルに含めます。

  2. レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。

このインテグレーションを有効にするには、Collector構成に以下を追加します:

receivers:
  smartagent/elasticsearch-query:
    type: elasticsearch-query
    ... # Additional config

次に、設定ファイルの service.pipelines.metrics.receivers セクションにモニターを追加します:

service:
  pipelines:
    metrics:
      receivers: [smartagent/elasticsearch-query]

設定オプション

Splunk Distribution of OpenTelemetry Collector がどのように既存の環境を統合し、補完できるかを示す具体的な使用例については、GitHub の設定例を参照してください。

Kubernetesについては、GitHubのkubernetes.yamlでエージェントとゲートウェイのYAMLファイルを参照してください。

Prometheus については、GitHub の Prometheus Federation Endpoint Example で、OTel Collector が Splunk Enterprise と既存の Prometheus デプロイメントでどのように動作するかの例を参照してください。

コンフィギュレーション設定

次の表に、このインテグレーションの設定オプションを示します:

オプション

必須

タイプ

説明

httpTimeout

いいえ

int64

読み取りと書き込みの両方の操作に対する HTTP タイムアウト時間。これは、

https://golang.org/pkg/time/#ParseDuration」が受け付ける継続時間文字列である必要があります。(デフォルト: 10s

username

いいえ

string

各リクエストで使用される Basic Auth ユーザー名 (ある場合)。

password

いいえ

string

各リクエストで使用するBasic Authパスワード (ある場合)。

useHTTPS

いいえ

bool

trueの場合、エージェントはHTTPSを使用してサーバに接続します

プレーン HTTP の代わりに HTTPS を使用します。(デフォルト:false

httpHeaders

いいえ

map of strings

HTTP ヘッダー名と値のマップ。同じメッセージヘッダーの

カンマ区切りの複数の値もサポートしています。

skipVerify

いいえ

bool

useHTTPSがtrueで、このオプションもtrueの場合、エクスポータ

TLS 証明書は検証されません。(デフォルト:false

caCertPath

いいえ

string

TLS証明書に署名したCA証明書へのパス。

skipVerify がfalseに設定されています。

clientCertPath

いいえ

string

TLSが必要な接続に使用するクライアントTLS証明書へのパス

clientKeyPath

いいえ

string

TLSが必要な接続に使用するクライアントTLSキーへのパス

host

string

port

string

index

いいえ

string

クエリ対象のインデックス。何も指定されていない場合、所与のクエリが

すべてのインデックスに適用されます。検索クエリを複数のインデックスに適用するには、インデックスをカンマ区切りで指定します(デフォルト:_all)。

elasticsearchRequest

はい

string

Elasticsearch リクエストボディの検索リクエストを受け取ります。詳細については、

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html の Elasticsearch ドキュメントを参照してください。

メトリクス

Splunk Distribution of OpenTelemetry Collector は、このレシーバーに対してメトリクスの組み込みフィルターリングを行いません。

トラブルシューティング

__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____

_________ __ ______ _____________ _____ _________

_________ __ ___________ _________ ___ ____ _____ _____

  • ___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________

  • ____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______