概要

観測可能性パイプラインワーカーの構成は、ログ、メトリクス、トレースを収集し、変換し、任意のソースから任意の宛先にルーティングすることができます。コンフィギュレーションファイルは、YAML、TOML、JSON をサポートします。主な構成要素は、ソース、トランスフォーム、シンクの 3 つです。

サンプルソースを設定する

ソースコンポーネントは、観測可能性パイプラインワーカーが可観測性データソースからどのようにデータを収集し、または受信するかを定義します。

YAML コンフィギュレーションファイルを作成し、以下のソースの例を追加します。

sources:
  generate_syslog:
    type: demo_logs
    format: syslog
    count: 100
[sources.generate_syslog]
   type = "demo_logs"
   format = "syslog"
   count = 100
"sources": {
    "generate_syslog": {
      "type": "demo_logs",
      "format": "syslog",
      "count": 100
    }
}

この source コンポーネントは generate_syslog という一意の ID を持っています。こ一意の ID は sink コンポーネントでデータを変換してルーティングする際に重要です。

type は、観測可能性パイプラインワーカーが観測可能性データを収集するソースの種類です。この例では demo_logs ソースを使用しています。このソースは、さまざまな形式のイベントの種類をシミュレートできるように、サンプルログデータを作成します。format オプションは demo_logs ソースに対して、どのタイプのログを出力するかを指定します (この場合、Syslog フォーマット)。count オプションは demo_logs ソースに対して、何行のログを出力するかを指定します。

サポートされているすべてのソースは、ソースドキュメントをご覧ください。

トランスフォームの例を設定する

次の例を使用して、demo_logs ソースから収集したデータを操作するトランスフォームコンポーネントを定義します。

transforms:
  remap_syslog:
    inputs:
      - generate_syslog
    type: remap
    source: |2
        structured = parse_syslog!(.message)
        . = merge(., structured)
[transforms.remap_syslog]
   inputs = ["generate_syslog" ]
   type = "remap"
   source = '''
     structured = parse_syslog!(.message)
     . = merge(., structured)
'''
"transforms": {
    "remap_syslog": {
      "inputs": [
        "generate_syslog"
      ],
      "type": "remap",
      "source": "  structured = parse_syslog!(.message)\n  . = merge(., structured)\n"
    }
  }

この transforms.remap_syslog コンポーネントでは、inputs オプションが generate_syslog に設定されており、先に定義した generate_syslog ソースからイベントを受信することになります。このトランスフォームのコンポーネントタイプは remap です。

source には、観測可能性パイプラインワーカーが受け取る各イベントに適用する再マッピング変換のリストが含まれています。この例では、parse_syslog という 1 つの処理のみを実行していますが、複数の処理を追加することもできます。

parse_syslog 関数は message という単一のフィールドを受け取ります。このフィールドには、generate_syslog ソースで生成された Syslog イベントが格納されています。この関数は Syslog フォーマットのメッセージの内容をパースして、構造化イベントとして出力します。

この変換例は、ログ、メトリクス、およびトレースを形成し変換するための観測可能性パイプラインワーカーの能力のほんの一部を紹介するものです。サンプリング、フィルター、リッチ化など、サポートされているすべての変換については、トランスフォームのドキュメントを参照してください。

シンクの例を設定する

transform コンポーネントでパースされたデータを、次のシンクの例を使って、宛先にルーティングします。

sinks:
  emit_syslog:
    inputs:
      - remap_syslog
    type: console
    encoding:
      codec: json
[sinks.emit_syslog]
inputs = [ "remap_syslog" ]
type = "console"

  [sinks.emit_syslog.encoding]
  codec = "json"
"sinks": {
    "emit_syslog": {
      "inputs": [
        "remap_syslog"
      ],
      "type": "console",
      "encoding": {
        "codec": "json"
      }
    }
}

この sink (または宛先) コンポーネントは emit_syslog という ID を持ちます。inputs オプションは、remap_syslog トランスフォームによって生成されたイベントをこのシンクで処理することを指定します。encoding オプションは、イベントを JSON フォーマットで出力するようにシンクに指示します。

サポートされているすべてのシンクについては、シンクのドキュメントを参照してください。

ここまでのまとめ

ソース、トランスフォーム、シンクの 3 つの基本コンポーネントが揃えば、これで観測可能性パイプラインのコンフィギュレーションファイルは完成です。

sources:
  generate_syslog:
    type: demo_logs
    format: syslog
    count: 100
transforms:
  remap_syslog:
    inputs:
      - generate_syslog
    type: remap
    source: |2
        structured = parse_syslog!(.message)
        . = merge(., structured)

sinks:
  emit_syslog:
    inputs:
      - remap_syslog
    type: console
    encoding:
      codec: json
[sources.generate_syslog]
type = "demo_logs"
format = "syslog"
count = 100

[transforms.remap_syslog]
inputs = [ "generate_syslog" ]
type = "remap"
source = '''
  structured = parse_syslog!(.message)
  . = merge(., structured)
'''

[sinks.emit_syslog]
inputs = [ "remap_syslog" ]
type = "console"

  [sinks.emit_syslog.encoding]
  codec = "json"
{
  "sources": {
    "generate_syslog": {
      "type": "demo_logs",
      "format": "syslog",
      "count": 100
    }
  },
  "transforms": {
    "remap_syslog": {
      "inputs": [
        "generate_syslog"
      ],
      "type": "remap",
      "source": "  structured = parse_syslog!(.message)\n  . = merge(., structured)\n"
    }
  },
  "sinks": {
    "emit_syslog": {
      "inputs": [
        "remap_syslog"
      ],
      "type": "console",
      "encoding": {
        "codec": "json"
      }
    }
  }
}

この構成をコンパイルして実行するには、以下のコマンドを実行します。

vector --config ./<configuration_filename>

設定に成功すると、パースされたデモログが JSON 形式で出力されます。

その他の参考資料