kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

OpenTelemetry Collector Contribを眺めてみる - Carbon ReceiverによるCarbon形式メトリック投稿編

MackerelでのOpenTelemetry対応パブリックベータの提供が開始したので、Mackerel CREの私も習熟すべくいろいろと実験をしています。

mackerel.io

ホストやミドルウェアのメトリックを取得しようというときにはOpenTelemetry CollectorのReceiverでメトリックを収集し、ExporterにMackerelのOTLPエンドポイントを示して投稿、というのが王道なのですが、今回はあえて「Mackerelの既存のメトリックプラグインの出力をOpenTelemetryのメトリックとして送ってみる」ということを試してみました。

結論から言えば、(加工は少し必要ですが)ContribにあるCarbon Receiverで実現できます。

Carbon Receiverとは

OpenTelemetry Collector ContribのReceiverにひととおり目を通した中で、「Carbon Receiver」というものがありました。

carbonreceiver: Carbon Receiver beta、メトリクス GraphiteのコンポーネントであるCarbonのプレインテキストプロトコルのメトリクスを取得する。

実はMackerelのメトリックはこのCarbon形式にほぼ同じで、「メトリック名 (タブ) メトリック値 (タブ) UNIX時間」という構成になっています(参照: 「ホストのカスタムメトリックを投稿する」)。

つまり、このCarbon Receiverを起動して待ち受けさせ、任意のMackerelメトリックプラグインの実行結果を送れば、OpenTelemetryメトリックへの変換および投稿をReceiverとCollectorに任せられるというわけですね。

OpenTelemetry Collectorのセットアップ

Collectorセットアップについては「Mackerel で OpenTelemetry のラベル付きメトリックを使ってみよう」などに詳しいので、ここではざっくり説明のみに留めます。

CollectorはDockerイメージやdebパッケージなども提供されていますが、試行錯誤段階ではバイナリをフォアグラウンド実行するだけのほうがテストしやすいので、リリースページからlinux_amd64のtar.gzアーカイブを取得して展開して使うことにしました。

$ tar xf otelcol-contrib_0.97.0_linux_amd64.tar.gz
$ ./otelcol-contrib components
  ...
receivers:
  ...
    - name: carbon
      stability:
        logs: Undefined
        metrics: Beta
        traces: Undefined
  ...

次に、Mackerel投稿のためのYAMLファイルを書きます。ファイル名は何でもよいのですが、雑にconfig.yamlとして進めます。

receivers:
  carbon:
    endpoint: localhost:2003
    transport: udp

processors:
  batch:

exporters:
  otlp/mackerel:
    endpoint: otlp.mackerelio.com:4317
    compression: gzip
    headers:
      Mackerel-Api-Key: ${env:MACKEREL_APIKEY}
  debug:
    verbosity: detailed

service:
  pipelines:
    metrics:
      receivers: [carbon]
      processors: [batch]
      exporters: [otlp/mackerel, debug]

Carbon Receiverのデフォルトでは、エンドポイント(endpoint)が0.0.0.0:2003、トランスポートプロトコルtransport)がtcpですが、これを変更しました。前者は単にローカルのホスト内でしか使わないためというだけなので、ほかのホストからも投稿するような構成であれば、適切なバインド範囲にするのがよいでしょう。TCPでなくUDPに変えたのは、このCarbon Receiverは送信者に対して何も反応を返さないし、メトリックの投稿保証はさほど意味がなく、投げっぱなしでさっさと終わらせたほうが妥当であろうという判断です。

batchについては本番ではバッチ処理にとりまとめることが推奨されていますが、今の時点では送られたらすぐにログ表示やMackerel上で見たいので、設定を空にしています。

exportersではMackerelのOTLPエンドポイントに送るotlp/mackerelとともに、コンソールに状態を出力するdebugを定義しています。

では、環境変数MACKEREL_APIKEYにMackerelオーガニゼーションの書き込み可能APIキーを設定し、otelcol-contribを実行します。

$ export MACKEREL_APIKEY=<APIキー>
$ ./otelcol-contrib --config config.yaml
2024-03-27T20:23:28.111+0900    info    service@v0.97.0/telemetry.go:55 Setting up own telemetry...
  ...
2024-03-27T20:23:28.112+0900    warn    localhostgate/featuregate.go:63 The default endpoints for all servers in components will change to use localhost instead of 0.0.0.0 in a future version. Use the feature gate to preview the new default.       {"feature gate ID": "component.UseLocalHostAsDefaultHost"}

これでCarbon ReceiverがUDPポート2003で待ち受ける状態になりました。

$ lsof -i udp:2003
COMMAND       PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
otelcol-c 3100447 kmuto    9u  IPv4 14363690      0t0  UDP localhost:2003

投稿してみる……おやおや?

ではさっそく投稿してみましょう。

Mackerelメトリックプラグインなら何でもよいですが、ContribのReceiverにはなさそうなものとして、Linuxのnf_conntrackのメトリックを取得するmackerel-plugin-conntrackを使ってみることにします。

$ mackerel-plugin-conntrack
conntrack.count.used     71      1711049726
conntrack.count.free    262073  1711049726

ncコマンドで雑にこれをCarbon Receiverに向けます。

$ mackerel-plugin-conntrack | nc -u -w 1 localhost 2003

-uUDP-wタイムアウトを指定しています(UDPだとCarbon Receiver側からクローズすることもないので、送信者側で終わらせます)。

しかし、これを実行してもCollector側には何も反応がありません……おやおや?

Carbon形式といったな、あれは嘘だ

何かおかしいので、大元のGraphiteのサンプルで試してみることにします。

$ echo "local.random.diceroll 4 `date +%s`" | nc -u -w 1 localhost 2003

おやおや、これは正しく送られますね。

2024-03-27T20:36:49.324+0900    info    MetricsExporter {"kind": "exporter", "data_type": "metrics", "name": "debug", "resource metrics": 1, "metrics": 1, "data points": 1}
2024-03-27T20:36:49.324+0900    info    ResourceMetrics #0
Resource SchemaURL: 
ScopeMetrics #0
ScopeMetrics SchemaURL: 
InstrumentationScope  
Metric #0
Descriptor:
     -> Name: local.random.diceroll
     -> Description: 
     -> Unit: 
     -> DataType: Gauge
NumberDataPoints #0
StartTimestamp: 1970-01-01 00:00:00 +0000 UTC
Timestamp: 2024-03-27 11:36:49 +0000 UTC
Value: 4
        {"kind": "exporter", "data_type": "metrics", "name": "debug"}

ここで、最初に以下のように書いていました。

MackerelのメトリックはこのCarbon形式にほぼ同じで、「メトリック名 (タブ) メトリック値 (タブ) UNIX時間」という構成になっています

「ほぼ」が曲者で、GraphiteのCarbon形式はスペース区切りなのに対し、Mackerelはタブ区切りです。いかにも怪しいですね。

タブをスペースに変更する手段はいくつかありますが、ここではシンプルにexpandコマンドでタブ1文字を1スペースに変換してみましょう。

$ mackerel-plugin-conntrack | expand -t 1 | nc -u -w 1 localhost 2003

来ましたね。

2024-03-27T20:50:39.130+0900    info    ResourceMetrics #0
Resource SchemaURL: 
ScopeMetrics #0
ScopeMetrics SchemaURL: 
InstrumentationScope  
Metric #0
Descriptor:
     -> Name: conntrack.count.used
     -> Description: 
     -> Unit: 
     -> DataType: Gauge
NumberDataPoints #0
StartTimestamp: 1970-01-01 00:00:00 +0000 UTC
Timestamp: 2024-03-27 11:50:39 +0000 UTC
Value: 108
Metric #1
Descriptor:
     -> Name: conntrack.count.free
     -> Description: 
     -> Unit: 
     -> DataType: Gauge
NumberDataPoints #0
StartTimestamp: 1970-01-01 00:00:00 +0000 UTC
Timestamp: 2024-03-27 11:50:39 +0000 UTC
Value: 262036
        {"kind": "exporter", "data_type": "metrics", "name": "debug"}

PromQLの内容を「conntrack.count.used」としたクエリグラフをダッシュボードに配置してみます。

メトリック名を分解し、ラベルにする

投稿されたメトリックはconntrack.count.used、conntrack.count.freeという一見階層化された名前なのですが、OpenTelemetryのメトリックとして考えると、これは単にそれぞれ固有の名前なだけで関係性がありません。クエリグラフなどでの扱いが不便なので、OpenTelemetryのメトリックらしく多次元のラベルに分解することにします。

これはCarbon Receiverが機能として提供しており、メトリック名を正規表現で分解して任意のラベルにできます。

receivers:
  carbon:
    endpoint: localhost:2003
    transport: udp
    parser:
      type: regex
      config:
        rules:
          - regexp: "(?P<key_svc>conntrack)\\.(?P<key_indicator>[^.]+)\\.(?P<key_allocation>.+)"
            name_prefix: "conntrack"

type: regex正規表現パーサを利用することを宣言し、設定をconfig:の下のrules:に並べていきます。ルールは最初にマッチしたものが採用されます。

各ルールではregexp正規表現name_prefixでOpenTelemetryのメトリック名プレフィクスを指定します。regexpの中では?P<key_〜>によってラベル名を表し、値はそのマッチ文字列となります(〜部分がラベル名と解釈されます)。つまり、この正規表現ではconntrack.count.usedは{svc='conntrack', indicator='count', allocation='used'}というラベル・値に分割されます。

otel-contribを実行し直し、メトリックを投稿します。

Metric #0
Descriptor:
     -> Name: conntrack
     -> Description: 
     -> Unit: 
     -> DataType: Gauge
NumberDataPoints #0
Data point attributes:
     -> svc: Str(conntrack)
     -> indicator: Str(count)
     -> allocation: Str(used)

それっぽく分割されているようです。Mackerelのクエリグラフも変更してみましょう。今度はPromQLの内容を「conntrack」とします。allocationラベルの値であるusedとfreeの2つの系列が存在するグラフになるので、見やすくなるよう「凡例」の値に「allocation」、「表示」に「{{allocation}}」を指定しておきます。

見事に2つの系列が表示されました!

実際の定期投稿のためには、cronなどを使って1分ごとに実行するのがよいでしょう。コマンドライン上で簡単に試すのであれば、たとえば以下のようにsleepコマンドを使えます。

while /bin/true; do
  date
  mackerel-plugin-conntrack |expand -t 1 | nc -u -w 1 localhost 2003
  sleep 60s
done

Carbon Receiverを改変する

さて、スペース区切りで処理されているためにexpandを挟むような特別な措置が必要でしたが、Carbon Receiverを改変してタブも許容するようにするのはいかにも簡単そうです。

どこかな、とコードを探ったところ、以下のようにどストレートな処理をすぐに見つけました(path_parser_helper.go)。

parts := strings.SplitN(line, " ", 4)

タブも含む任意スペース区切りに変えればよさそうですね。

re := regexp.MustCompile(`\s+`)
parts := re.Split(line, 4)

OpenTelemetry Collectorのちょっとわかりにくい概念として(そして今回のようにCarbon Receiverを使ってみようとした動機として)、改変をするにはCollectorごとビルドし直す必要があります。

ついでにCarbon Receiverと最低限のコンポーネントだけになるようにしてみます。

まずはReceiverの該当コードを変更します。

$ git clone https://github.com/open-telemetry/opentelemetry-collector-contrib.git
$ cd opentelemetry-collector-contrib
(receiver/carbonreceiver/protocol/path_parser_helper.go に上記の改変を施す)

ビルドし直しについてはMackerelの「OpenTelemetry コレクターでホストメトリックを Mackerel に送信する」でも紹介がありますね。

OpenTelemetry Collector Builderをインストールします。

$ go install go.opentelemetry.io/collector/cmd/builder@latest

次にマニフェストファイルを用意します。こちらも名前は何でもよいのですが、manifest.yamlとしておき、opentelemetry-collector-contribフォルダ内に配置することにしました。

dist:
  name: otelcol-custom
  description: OTel Collector with Carbon Receiver modified for Mackerel
  output_path: ./dest

receivers:
   - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver latest
   - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver latest

processors:
   - gomod: go.opentelemetry.io/collector/processor/batchprocessor latest

exporters:
   - gomod: go.opentelemetry.io/collector/exporter/otlpexporter latest
   - gomod: go.opentelemetry.io/collector/exporter/debugexporter latest

replaces:
   - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver => ../receiver/carbonreceiver

dist:で生成物類を設定し、receivers:processors:exporters:にはCollectorに含めたいコンポーネントを指定します。

そして、replaces:ではcarbonreceinverフォルダの実際の場所を変更しています。「..」としているのは、Collectorがdistで指定しているoutput_pathのフォルダ内でビルドされる都合上、そこからの相対位置で見る必要があるからです。

ビルドはこのYAMLファイルを指定するだけです。

$ builder --config manifest.yaml

destフォルダにotelcol-customバイナリができます。otelcol-contribのほうは終了させて、otelcol-customバイナリでconfig.yamlを使って試してみましょう(以下ではホームにconfig.yamlがあるものとしています)。

$ dest/otelcol-custom --config ~/config.yaml

この版のCollectorであれば、タブ区切りのまま送信しても、メトリックとして受け付けられます!

$ mackerel-plugin-conntrack | nc -u -w 1 localhost 2003

パッチとしてPR提出しようかと思ったものの、タブ区切りのCarbon形式を使っているほかのサービスが思いつかないので、二の足を踏んでいます。いっそforkしてmackerelreceiverにしてしまうほうがよいのかもしれません。

まとめ

ということで、Carbon Receiverを使えば、Mackerelメトリックプラグインの出力をOpenTelemetryのエコシステム(Mackerelも含む)に乗せられます。作り込んだメトリックプラグインが存在する場面での手法の一案としていかがでしょうか。

なお、mackerel-agentの出力ごと持っていけないものかというチャレンジも少ししてみたのですが、APIサーバーに問い合わせるロジック(idファイル生成など)がいくつか存在するため、そのあたりをうまく吸収できないと難しそうではありました。mackerelagentreceiverを実装してみるのも面白いかもしれませんね。

Happy Hacking!

OpenTelemetry Collector Contribを眺めてみる - receiver編

OpenTelemetryブームなので、実際今Collectorでどこまですぐに(何かを自作せずに)監視したいもの、特にミドルウェアまわりが見られるのか、というのを把握しておこうと思う。

opentelemetry-collector-contribリポジトリのまずはreceiverを一覧してざっとREADMEを見て回るところから始めた。

github.com

箇条書きのalpha、betaといったものは安定度(stability)で、development→alpha→beta→stableというステージになっているとのこと。実際のところcontribにあるものでstableなものはなく、developmentやalphaがゴロゴロしている状況。

renovate系更新が多いので、改良具合は見通しが悪い。新規フォルダが作られるのとREADMEを追跡するのがいいのかな。

activedirectorydsreceiver: Active Directory Domain Services Receiver

  • beta、メトリクス

WindowsパフォーマンスカウンタからActive Directoryドメインコントローラに関するメトリクスを取得する。

aerospikereceiver: Aerospike Receiver

  • alpha、メトリクス

1つ以上のAerospikeノードからパフォーマンスメトリクスを収集する。AerospikeはNoSQL DB。

apachereceiver: Apache Web Server Receiver

  • beta、メトリクス

Apache HTTPサーバのserver-status?autoエンドポイントを利用して状態を取得する。

apachesparkreceiver: Apache Spark Receiver

  • development、メトリクス

Apache SparkクラスタからApache Spark REST APIを使ってメトリクスを収集する。

awscloudwatchmetricsreceiver: CloudWatch Metrics Receiver

  • development、メトリクス

AWS CloudWatchからAWS SDK for CloudWatch Logs経由でメトリクスを収集する。GetMetricData APIコールはお金かかるよ、という注意あり。

awscloudwatchreceiver: Cloudwatch Receiver

  • alpha、ログ

AWS CloudWatchからAWS SDK for CloudWatch Logs経由でCloudWatch eventsを受け取る。

awscontainerinsightreceiver: AWS Container Insights Receiver

  • beta、メトリクス

CloudWatch Container Insights経由でメトリクスを取得する。ECS、EKSおよびEC2上k8s向け。

awsecscontainermetricsreceiver: AWS ECS Container Metrics Receiver

  • beta、メトリクス

Amazon ECS Taks Metadata Endpoint経由でタスクメタデータとDockerステータスを読み、リソース利用メトリクスを取得する。

awsfirehosereceiver: AWS Kinesis Data Firehose Receiver

  • alpha、メトリクス

AWS Kinesis Data Firehose配送ストリームメッセージおよび受け取ったレコードを解析する。

awsxrayreceiver: AWS X-Ray Receiver

  • beta、トレース

X-Rayセグメント形式のセグメントを受け取る。

azureblobreceiver: Azure Blob Receiver

  • development、ログおよびトレース

Azure Blob Storageのログおよびトレースデータを受け取る。

azureeventhubreceiver: Azure Event Hub Receiver

  • alpha、メトリクスおよびログ

AzureリソースからAzure Event Hubに書き出されたログを取得する。

azuremonitorreceiver: Azure Monitor Receiver

  • development、メトリクス

Azure Monitor APIからリソースメトリクスを取得する。

bigipreceiver: F5 Big-IP Receiver

  • beta、メトリクス

F5 Big-IPノードの状態をiControl REST APIで取得する。

carbonreceiver: Carbon Receiver

  • beta、メトリクス

GraphiteのコンポーネントであるCarbonのプレインテキストプロトコルのメトリクスを取得する。

chronyreceiver: Chrony Receiver

  • alpha、メトリクス

NTPサーバのChronyのメトリクスを取得する。

cloudflarereceiver: Cloudflare Receiver

  • alpha、ログ

Cloudflare logsアグリゲーションシステムからLogPush Jobsで送られたログを受け取る。

cloudfoundryreceiver: Cloud Foundry Receiver

  • beta、メトリクス

Cloud Foundyのリバースログプロキシゲートウェイのメトリクスを取得する。

collectdreceiver: CollectD write_http plugin JSON receiver

  • beta、メトリクス

CollectDのwrite_httpプラグインからエクスポートされたデータを取得する。

couchdbreceiver: CouchDB Receiver

  • beta、メトリクス

CoutchDBサーバから/node/ノード名/stats/coutchdbエンドポイント経由で状態を取得する。

datadogreceiver: Datadog APM Receiver

  • alpha、トレース

Datadog APM形式のトレースを受け取る。

dockerstatsreceiver: Docker Stats Receiver

  • alpha、メトリクス

ローカルDockerデーモンのコンテナ状態(CPU・メモリ・ネットワーク・blkioコントローラ)を取得する。

elasticsearchreceiver: Elasticsearch Receiver

  • beta、メトリクス

node stats、cluster health、index statsのエンドポイントからElasticsearchクラスタのメトリックを取得する。

expvarreceiver: Expvar Receiver

  • alpha、メトリクス

Goのexpvarパッケージからのメトリクスを取得する。

filelogreceiver: Filelog Receiver

  • beta、ログ

ファイルの追尾および解析を行う。

filestatsreceiver: File Stats Receiver

  • beta、メトリクス

globパターンで指定したファイルからメトリクスを取得する。

flinkmetricsreceiver: FlinkMetrics Receiver

  • alpha、メトリクス

Apache FlinkのJobmanger、Taskmanager、Job、Task、Operatorのメトリクスを取得する。

fluentforwardreceiver: Fluent Forward Receiver

  • beta、ログ

Fluent Forwardプロトコル経由でのイベントを受け付けるTCPサーバーを実行する。

gitproviderreceiver: Git Provider Receiver

  • development、メトリクス

Gitベンダーからのデータを収集する。たとえばGitHubからリポジトリカウント、ブランチカウント、PR open countなどをメトリクスとして取得できる。

googlecloudpubsubreceiver: Google Pubsub Receiver

  • beta、トレース、ログ、メトリクス

Google Cloud PubsubサブスクリプションからのOTLPメッセージを取得する。

Collibra社によってテストされているがGCP公式ではないという注意がある。

googlecloudspannerreceiver: Google Cloud Spanner Receiver

  • beta、メトリクス

SpannerのTotal and Top N built-in tables経由でデータベースのメトリクスを取得する。

haproxyreceiver: HAProxy Receiver

  • beta、メトリクス

HAProxyプロセスのメトリクスを取得する。

hostmetricsreceiver: Host Metrics Receiver

  • beta、メトリクス

ホストシステムのメトリクスを生成・取得する。エージェント相当。

httpcheckreceiver: HTTP Check Receiver

  • development、メトリクス

ステータスコードなどをメトリクスとして取得する。HTTPエンドポイントに対するsynthetic checkとして利用できる。

iisreceiver: Microsoft IIS Receiver

  • beta、メトリクス

IISインスタンスのメトリクスをWindowsパフォーマンスカウンタ経由で取得する。

influxdbreceiver: InfluxDB Receiver

  • beta、メトリクス

InfluxDB Line Protocolとしてメトリクスデータを取得する。

jaegerreceiver: Jaeger Receiver

  • beta、トレース

Jaegerフォーマットのトレースデータを受け取る。

jmxreceiver: JMX Receiver

  • alpha、メトリクス

OpenTelemetry JMX Metric Gathererと連携してMBeanサーバからのメトリクスを受け取る。

journaldreceiver: Journald Receiver

  • alpha、ログ

journaldイベントを解析する。

k8sclusterreceiver: Kubernetes Cluster Receiver

  • development、ログ

k8s APIサーバからクラスタレベルのメトリクスとエンティティイベントを収集する。

k8seventsreceiver: Kubernetes Events Receiver

  • alpha、ログ

k8s APIサーバからイベントを収集する。

k8sobjectsreceiver: Kubernetes Objects Receiver

  • beta、ログ

k8s APIサーバからオブジェクトを収集する。

kafkametricsreceiver: Kafka Metrics Receiver

  • beta、メトリクス

Kafkaサーバからメトリクスを取得する。

kafkareceiver: Kafka Receiver

  • beta、メトリクス、ログ、トレース

Kafkaからトレース、メトリクス、ログを取得する。

kubeletstatsreceiver: Kubelet Stats Receiver

  • beta、メトリクス

kubeletのAPIサーバからメトリクスを取得する。

lokireceiver: Loki Receiver

  • alpha、ログ

Grafana Lokiのpush APIを実装したもの。Lokiフォーマットのログエントリを受け付けるHTTP/gRPCサーバを実行する。

memcachedreceiver: Memcached Receiver

  • beta、メトリクス

Memcachedインスタンスから状態を取得する。

mongodbatlasreceiver: MongoDB Atlas Receiver

  • beta、メトリクス、ログ

MongoDB Atlasから、monitoring API経由でメトリクスを、webhook経由でアラートを、events API経由でイベントを取得する。

mongodbreceiver: MongoDB Receiver

  • beta、メトリクス

MongoDBインスタンスから状態を取得する。

mysqlreceiver: MySQL Receiver

  • beta、メトリクス

MySQLのグローバルステータスおよびInnoDBテーブルからメトリクスを取得する。

namedpipereceiver: Named Pipe Receiver

  • alpha、ログ

Unix名前付きパイプを開き、ログを読み込む。

nginxreceiver: Nginx Receiver

  • beta、メトリクス

Nginxインスタンスから状態を取得する。

nsxtreceiver: NSX-T Receiver

  • alpha、メトリクス

VMwareNSX-T仮想ネットワーキングのメトリクスを取得する。

opencensusreceiver: OpenCensus Receiver

  • beta、メトリクス、トレース

OpenCensusフォーマットのデータを取得する。

oracledbreceiver: Oracle DB receiver

  • alpha、メトリクス

Oracleデータベースのメトリクスを取得する。

osqueryreceiver: osquery Receiver

  • development、ログ

osqueryデーモンに照会し、出力をログに変換する。

otelarrowreceiver: OpenTelemetry Protocol with Apache Arrow Receiver

  • development、トレース、メトリクス、ログ

OpenTelemetry Protocol with Apache Arrowでテレメトリデータを取得する。

otlpjsonfilereceiver: OTLP JSON File Receiver

  • alpha、トレース、メトリクス、ログ

JSONファイルからパイプラインデータを読み込む。ディレクトリを監視してファイルを読み込む。

podmanreceiver: Podman Stats Receiver

  • development、メトリクス

PodmanサービスAPIで実行中コンテナの状態を取得する。

postgresqlreceiver: PostgreSQL Receiver

  • beta、メトリクス

PostgreSQLの状態を取得する。

prometheusreceiver: Prometheus Receiver

  • beta、メトリクス

Prometheusフォーマットのメトリクスデータを取得する。

pulsarreceiver: Pulsar Receiver

  • alpha、メトリクス、トレース、ログ

Pulsarからログ、メトリクス、トレースを受け取る。

purefareceiver: Pure Storage FlashArray Receiver

  • development、メトリクス

Pure STorage内部サービスホストからのメトリクスを取得する。

purefbreceiver: Pure Storage FlashBlade Receiver

  • development、メトリクス

Pure Storage FlashBladeからのメトリクスを取得する。

rabbitmqreceiver: RabbitMQ Receiver

  • beta、メトリクス

RabbitMQ Management Pluginを使ってRabbitMQノードから状態を取得する。

receivercreator: Receiver Creator

  • alpha、ログ、トレース

任意のレシーバを動的に構成する。

redisreceiver: Redis Receiver

  • beta、メトリクス

Redis INFOデータを取得する。

riakreceiver: Riak Receiver

  • beta、メトリクス

NoSQLのRiakの/statsエンドポイントからメトリクスを取得する。

saphanareceiver: SAP HANA Receiver

  • development、メトリクス

インメモリデータベースのSAP HANAインスタンスから状態を取得する。

sapmreceiver: SAPM Receiver

  • beta、トレース

ほかのコレクタまたはSignalFx Smart Agentからのトレースを受け取るようにする。

signalfxreceiver: SignalFX Receiver

  • beta、メトリクス、ログ

SignalFx protoフォーマットのメトリクス、およびSignalFx protoフォーマットのイベント/ログを受け取る。

simpleprometheusreceiver: Simple Prometheus Receiver

  • beta、メトリクス

Prometheusレシーバのラッパー。

skywalkingreceiver: Skywalking Receiver

  • development、メトリクス。beta、トレース

Skywalkingフォーマットのトレースデータおよびメトリクスデータを取得する。

snmpreceiver: SNMP Receiver

  • alpha、メトリクス

SNMPが有効なホストの状態を取得する。

snowflakereceiver: Snowflake Receiver

  • alpha、メトリクス

Snowflakeアカウントからメトリクスを取得する。

solacereceiver: Solace Receiver

  • beta、トレース

Solace PubSub+ Event Brokerからトレースデータを受け取る。

splunkenterprisereceiver: Splunk Enterprise Receiver

  • 不明

Splunk Enterprise deploymentのパフォーマンスメトリクスを取得する。

splunkhecreceiver: Splunk HEC Receiver

  • beta、メトリクス、ログ

Splunk HECフォーマットのイベントを受け取る。

sqlqueryreceiver: SQL Query Receiver (Alpha)

  • development、ログ。alpha、メトリクス

データベースからのカスタムSQLクエリの結果からメトリクスを生成する。

sqlserverreceiver: Microsoft SQL Server Receiver

  • beta、メトリクス

Microsoft SQL ServerのメトリクスをWindowsパフォーマンスカウンタを使って収集する。

sshcheckreceiver: SSH Check Receiver

  • alpha、メトリクス

SSH/SFTPの状態を取得する。

statsdreceiver: StatsD Receiver

  • beta、メトリクス

StatsDメッセージを受け取る。

syslogreceiver: Syslog Receiver

  • alpha、ログ

TCPまたはUDPで受け取ったSyslogをパースする。

tcplogreceiver: TCP Receiver

  • alpha、ログ

TCP経由でログを受け取る。

udplogreceiver: UDP Receiver

  • alpha、ログ

UDP経由でログを受け取る。

vcenterreceiver: vCenter Receiver

  • alpha、メトリクス

vCenterまたはESXiホストのメトリクスを取得する。

wavefrontreceiver: Wavefront Receiver

  • beta、メトリクス

Wavefrontのメトリクス(Carbonに類似)を取得する。

webhookeventreceiver: Webhook Event Receiver

  • alpha、ログ

任意のWebhookスタイルのデータソースを受け取る。

windowseventlogreceiver: Windows Log Event Receiver

  • alpha、ログ

Windowsイベントログを追跡・解析する。

windowsperfcountersreceiver: Windows Performance Counters Receiver

  • beta、メトリクス

PDHインターフェイスを使ってシステム、アプリケーション、カスタムのパフォーマンスカウンタデータを取得する。

zipkinreceiver: Zipkin Receiver

  • beta、トレース

Zipkinからスパンを受け取る。

zookeeperreceiver: Zookeeper Receiver

  • development、メトリクス

Zookeeperインスタンスからメトリクスを収集する。