kmuto’s blog

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

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インスタンスからメトリクスを収集する。