コンテンツにスキップ

rsdatakit


rsdatakit は Rust 製の軽量コレクターで、Linux ホストと Kubernetes ノードを対象とし、 DataKit/Guance Point v2 形式でデータを Dataway に送信します。

機能概要

モジュール 既定の状態 収集内容
ホスト 有効 cpumemdiskdiskionetsystem メトリクスと HOST オブジェクト。
ログ 無効 ファイルログ、systemd journal、読み取り再開、複数行の結合、ファイルローテーション。
OpenTelemetry 無効 OTLP/HTTP または OTLP/gRPC で Trace を受信。
Kubernetes 無効 ローカルノードの Pod/コンテナのメトリクス、オブジェクト、ログ、Kubernetes メタデータの付加。
Prometheus 無効 ノードローカルのターゲット検出と Prometheus/OpenMetrics のスクレイピング。

現在 Linux amd64arm64 に対応しています。Windows、macOS、OTLP Metrics、OTLP Logs、 eBPF、外形監視、リモート設定、DataKit プラグインシステムには対応していません。

DataKit との互換性

実装済みデータでは DataKit 互換のメトリクスセット、オブジェクト分類、主要フィールド名を使用するため、 これらに依存するビューを再利用できます。本書に記載のない DataKit 固有のフィールドは生成されず、対応するグラフが空になる場合があります。

実行要件

  • Linux ホストから /proc/sys にアクセスできる必要があります。journald 収集には systemd journal ランタイムも必要です。
  • インストールスクリプトで rsdatakit を管理するには systemd と systemctl が必要です。
  • Kubernetes 収集は対象ノードで DaemonSet として実行し、Pod メタデータ、Kubelet Summary、 ホストのコンテナログディレクトリを読み取れる必要があります。
  • 有効な Dataway アドレスと token が必要です。設定ファイルと状態ディレクトリへのアクセスは実行ユーザーのみに制限してください。

インストール

インストールスクリプトは Linux amd64arm64 に対応し、root または sudo が必要です。systemd で サービスを管理します。最新版のインストール:

RSDATAKIT_DATAWAY_URL="https://openway.guance.com" \
RSDATAKIT_DATAWAY_TOKEN="<DATAWAY_TOKEN>" \
  sh -c "$(curl -fsSL https://static.guance.com/rsdatakit/install.sh)"

特定のバージョンでは <VERSION> を完全なバージョン番号に置き換えます:

RSDATAKIT_DATAWAY_URL="https://openway.guance.com" \
RSDATAKIT_DATAWAY_TOKEN="<DATAWAY_TOKEN>" \
  sh -c "$(curl -fsSL https://static.guance.com/rsdatakit/install-<VERSION>.sh)"

スクリプトはアーキテクチャの選択、パッケージ検証、バイナリと systemd unit のインストールを行い、 rsdatakit.service を起動します。既定の設定ファイルは /etc/rsdatakit/rsdatakit.toml です。

最新版への更新では RSDATAKIT_UPGRADE=1 を設定します:

RSDATAKIT_UPGRADE=1 \
  sh -c "$(curl -fsSL https://static.guance.com/rsdatakit/install.sh)"

更新ではバイナリを置き換えてサービスを再起動し、/etc/rsdatakit/rsdatakit.toml/var/lib/rsdatakit 内の WAL と収集状態を保持します。Dataway も変更する場合は、更新コマンドに 新しい RSDATAKIT_DATAWAY_URLRSDATAKIT_DATAWAY_TOKEN を渡します。特定のバージョンに更新する場合は、 install-<VERSION>.sh を使用します。

RSDATAKIT_INSTALL_ONLY=1 でサービスを起動せずにインストール・更新できます。完了後に確認します:

systemctl is-active rsdatakit
systemctl status rsdatakit --no-pager
journalctl -u rsdatakit -n 30 --no-pager

RustDataKit は DaemonSet として各 Linux ノードに 1 インスタンスを配置します。マニフェストは、 linux/amd64linux/arm64 対応のマルチアーキテクチャイメージを使用します。

まず最新版の rsdatakit.yaml をダウンロードします:

wget https://static.guance.com/rsdatakit/rsdatakit.yaml

特定のバージョンをインストールするには <VERSION> を完全なバージョン番号に置き換えます:

wget -O rsdatakit.yaml https://static.guance.com/rsdatakit/rsdatakit-<VERSION>.yaml

マニフェストの Dataway URL、ワークスペース token、OTLP token は Kubernetes Secret で指定します。 名前空間を作成して実際の設定を登録します:

kubectl create namespace rsdatakit-system --dry-run=client -o yaml | kubectl apply -f -
kubectl -n rsdatakit-system create secret generic rsdatakit-secrets \
  --from-literal=dataway-url='https://openway.guance.com' \
  --from-literal=dataway-token='<DATAWAY_TOKEN>' \
  --from-literal=otlp-token='<OTLP_TOKEN>' \
  --dry-run=client -o yaml | kubectl apply -f -

別の Dataway ノードを使う場合は dataway-url を実際のアドレスに変更します。OTLP 受信を使わない場合、 otlp-token は空文字列にできます。

YAML を適用します:

kubectl apply -f rsdatakit.yaml

インストール後に DaemonSet と Pod の状態を確認します:

kubectl -n rsdatakit-system rollout status daemonset/rsdatakit
kubectl -n rsdatakit-system get pods -l app.kubernetes.io/name=rsdatakit

実行ログを確認します:

kubectl -n rsdatakit-system logs daemonset/rsdatakit --tail=100

設定

既定の設定パスは /etc/rsdatakit/rsdatakit.toml です。--config <path> または RSDATAKIT_CONFIG で別のファイルを指定できます。設定は起動時のみ読み込むため、変更後は再起動してください。

最小構成:

[agent]
# Local state directory for the WAL and file-log read positions. Must be absolute.
state_dir = "/var/lib/rsdatakit"
# Optional standalone health-listener address. Leave empty to disable it.
health_addr = ""

[dataway]
# Workspace Dataway endpoint.
url = "https://openway.example.com"
# Workspace token.
token = "<DATAWAY_TOKEN>"
# Per-request Dataway timeout in seconds. Valid range: 1–60.
timeout_secs = 15
# Tags added to all reported data.
global_tags = { env = "prod" }
# Target index. Uses the workspace default index when empty.
storage_index = ""

[metrics]
# Host metrics collection interval in seconds. Valid range: 5–300.
interval_secs = 15
# Mount points whose capacity is collected. Maximum: 32. Each must be absolute.
mounts = ["/"]
# Also collect virtual interfaces such as veth, docker0, and cni.
enable_virtual_interfaces = false

[hostobject]
# HOST object reporting interval in seconds. Valid range: 60–3600.
interval_secs = 300

[wal]
# Local write-ahead log directory. Must be absolute.
dir = "/var/lib/rsdatakit/wal"
# Total WAL capacity in bytes. Valid range: 4 MiB–256 MiB; the oldest unsent data is evicted when full.
max_bytes = 268435456

agent.state_dirlogs.state_dirwal.dir は絶対パスにしてください。WAL の既定容量は 256 MiB です。許容する Dataway 停止時間とログ/Trace の書き込み量に応じて wal.max_bytes を調整してください。 起動時の RSDATAKIT_DATAWAY_URLRSDATAKIT_DATAWAY_TOKEN で設定のアドレスと token を上書きできます。RSDATAKIT_HEALTH_ADDR は独立したヘルスチェックのアドレスを上書きします。

ホスト収集

ホストメトリクスと HOST オブジェクトは既定で有効です。追加の enabled 設定は不要です。

データ measurement / object 既定の頻度 説明
CPU cpu 15 秒 CPU 使用率の集計。
メモリ mem 15 秒 容量、キャッシュ、使用量、割合。
ディスク容量 disk 15 秒 [metrics].mounts に指定したマウントのみ収集。既定は /
ディスク I/O diskio 15 秒 ブロックデバイスの累積値、読み書き速度、await
ネットワーク net 15 秒 既定では UP 状態の非仮想インターフェースのみ。
システム system 15 秒 負荷、CPU/メモリ使用率、プロセス数、稼働時間。
ホストオブジェクト HOST 300 秒 ホスト識別情報、OS、基本リソース情報。

ホストメトリクスの間隔は 5~300 秒、HOST は 60~3600 秒です。CPU、ネットワーク、ディスク I/O の速度は 前後 2 回のサンプルに依存するため、起動直後の初回は速度フィールドがない場合があります。

メトリクス

以下は rsdatakit が実際に送信するフィールドのみです。名前は DataKit の同名メトリクスセットと互換性がありますが、 DataKit コレクターのすべての拡張フィールドを実装しているわけではありません。

cpu

Tags & Fields Description
host
(tag)
ホスト名。
cpu
(tag)
CPU 識別子。現在は全 CPU の集計を示す cpu-total に固定。
usage_user CPU 時間に占めるユーザーモードの割合。
Type: float | (gauge)
Unit: percent
usage_nice CPU 時間に占める低優先度ユーザーモードの割合。
Type: float | (gauge)
Unit: percent
usage_system CPU 時間に占めるカーネルモードの割合。
Type: float | (gauge)
Unit: percent
usage_idle CPU 時間に占めるアイドルの割合。
Type: float | (gauge)
Unit: percent
usage_iowait CPU 時間に占めるI/O 待機の割合。
Type: float | (gauge)
Unit: percent
usage_irq CPU 時間に占めるハードウェア割り込み処理の割合。
Type: float | (gauge)
Unit: percent
usage_softirq CPU 時間に占めるソフトウェア割り込み処理の割合。
Type: float | (gauge)
Unit: percent
usage_steal CPU 時間に占める仮想環境で他システムに使用される時間の割合。
Type: float | (gauge)
Unit: percent
usage_guest CPU 時間に占めるゲスト仮想 CPU の実行の割合。
Type: float | (gauge)
Unit: percent
usage_guest_nice CPU 時間に占める低優先度ゲスト仮想 CPU の実行の割合。
Type: float | (gauge)
Unit: percent
usage_total CPU 使用率の集計。
Type: float | (gauge)
Unit: percent

mem

Tags & Fields Description
host
(tag)
ホスト名。
total 物理メモリの総バイト数。
Type: int | (gauge)
Unit: digital,B
available カーネルが推定する現在の使用可能メモリのバイト数。
Type: int | (gauge)
Unit: digital,B
used 使用メモリ。total - free - buffered - cached で計算。
Type: int | (gauge)
Unit: digital,B
free 未使用メモリのバイト数。
Type: int | (gauge)
Unit: digital,B
buffered カーネル buffer の使用バイト数。
Type: int | (gauge)
Unit: digital,B
cached page cache と回収可能な slab の使用バイト数。
Type: int | (gauge)
Unit: digital,B
used_percent 総メモリに対する使用メモリの割合。
Type: float | (gauge)
Unit: percent
available_percent 総メモリに対する使用可能メモリの割合。
Type: float | (gauge)
Unit: percent

disk

[metrics].mounts のマウントごとに 1 Point を生成。

Tags & Fields Description
host
(tag)
ホスト名。
device
(tag)
マウントのデバイス名。不明なら unknown
fstype
(tag)
ファイルシステムの種類。不明なら unknown
mount_point
(tag)
マウントパス。
total ファイルシステムの総容量。
Type: int | (gauge)
Unit: digital,B
free ファイルシステムの使用可能容量。
Type: int | (gauge)
Unit: digital,B
used ファイルシステムの使用容量。
Type: int | (gauge)
Unit: digital,B
used_percent ファイルシステムの使用率。
Type: float | (gauge)
Unit: percent
inodes_total inode 総数。ファイルシステムから情報が得られない場合は生成しません。
Type: int | (gauge)
Unit: count
inodes_free 空き inode 数。
Type: int | (gauge)
Unit: count
inodes_used 使用中の inode 数。
Type: int | (gauge)
Unit: count
inodes_total_mb inodes_total / 1,000,000 の互換フィールド。
Type: int | (gauge)
inodes_free_mb inodes_free / 1,000,000 の互換フィールド。
Type: int | (gauge)
inodes_used_mb inodes_used / 1,000,000 の互換フィールド。
Type: int | (gauge)
inodes_used_percent inode 使用率。
Type: float | (gauge)
Unit: percent

diskio

I/O カウンターを持つ Linux ブロックデバイスごとに 1 Point を生成。

Tags & Fields Description
host
(tag)
ホスト名。
name
(tag)
ブロックデバイスのパス(例:/dev/vda)。
serial
(tag)
udev のデバイスシリアル番号。不明なら unknown
reads 起動後に完了した読み取り要求数。
Type: int | (count)
Unit: count
writes 起動後に完了した書き込み要求数。
Type: int | (count)
Unit: count
merged_reads 結合された読み取り要求の累積数。
Type: int | (count)
Unit: count
merged_writes 結合された書き込み要求の累積数。
Type: int | (count)
Unit: count
read_bytes 累積読み取りバイト数。
Type: int | (count)
Unit: digital,B
write_bytes 累積書き込みバイト数。
Type: int | (count)
Unit: digital,B
read_time 累積読み取り時間。
Type: int | (count)
Unit: ms
write_time 累積書き込み時間。
Type: int | (count)
Unit: ms
io_time デバイスの累積 I/O 実行時間。
Type: int | (count)
Unit: ms
weighted_io_time 重み付き累積 I/O 時間。
Type: int | (count)
Unit: ms
iops_in_progress 処理中の I/O 要求数。
Type: int | (gauge)
Unit: count
read_bytes/sec 収集期間の平均読み取り速度。初回は生成しません。
Type: int | (gauge)
Unit: traffic,B/s
write_bytes/sec 収集期間の平均書き込み速度。初回は生成しません。
Type: int | (gauge)
Unit: traffic,B/s
await 収集期間内の読み書き要求ごとの平均待機時間。初回は生成しません。
Type: float | (gauge)
Unit: ms

net

フィルター条件を満たし、前回のサンプルがあるネットワークインターフェースごとに 1 Point を生成。

Tags & Fields Description
host
(tag)
ホスト名。
interface
(tag)
ネットワークインターフェース名。
bytes_sent インターフェースの累積送信バイト数。
Type: int | (count)
Unit: digital,B
bytes_recv インターフェースの累積受信バイト数。
Type: int | (count)
Unit: digital,B
packets_sent インターフェースの累積送信パケット数。
Type: int | (count)
Unit: count
packets_recv インターフェースの累積受信パケット数。
Type: int | (count)
Unit: count
err_in インターフェースの累積受信エラー数。
Type: int | (count)
Unit: count
err_out インターフェースの累積送信エラー数。
Type: int | (count)
Unit: count
drop_in インターフェースの累積受信破棄パケット数。
Type: int | (count)
Unit: count
drop_out インターフェースの累積送信破棄パケット数。
Type: int | (count)
Unit: count
bytes_sent/sec 収集期間の毎秒送信バイト数。
Type: int | (gauge)
Unit: traffic,B/s
bytes_recv/sec 収集期間の毎秒受信バイト数。
Type: int | (gauge)
Unit: traffic,B/s
packets_sent/sec 収集期間の毎秒送信パケット数。
Type: int | (gauge)
Unit: count/s
packets_recv/sec 収集期間の毎秒受信パケット数。
Type: int | (gauge)
Unit: count/s

system

Tags & Fields Description
host
(tag)
ホスト名。
load1 直近 1 分間のシステム負荷。
Type: float | (gauge)
load1_per_core 直近 1 分間の負荷を論理 CPU 数で割った値。
Type: float | (gauge)
load5 直近 5 分間のシステム負荷。
Type: float | (gauge)
load5_per_core 直近 5 分間の負荷を論理 CPU 数で割った値。
Type: float | (gauge)
load15 直近 15 分間のシステム負荷。
Type: float | (gauge)
load15_per_core 直近 15 分間の負荷を論理 CPU 数で割った値。
Type: float | (gauge)
n_cpus プロセスから見える論理 CPU 数。
Type: int | (gauge)
Unit: count
uptime ホスト起動後の稼働時間。
Type: int | (gauge)
Unit: s
cpu_total_usage 今回の cpu.usage_total と同じホスト CPU 総使用率。CPU サンプルが無効なら生成しません。
Type: float | (gauge)
Unit: percent
memory_usage 今回の mem.used_percent と同じメモリ使用率。メモリサンプルが無効なら生成しません。
Type: float | (gauge)
Unit: percent
process_count /proc 内の現在のプロセスディレクトリ数。
Type: int | (gauge)
Unit: count

オブジェクト

HOST

Tags & Fields Description
host
(tag)
ホスト名。
name
(tag)
オブジェクト名。現在は host と同じ。
os
(tag)
OS。現在は linux
arch
(tag)
CPU アーキテクチャ(例:x86_64aarch64)。
unicast_ip
(tag)
ホストのユニキャスト IP。不明なら生成しません。
message ホストの CPU、メモリ、ネットワーク、ディスク、システムのメタデータを含む JSON。
Type: string
rs_datakit_ver rsdatakit のバージョン。
Type: string
cpu_usage オブジェクト収集期間の CPU 使用率。
Type: float
Unit: percent
num_cpu 論理 CPU 数。
Type: int
Unit: count
mem_used_percent メモリ使用率。
Type: float
Unit: percent
load 直近 5 分間のシステム負荷。
Type: float
disk_total 設定したマウントの総容量。
Type: int
Unit: digital,B
disk_used_percent 設定したマウントの集計使用率。
Type: float
Unit: percent
diskio_read_bytes_per_sec オブジェクト収集期間のディスク読み取り速度。
Type: int
Unit: traffic,B/s
diskio_write_bytes_per_sec オブジェクト収集期間のディスク書き込み速度。
Type: int
Unit: traffic,B/s
net_recv_bytes_per_sec オブジェクト収集期間のネットワーク受信速度。
Type: int
Unit: traffic,B/s
net_send_bytes_per_sec オブジェクト収集期間のネットワーク送信速度。
Type: int
Unit: traffic,B/s
logging_level 現在の RUST_LOG 値。未設定なら info
Type: string
is_docker コンテナ内で動作しているか。1 ははい、0 はいいえ。
Type: int
start_time ホストの起動時刻(Unix ミリ秒)。不明なら生成しません。
Type: int
Unit: ms

ログ収集

ログは既定で無効です。paths が空ならファイルを収集しません。必要なパスのみ指定し、広すぎるグローバル glob は避けてください。

[logs]
# Enables file-log collection.
enabled = true
# Absolute path globs for log files to collect.
paths = ["/var/log/my-service/*.log"]
# Log data source name.
source = "my-service"
# service tag added to logs.
service = "my-service"
# Reports first-level members of a top-level JSON object as log fields.
json_as_fields = false
# Maximum number of active files read simultaneously.
max_files = 32
# Interval for rediscovering matching files in seconds.
discovery_secs = 5
# copytruncate log-rotation detection strategy.
copytruncate_mode = "auto"
# Local directory that stores file read positions. Must be absolute.
state_dir = "/var/lib/rsdatakit"

# Effective only when built with the journald feature and libsystemd is available.
journald_enabled = false
# Collects only this systemd unit. Leave empty for all accessible journal entries.
journald_unit = "my-service.service"

[logs.multiline]
# Continuation pattern. Leave empty to report one log point per line.
continuation_regex = "^\\s+"
# Maximum wait time for continuation lines in milliseconds.
flush_timeout_ms = 1000
# Maximum bytes in a merged log entry.
max_bytes = 262144

ログ位置、journald cursor、WAL は状態ディレクトリに保存します。再起動後は確認済み位置から読み取りを再開し、 WAL への書き込みまたは Dataway の受信完了後にのみ位置を進めます。継続行に一致する複数行は 1 ログに結合します。

json_as_fields は既定で無効です。有効にすると、最上位がオブジェクトの JSON ログの第 1 階層をフィールドとして送信します: 文字列、真偽値、int64、有限の float64 は型を維持し、オブジェクトと配列はコンパクトな JSON 文字列に変換します。 null と範囲外の数値は無視します。解析失敗、最上位がオブジェクトでない、または有効なフィールドがない場合は、元の message を保持します。JSON フィールドは同名の収集フィールドを上書きし、名前は Point の規則で正規化して 256 バイトに制限します。 1 Point のフィールドは最大 1024 個です。timesourcedatestorage_index はそれぞれ json_* に改名し、Point の時刻、ログ source、保存インデックスは変更しません。また、 RSDATAKIT_LOG_JSON_AS_FIELDS=true でも有効にできます。従来の json_extractRSDATAKIT_LOG_JSON_EXTRACT は互換エイリアスとして維持します。

journald_enabled = true で systemd journal の読み取りを追加します。ファイルログの収集には影響しません。 リリースパッケージでは journald を有効にしています。ソースから手動ビルドする場合:

cargo build --release --locked --features journald

ログデータ

ログの measurement は [logs].source です。Kubernetes コンテナログの初期 source は通常、 kubernetes です。メタデータの照合後はコンテナ名に変更します。

Tags & Fields Description
host
(tag)
収集ノードのホスト名。
service
(tag)
[logs].service。journald は _SYSTEMD_UNIT を優先。
filepath
(tag)
ログファイルの絶対パス。journald は journald 固定。
status
(tag)
現在は info 固定。ログ本文のレベルは自動解析しません。
stream
(tag)
CRI/Docker コンテナログの stdout または stderr。通常のファイルログと journald では生成しません。
message json_as_fields が無効、または JSON 変換に失敗した場合の元の 1 行または結合済み複数行の本文。
Type: string
<json_key> json_as_fields が有効で変換に成功した場合の第 1 階層 JSON フィールド。
Type: string, bool, int, float

メタデータが利用可能な場合、Kubernetes コンテナログには以下の tag も追加します:

Tags & Fields Description
cluster_name_k8s
(tag)
Kubernetes クラスター名。
node_name
(tag)
Pod のノード。
namespace
(tag)
Pod の名前空間。
pod_namespace
(tag)
Pod 名前空間の互換フィールド。
pod_name
(tag)
Pod 名。
pod_uid
(tag)
Pod UID。
pod_ip
(tag)
Pod IP。存在する場合に生成。
container_name
(tag)
コンテナ名。
container_id
(tag)
ランタイム接頭辞を除くコンテナ ID。識別できる場合に生成。
image
(tag)
コンテナイメージ。識別できる場合に生成。
deployment
(tag)
Deployment 名。存在する場合に生成。
daemonset
(tag)
DaemonSet 名。存在する場合に生成。
statefulset
(tag)
StatefulSet 名。存在する場合に生成。
replica_set
(tag)
ReplicaSet 名。存在する場合に生成。
job
(tag)
Job 名。存在する場合に生成。
<label_key>
(tag)
[kubernetes].label_tags 許可リスト内の Pod label の正規化キー(._ に変換、/ は保持)。

OpenTelemetry Trace

OTLP は既定で無効です。有効にすると OTLP Trace を受信し、tracing 分類へ転送します:

[otlp]
# Starts OTLP HTTP and gRPC receivers.
enabled = true
# OTLP/HTTP listen address.
http_addr = "127.0.0.1:4318"
# OTLP/gRPC listen address. Must differ from http_addr.
grpc_addr = "127.0.0.1:4317"
# Bearer token required for non-local listen addresses. It may be empty for local listening.
bearer_token = ""
# Maximum bytes per OTLP request.
max_request_bytes = 4194304
# Maximum number of concurrent OTLP requests.
max_concurrent_requests = 8
# Total memory budget in bytes for admitted OTLP requests.
max_inflight_bytes = 16777216
プロトコル アドレス / パス
OTLP/HTTP http://<host>:4318/otel/v1/traces
OTLP/gRPC <host>:4317、サービスは opentelemetry.proto.collector.trace.v1.TraceService/Export
ヘルスチェック http://<health-host>:<health-port>/health。OTLP 有効時は http://<host>:4318/health も使用可能

HTTP または gRPC を loopback 以外にバインドする場合は bearer_token が必須です。クライアントは Authorization: Bearer <token> を使用します。現在は Trace のみ対応し、OTLP Metrics と OTLP Logs は未対応です。 /healthagent.health_addr で独立して提供できます。OTLP 無効時は 4317/4318 をバインドしません。 接続のアイドル期限は 30 秒です。HTTP header/body、gRPC 接続開始、本文の受信・デコードにはそれぞれ 65 秒の絶対期限があります。gRPC メッセージと trailers のデコード完了後は本文期限を解除し、以後のマッピング、キュー投入、 Dataway/WAL receipt の待機には handler 全体のタイムアウトはありません。処理中の要求は接続アイドル期限でも中断しません。gRPC 本文が受信期限を超えると DeadlineExceeded を返し、グローバル受付予算を解放します。

Trace データ

OTLP Span は tracing 分類に出力し、measurement は opentelemetry 固定です。時刻フィールド startduration はマイクロ秒です。Point のタイムスタンプは Span の開始時刻(ナノ秒)を使用します。

Tags & Fields Description
service
(tag)
サービス名。Span の DB、RPC、メッセージシステム名を優先し、なければ Resource の service.name
source
(tag)
opentelemetry 固定。
span_type
(tag)
現在の要求の Trace ツリーにおける Span の構造型:entrylocalexit
span_kind
(tag)
internalserverclientproducerconsumerunspecified のいずれか。
source_type
(tag)
dbmessage_queuewebcustom のいずれか。
status
(tag)
okerrorinfo のいずれか。
dk_fingerprint
(tag)
DataKit/Guance の Trace 集計互換性のためのフィンガープリント。
host
(tag)
Trace を受信した rsdatakit のホスト名。Kubernetes ノード識別情報は node_name に別途保存。
base_service
(tag)
DB/RPC/メッセージシステムが service を上書きした場合の元のサービス名。
collector_source_ip
(tag)
OTLP クライアントの送信元 IP。取得可能な場合のみ。
trace_id 32 桁の 16 進 Trace ID。
Type: string
span_id 16 桁の 16 進 Span ID。
Type: string
parent_id 親 Span ID。ルート Span は文字列 0
Type: string
resource Span 名。
Type: string
start Span 開始時刻(Unix マイクロ秒)。
Type: int
Unit: us
duration Span の継続時間。
Type: int
Unit: us
runtime_id Runtime ID。存在する場合に生成。
Type: string
message 主要な ID/時刻フィールドを除いた Span JSON。最上位フィールドに未変換の属性とイベントを含みます。
Type: string
error_type exception.type から抽出する例外型。exception イベントがある場合のみ。
Type: string
error_message exception.message から抽出する例外メッセージ。exception イベントがある場合のみ。
Type: string
error_stack exception.stacktrace から抽出する例外スタック。exception イベントがある場合のみ。
Type: string

一般的な OTel Resource/Span 属性はフラットなフィールドに変換します。例:db.systemdb_systemdb.operation.namedb_operationhttp.request.methodhttp_methodhttp.response.status_codehttp_status_coderpc.systemrpc_systemmessaging.systemmessaging_system。文字列、真偽値、整数、浮動小数点は型を維持し、配列とオブジェクトは JSON に変換します。 属性ソースごとに最大 256 属性を処理します。意味マッピングの許可リスト外の属性は最上位フィールドにはせず、 message JSON 内に保持します。

セマンティック属性フィールド

以下は現在の許可リスト内の OTel 属性マッピングです。http_status_code 以外は入力属性の型を維持し、 string、bool、int、float とします。配列と key/value オブジェクトは JSON 文字列に変換します。

Tags & Fields Description
db_system 入力 db.system または db.system.name
Type: string | bool | int | float
db_operation 入力 db.operation または db.operation.name
Type: string | bool | int | float
db_operation_batch_size 入力 db.operation.batch.size
Type: string | bool | int | float
db_name 入力 db.name または db.namespace
Type: string | bool | int | float
db_statement 入力 db.statement または db.query.text
Type: string | bool | int | float
db_collection 入力 db.collection.name
Type: string | bool | int | float
db_host
(tag)
DB 呼び出しの Span では server.address、次に net.peer.name を使用。
server_address 入力 server.address
Type: string | bool | int | float
server_port 入力 server.port
Type: string | bool | int | float
net_host_name 入力 net.host.name
Type: string | bool | int | float
net_host_port 入力 net.host.port
Type: string | bool | int | float
network_peer_address 入力 network.peer.address
Type: string | bool | int | float
network_peer_port 入力 network.peer.port
Type: string | bool | int | float
network_transport 入力 network.transport
Type: string | bool | int | float
net_protocol_name 入力 network.protocol.name
Type: string | bool | int | float
net_protocol_version 入力 network.protocol.version
Type: string | bool | int | float
network_type 入力 network.type
Type: string | bool | int | float
network_local_address 入力 network.local.address
Type: string | bool | int | float
network_local_port 入力 network.local.port
Type: string | bool | int | float
http_method 入力 http.request.method または互換属性 http.method
Type: string | bool | int | float
http_status_code
(tag)
入力 http.response.status_code または互換属性 http.status_code。文字列 tag に統一。
http_route 入力 http.route
Type: string | bool | int | float
http_target 入力 http.target
Type: string | bool | int | float
http_scheme 入力 http.scheme
Type: string | bool | int | float
http_url 入力 http.url
Type: string | bool | int | float
url_full 入力 url.full
Type: string | bool | int | float
url_scheme 入力 url.scheme
Type: string | bool | int | float
url_path 入力 url.path
Type: string | bool | int | float
url_query 入力 url.query
Type: string | bool | int | float
client_address 入力 client.address
Type: string | bool | int | float
client_port 入力 client.port
Type: string | bool | int | float
user_agent_original 入力 user_agent.original
Type: string | bool | int | float
error_type 入力 error.type。exception イベントから取得する場合もあります。
Type: string | bool | int | float
messaging_system 入力 messaging.system
Type: string | bool | int | float
messaging_operation 入力 messaging.operation または messaging.operation.name
Type: string | bool | int | float
messaging_operation_type 入力 messaging.operation.type
Type: string | bool | int | float
messaging_destination_name 入力 messaging.destination.name
Type: string | bool | int | float
messaging_message_id 入力 messaging.message.id
Type: string | bool | int | float
rpc_service 入力 rpc.service
Type: string | bool | int | float
rpc_system 入力 rpc.system または rpc.system.name
Type: string | bool | int | float
rpc_method 入力 rpc.method
Type: string | bool | int | float
rpc_grpc_status_code 入力 rpc.grpc.status_code
Type: string | bool | int | float
exception 入力 exception
Type: string | bool | int | float
exception_type 入力 exception.type
Type: string | bool | int | float
exception_message 入力 exception.message
Type: string | bool | int | float
exception_stacktrace 入力 exception.stacktrace
Type: string | bool | int | float
container_name 属性 container.name から取得。Kubernetes モードでは同名の tag にも正規化します。
Type: string | bool | int | float
container_id 属性 container.id から取得。Kubernetes モードでは同名の tag にも正規化します。
Type: string | bool | int | float
image 属性 container.image.name から取得。Kubernetes モードでは同名の tag にも正規化します。
Type: string | bool | int | float
k8s_cluster_name 入力 k8s.cluster.name
Type: string | bool | int | float
k8s_namespace_name 入力 k8s.namespace.name
Type: string | bool | int | float
k8s_node_name 入力 k8s.node.name
Type: string | bool | int | float
k8s_pod_name 入力 k8s.pod.name
Type: string | bool | int | float
k8s_pod_uid 入力 k8s.pod.uid
Type: string | bool | int | float
k8s_container_name 入力 k8s.container.name
Type: string | bool | int | float
k8s_deployment_name 入力 k8s.deployment.name
Type: string | bool | int | float
k8s_replicaset_name 入力 k8s.replicaset.name
Type: string | bool | int | float
k8s_statefulset_name 入力 k8s.statefulset.name
Type: string | bool | int | float
k8s_daemonset_name 入力 k8s.daemonset.name
Type: string | bool | int | float
k8s_job_name 入力 k8s.job.name
Type: string | bool | int | float
k8s_cronjob_name 入力 k8s.cronjob.name
Type: string | bool | int | float
process_pid 入力 process.pid
Type: string | bool | int | float
project 入力 project
Type: string | bool | int | float
version 入力 version
Type: string | bool | int | float
env 入力 env
Type: string | bool | int | float
pod_name 属性 pod_name から取得。Kubernetes モードでは同名の tag にも正規化します。
Type: string | bool | int | float
pod_namespace 属性 pod_namespace から取得。Kubernetes モードでは同名の tag にも正規化します。
Type: string | bool | int | float
sdk_language 入力 telemetry.sdk.language
Type: string | bool | int | float
sdk_name 入力 telemetry.sdk.name
Type: string | bool | int | float
sdk_version 入力 telemetry.sdk.version
Type: string | bool | int | float

Kubernetes モードでは Trace にもコンテナログと同じクラスター、Node、Pod、Container、workload、 許可リスト内の label tag を追加できます。OTel Resource の識別情報を優先し、不足分のみローカル Pod キャッシュから補います。

Kubernetes 収集

[kubernetes].enabled = true で Kubernetes モードを有効にします。DaemonSet はローカル Pod メタデータ、 Kubelet /stats/summary、ホストの /var/log/pods から収集します:

データ 出力
Pod メトリクス kube_pod
コンテナメトリクス docker_containers
Pod オブジェクト kubelet_pod
コンテナオブジェクト docker_containers
コンテナログ logging。Pod、コンテナ、イメージ、namespace、workload などの情報を自動付加。
[kubernetes]
# Enables Kubernetes collection.
enabled = true
# Reports Pod and container metrics.
metrics_enabled = true
# Reports Pod and container objects.
objects_enabled = true
# Kubernetes cluster name.
cluster_name = "default"
# Local Pod metadata refresh interval in seconds.
refresh_secs = 60
# Pod and container object reporting interval in seconds.
object_interval_secs = 300
# Allowlist of Pod labels added to reported data.
label_tags = ["app.kubernetes.io/name"]

metrics_enabledobjects_enabled は個別に制御できます。メトリクスは既定で 60 秒ごと、オブジェクトは起動時に即時送信し、 その後は既定で 5 分ごとに送信します。label_tags はタグのカーディナリティを制御する Pod label の許可リストです。

Kubelet には HTTPS と自動マウントされた ServiceAccount bearer token で接続し、 nodes/stats RBAC 権限で認可します。ノードの自己署名証明書と Node IP SAN のないクラスターに対応するため、 Kubelet 接続のサーバー証明書は検証しません。Kubernetes API は独立したクライアントを使用し、ServiceAccount CA で 証明書を厳密に検証します。

プロジェクトの DaemonSet 例は /var/log/pods/var/lib/docker/containers/var/lib/rsdatakit もマウントします。コンテナログはローカルファイルから読み、ログごとに Kubernetes API は呼び出しません。Pod メタデータは 共有のローカルノードキャッシュで補完します。

メトリクス

Kubelet Summary にない任意フィールドは生成しません。CPU、メモリ、ファイルシステム、ネットワーク累積値はローカルの Kubelet /stats/summary から、request、limit、ready、restart、workload tag は Pod API メタデータから取得します。

kube_pod

ローカル Pod ごとに 1 Point を生成。

Tags & Fields Description
cluster_name_k8s
(tag)
Kubernetes クラスター名。
node_name
(tag)
Pod のノード。
namespace
(tag)
Pod の名前空間。
pod_namespace
(tag)
DataKit 互換の Pod 名前空間フィールド。Pod API メタデータが利用可能な場合に生成。
pod
(tag)
Kubelet Summary 内の Pod 名。
pod_name
(tag)
Pod 名。
uid
(tag)
Kubelet Summary 内の Pod UID。
pod_uid
(tag)
Pod UID。
pod_ip
(tag)
Pod IP。メタデータが利用可能な場合に生成。
deployment
(tag)
Deployment 名。ReplicaSet 管理の Pod で pod-template-hash から推定可能な場合に生成。
daemonset
(tag)
Pod を管理する DaemonSet 名。存在する場合に生成。
statefulset
(tag)
Pod を管理する StatefulSet 名。存在する場合に生成。
replica_set
(tag)
Pod を管理する ReplicaSet 名。存在する場合に生成。
job
(tag)
Pod を管理する Job 名。存在する場合に生成。
<label_key>
(tag)
[kubernetes].label_tags 許可リスト内の Pod label の正規化キー(._ に変換、/ は保持)。
cpu_usage_millicores 現在の CPU 使用量。
Type: float | (gauge)
Unit: mCPU
cpu_usage 現在の CPU 使用量。1 コアは 100%、複数コアでは 100% を超える場合があります。
Type: float | (gauge)
Unit: percent
cpu_usage_base100 現在の CPU 使用量を Node CPU 容量で割った値。容量が取得可能な場合に生成。
Type: float | (gauge)
Unit: percent
cpu_usage_core_nano_seconds 累積 CPU 使用時間。
Type: int | (count)
Unit: ns
cpu_limit_millicores Pod 内の通常コンテナの CPU limit の合計。未設定なら生成しません。
Type: float | (gauge)
Unit: mCPU
cpu_request_millicores Pod 内の通常コンテナの CPU request の合計。未設定なら生成しません。
Type: float | (gauge)
Unit: mCPU
cpu_usage_base_limit CPU limit に対する CPU 使用量の割合。limit が設定され、使用量がある場合に生成。
Type: float | (gauge)
Unit: percent
cpu_usage_base_request CPU request に対する CPU 使用量の割合。request が設定され、使用量がある場合に生成。
Type: float | (gauge)
Unit: percent
mem_available 現在の使用可能メモリ。
Type: int | (gauge)
Unit: digital,B
mem_usage 現在の working set メモリ。
Type: int | (gauge)
Unit: digital,B
mem_working_set 現在の working set メモリ。mem_usage と同じ。
Type: int | (gauge)
Unit: digital,B
memory_usage_bytes 現在の working set メモリの互換フィールド。mem_usage と同じ。
Type: int | (gauge)
Unit: digital,B
mem_rss 常駐メモリ。
Type: int | (gauge)
Unit: digital,B
mem_capacity Node メモリ容量。Node 容量が取得可能な場合に生成。
Type: int | (gauge)
Unit: digital,B
memory_capacity Node メモリ容量の互換フィールド。mem_capacity と同じ。
Type: int | (gauge)
Unit: digital,B
mem_used_percent Node メモリ容量に対する working set の割合。
Type: float | (gauge)
Unit: percent
memory_used_percent mem_used_percent の互換フィールド。
Type: float | (gauge)
Unit: percent
mem_limit Pod 内の通常コンテナの メモリ limit の合計。未設定なら生成しません。
Type: float | (gauge)
Unit: digital,B
mem_request Pod 内の通常コンテナの メモリ request の合計。未設定なら生成しません。
Type: float | (gauge)
Unit: digital,B
mem_used_percent_base_limit メモリ limit に対する メモリ 使用量の割合。limit が設定され、使用量がある場合に生成。
Type: float | (gauge)
Unit: percent
mem_used_percent_base_request メモリ request に対する メモリ 使用量の割合。request が設定され、使用量がある場合に生成。
Type: float | (gauge)
Unit: percent
network_bytes_rcvd Pod の累積受信バイト数。
Type: int | (count)
Unit: digital,B
network_bytes_sent Pod の累積送信バイト数。
Type: int | (count)
Unit: digital,B
network_errors_rcvd Pod の累積ネットワーク受信エラー数。
Type: int | (count)
Unit: count
network_errors_sent Pod の累積ネットワーク送信エラー数。
Type: int | (count)
Unit: count
ephemeral_storage_available_bytes Pod の一時ストレージの使用可能容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_capacity_bytes Pod の一時ストレージの総容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_used_bytes Pod の一時ストレージの使用容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_inodes Pod の一時ストレージのinode 総数。
Type: int | (gauge)
Unit: count
ephemeral_storage_inodes_free Pod の一時ストレージの空き inode 数。
Type: int | (gauge)
Unit: count
ephemeral_storage_inodes_used Pod の一時ストレージの使用中 inode 数。
Type: int | (gauge)
Unit: count
ready 現在 running の通常コンテナ数。
Type: float | (gauge)
Unit: count
restarts 通常コンテナの最大再起動回数。
Type: float | (gauge)
Unit: count

docker_containers(Kubernetes メトリクス)

ローカルコンテナごとに 1 Point を生成。ネットワークは Pod 単位で kube_pod が送信するため、ここにはネットワークフィールドがありません。

Tags & Fields Description
cluster_name_k8s
(tag)
Kubernetes クラスター名。
host
(tag)
コンテナのノード。node_name と同じ。
node_name
(tag)
コンテナのノード。
namespace
(tag)
Pod の名前空間。
pod_namespace
(tag)
Pod 名前空間の互換フィールド。メタデータが利用可能な場合に生成。
pod_name
(tag)
Pod 名。
pod_uid
(tag)
Pod UID。
pod_ip
(tag)
Pod IP。メタデータが利用可能な場合に生成。
container_name
(tag)
コンテナ名。
container_id
(tag)
ランタイム接頭辞を除くコンテナ ID。メタデータが利用可能な場合に生成。
container_runtime
(tag)
コンテナランタイム(例:containerd)。
container_type
(tag)
kubernetes 固定。
image
(tag)
コンテナイメージ。
state
(tag)
Kubelet Summary にあるコンテナは現在 running 固定。
deployment
(tag)
Deployment 名。存在する場合に生成。
daemonset
(tag)
DaemonSet 名。存在する場合に生成。
statefulset
(tag)
StatefulSet 名。存在する場合に生成。
replica_set
(tag)
ReplicaSet 名。存在する場合に生成。
job
(tag)
Job 名。存在する場合に生成。
<label_key>
(tag)
[kubernetes].label_tags 許可リスト内の Pod label の正規化キー。
cpu_usage_millicores 現在のコンテナ CPU 使用量。
Type: float | (gauge)
Unit: mCPU
cpu_usage 現在のコンテナ CPU 使用量。1 コアは 100%。
Type: float | (gauge)
Unit: percent
cpu_usage_base100 コンテナ CPU 使用量を Node CPU 容量で割った値。容量が取得可能な場合に生成。
Type: float | (gauge)
Unit: percent
cpu_usage_core_nano_seconds コンテナの累積 CPU 使用時間。
Type: int | (count)
Unit: ns
cpu_limit_millicores コンテナの CPU limit。未設定なら生成しません。
Type: float | (gauge)
Unit: mCPU
cpu_request_millicores コンテナの CPU request。未設定なら生成しません。
Type: float | (gauge)
Unit: mCPU
cpu_usage_base_limit コンテナの CPU limit に対する CPU 使用量の割合。
Type: float | (gauge)
Unit: percent
cpu_usage_base_request コンテナの CPU request に対する CPU 使用量の割合。
Type: float | (gauge)
Unit: percent
mem_available 現在のコンテナ使用可能メモリ。
Type: int | (gauge)
Unit: digital,B
mem_usage コンテナの working set メモリ。
Type: int | (gauge)
Unit: digital,B
mem_working_set コンテナの working set メモリ。mem_usage と同じ。
Type: int | (gauge)
Unit: digital,B
memory_usage_bytes mem_usage の互換フィールド。
Type: int | (gauge)
Unit: digital,B
mem_rss コンテナの常駐メモリ。
Type: int | (gauge)
Unit: digital,B
mem_capacity Node メモリ容量。取得可能な場合に生成。
Type: int | (gauge)
Unit: digital,B
memory_capacity mem_capacity の互換フィールド。
Type: int | (gauge)
Unit: digital,B
mem_used_percent Node メモリ容量に対するコンテナ working set の割合。
Type: float | (gauge)
Unit: percent
memory_used_percent mem_used_percent の互換フィールド。
Type: float | (gauge)
Unit: percent
mem_limit コンテナの メモリ limit。未設定なら生成しません。
Type: float | (gauge)
Unit: digital,B
mem_request コンテナの メモリ request。未設定なら生成しません。
Type: float | (gauge)
Unit: digital,B
mem_used_percent_base_limit コンテナの メモリ limit に対する メモリ 使用量の割合。
Type: float | (gauge)
Unit: percent
mem_used_percent_base_request コンテナの メモリ request に対する メモリ 使用量の割合。
Type: float | (gauge)
Unit: percent
ephemeral_storage_available_bytes コンテナ rootfsの使用可能容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_capacity_bytes コンテナ rootfsの総容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_used_bytes コンテナ rootfsの使用容量。
Type: int | (gauge)
Unit: digital,B
ephemeral_storage_inodes コンテナ rootfsのinode 総数。
Type: int | (gauge)
Unit: count
ephemeral_storage_inodes_free コンテナ rootfsの空き inode 数。
Type: int | (gauge)
Unit: count
ephemeral_storage_inodes_used コンテナ rootfsの使用中 inode 数。
Type: int | (gauge)
Unit: count
log_available_bytes コンテナログのファイルシステムの使用可能容量。
Type: int | (gauge)
Unit: digital,B
log_capacity_bytes コンテナログのファイルシステムの総容量。
Type: int | (gauge)
Unit: digital,B
log_used_bytes コンテナログのファイルシステムの使用容量。
Type: int | (gauge)
Unit: digital,B
log_inodes コンテナログのファイルシステムのinode 総数。
Type: int | (gauge)
Unit: count
log_inodes_free コンテナログのファイルシステムの空き inode 数。
Type: int | (gauge)
Unit: count
log_inodes_used コンテナログのファイルシステムの使用中 inode 数。
Type: int | (gauge)
Unit: count

オブジェクト

オブジェクト分類は DataKit ページと互換です。message は現在のオブジェクトフィールドの JSON スナップショットです。 今回 Kubelet Summary が利用可能なら、同じ Pod/コンテナのリソースフィールドも付加します。以下に各フィールドを示します。

kubelet_pod オブジェクト

Tags & Fields Description
name
(tag)
オブジェクト名。Pod UID 固定。
uid
(tag)
Pod UID。
pod_name
(tag)
Pod 名。
namespace
(tag)
Pod の名前空間。
pod_namespace
(tag)
Pod 名前空間の互換フィールド。
cluster_name_k8s
(tag)
Kubernetes クラスター名。
node_name
(tag)
Pod のノード。未スケジュールの場合は生成しません。
host
(tag)
Pod のノード。node_name と同じ。
pod
(tag)
Kubelet Summary の Pod 名。Summary が利用可能な場合に生成。
phase
(tag)
Pod phase(例:RunningPending)。
status
(tag)
現在の Pod 状態。コンテナの waiting reason を優先し、なければ Pod phase。
pod_ip
(tag)
Pod IP。存在する場合に生成。
qos_class
(tag)
Pod QoS class。存在する場合に生成。
workload_name
(tag)
正規化したワークロード名。Deployment を優先し、なければ最初に識別した owner。
deployment
(tag)
Deployment 名。存在する場合に生成。
daemonset
(tag)
DaemonSet 名。存在する場合に生成。
statefulset
(tag)
StatefulSet 名。存在する場合に生成。
replica_set
(tag)
ReplicaSet 名。存在する場合に生成。
job
(tag)
Job 名。存在する場合に生成。
<label_key>
(tag)
[kubernetes].label_tags 許可リスト内の Pod label の正規化キー。
available Pod 内の通常コンテナ総数。
Type: int
Unit: count
ready 現在 running の通常コンテナ数。
Type: int
Unit: count
restarts 通常コンテナの最大再起動回数。
Type: int
Unit: count
age Pod 作成からの秒数。
Type: int
Unit: s
cpu_usage_millicores 現在の Pod CPU 使用量。Kubelet Summary が利用可能な場合に生成。
Type: float
Unit: mCPU
cpu_usage 現在の Pod CPU 使用量。1 コアは 100%。
Type: float
Unit: percent
cpu_usage_base100 Pod CPU 使用量を Node CPU 容量で割った値。
Type: float
Unit: percent
cpu_usage_core_nano_seconds Pod の累積 CPU 使用時間。
Type: int
Unit: ns
cpu_limit_millicores Pod 内の通常コンテナの CPU limit の合計。
Type: float
Unit: mCPU
cpu_request_millicores Pod 内の通常コンテナの CPU request の合計。
Type: float
Unit: mCPU
cpu_usage_base_limit Podの CPU limit に対する CPU 使用量の割合。
Type: float
Unit: percent
cpu_usage_base_request Podの CPU request に対する CPU 使用量の割合。
Type: float
Unit: percent
mem_available 現在の Pod 使用可能メモリ。
Type: int
Unit: digital,B
mem_usage Pod の working set メモリ。
Type: int
Unit: digital,B
mem_working_set Pod の working set メモリ。mem_usage と同じ。
Type: int
Unit: digital,B
memory_usage_bytes mem_usage の互換フィールド。
Type: int
Unit: digital,B
mem_rss Pod の常駐メモリ。
Type: int
Unit: digital,B
mem_capacity Node メモリ容量。
Type: int
Unit: digital,B
memory_capacity mem_capacity の互換フィールド。
Type: int
Unit: digital,B
mem_used_percent Node メモリ容量に対する Pod working set の割合。
Type: float
Unit: percent
memory_used_percent mem_used_percent の互換フィールド。
Type: float
Unit: percent
mem_limit Pod 内の通常コンテナの メモリ limit の合計。
Type: float
Unit: digital,B
mem_request Pod 内の通常コンテナの メモリ request の合計。
Type: float
Unit: digital,B
mem_used_percent_base_limit Podの メモリ limit に対する メモリ 使用量の割合。
Type: float
Unit: percent
mem_used_percent_base_request Podの メモリ request に対する メモリ 使用量の割合。
Type: float
Unit: percent
network_bytes_rcvd Pod の累積受信バイト数。
Type: int
Unit: digital,B
network_bytes_sent Pod の累積送信バイト数。
Type: int
Unit: digital,B
network_errors_rcvd Pod の累積ネットワーク受信エラー数。
Type: int
Unit: count
network_errors_sent Pod の累積ネットワーク送信エラー数。
Type: int
Unit: count
ephemeral_storage_available_bytes Pod の一時ストレージの使用可能容量。
Type: int
Unit: digital,B
ephemeral_storage_capacity_bytes Pod の一時ストレージの総容量。
Type: int
Unit: digital,B
ephemeral_storage_used_bytes Pod の一時ストレージの使用容量。
Type: int
Unit: digital,B
ephemeral_storage_inodes Pod の一時ストレージのinode 総数。
Type: int
Unit: count
ephemeral_storage_inodes_free Pod の一時ストレージの空き inode 数。
Type: int
Unit: count
ephemeral_storage_inodes_used Pod の一時ストレージの使用中 inode 数。
Type: int
Unit: count
message オブジェクトの JSON スナップショット。
Type: string

docker_containers オブジェクト

Tags & Fields Description
name
(tag)
オブジェクト名。コンテナ ID 固定。
container_id
(tag)
ランタイム接頭辞を除くコンテナ ID。
container_name
(tag)
コンテナ名。
container_runtime
(tag)
コンテナランタイム(例:containerd)。取得可能な場合に生成。
image
(tag)
コンテナイメージ。取得可能な場合に生成。
container_type
(tag)
kubernetes 固定。
state
(tag)
現在は running 固定。
cluster_name_k8s
(tag)
Kubernetes クラスター名。
host
(tag)
コンテナのノード。
node_name
(tag)
コンテナのノード。
namespace
(tag)
Pod の名前空間。
pod_namespace
(tag)
Pod 名前空間の互換フィールド。元メトリクスに tag がある場合に保持。
pod_name
(tag)
Pod 名。
pod_uid
(tag)
Pod UID。
pod_ip
(tag)
Pod IP。元メトリクスに tag がある場合に保持。
workload_name
(tag)
正規化したワークロード名。存在する場合に生成。
deployment
(tag)
Deployment 名。存在する場合に生成。
daemonset
(tag)
DaemonSet 名。存在する場合に生成。
statefulset
(tag)
StatefulSet 名。存在する場合に生成。
replica_set
(tag)
ReplicaSet 名。存在する場合に生成。
job
(tag)
Job 名。存在する場合に生成。
<label_key>
(tag)
[kubernetes].label_tags 許可リスト内の Pod label の正規化キー。
age コンテナ起動からの秒数。起動時刻が取得可能な場合に生成。
Type: int
Unit: s
cpu_usage_millicores 現在のコンテナ CPU 使用量。
Type: float
Unit: mCPU
cpu_usage 現在のコンテナ CPU 使用量。
Type: float
Unit: percent
cpu_usage_base100 コンテナ CPU 使用量を Node CPU 容量で割った値。
Type: float
Unit: percent
cpu_usage_core_nano_seconds コンテナの累積 CPU 使用時間。
Type: int
Unit: ns
cpu_limit_millicores コンテナの CPU limit。
Type: float
Unit: mCPU
cpu_request_millicores コンテナの CPU request。
Type: float
Unit: mCPU
cpu_usage_base_limit コンテナの CPU limit に対する CPU 使用量の割合。
Type: float
Unit: percent
cpu_usage_base_request コンテナの CPU request に対する CPU 使用量の割合。
Type: float
Unit: percent
mem_available 現在のコンテナ使用可能メモリ。
Type: int
Unit: digital,B
mem_usage コンテナの working set メモリ。
Type: int
Unit: digital,B
mem_working_set コンテナの working set メモリ。mem_usage と同じ。
Type: int
Unit: digital,B
memory_usage_bytes mem_usage の互換フィールド。
Type: int
Unit: digital,B
mem_rss コンテナの常駐メモリ。
Type: int
Unit: digital,B
mem_capacity Node メモリ容量。
Type: int
Unit: digital,B
memory_capacity mem_capacity の互換フィールド。
Type: int
Unit: digital,B
mem_used_percent Node メモリ容量に対するコンテナ working set の割合。
Type: float
Unit: percent
memory_used_percent mem_used_percent の互換フィールド。
Type: float
Unit: percent
mem_limit コンテナの メモリ limit。
Type: float
Unit: digital,B
mem_request コンテナの メモリ request。
Type: float
Unit: digital,B
mem_used_percent_base_limit コンテナの メモリ limit に対する メモリ 使用量の割合。
Type: float
Unit: percent
mem_used_percent_base_request コンテナの メモリ request に対する メモリ 使用量の割合。
Type: float
Unit: percent
ephemeral_storage_available_bytes コンテナ rootfsの使用可能容量。
Type: int
Unit: digital,B
ephemeral_storage_capacity_bytes コンテナ rootfsの総容量。
Type: int
Unit: digital,B
ephemeral_storage_used_bytes コンテナ rootfsの使用容量。
Type: int
Unit: digital,B
ephemeral_storage_inodes コンテナ rootfsのinode 総数。
Type: int
Unit: count
ephemeral_storage_inodes_free コンテナ rootfsの空き inode 数。
Type: int
Unit: count
ephemeral_storage_inodes_used コンテナ rootfsの使用中 inode 数。
Type: int
Unit: count
log_available_bytes コンテナログのファイルシステムの使用可能容量。
Type: int
Unit: digital,B
log_capacity_bytes コンテナログのファイルシステムの総容量。
Type: int
Unit: digital,B
log_used_bytes コンテナログのファイルシステムの使用容量。
Type: int
Unit: digital,B
log_inodes コンテナログのファイルシステムのinode 総数。
Type: int
Unit: count
log_inodes_free コンテナログのファイルシステムの空き inode 数。
Type: int
Unit: count
log_inodes_used コンテナログのファイルシステムの使用中 inode 数。
Type: int
Unit: count
message オブジェクトの JSON スナップショット。
Type: string

Prometheus 収集

Prometheus スクレイピングは Kubernetes モードの一部です。単独バイナリでは既定で無効、DaemonSet 例では有効です:

[kubernetes.prometheus]
# Enables local Prometheus target discovery and scraping.
enabled = true
# Scrape interval per target in seconds.
scrape_interval_secs = 30
# Timeout per scrape in seconds.
scrape_timeout_secs = 10
# Keeps the full exporter metric name as the field name.
keep_exist_metric_name = true
# Discovers Pods annotated with prometheus.io/scrape.
discover_pod_annotations = true
# Discovers Services annotated with prometheus.io/scrape.
discover_service_annotations = true
# Discovers Prometheus Operator PodMonitors.
discover_pod_monitors = true
# Discovers Prometheus Operator ServiceMonitors.
discover_service_monitors = true

自動検出に加えて、信頼できるターゲットを明示的に設定できます:

[[kubernetes.prometheus.instances]]
# Target source type.
role = "pod" # node | pod | service | endpoints
# Namespaces containing the targets.
namespaces = ["default"]
# Kubernetes label selector。
selector = "app=nginx"
# Scrape scheme.
scheme = "http"
# Numeric or named port.
port = "metrics"
# HTTP metrics path.
path = "/metrics"
# Measurement name. Derived automatically when empty.
measurement = ""
# Tags added to all metrics from this target.
tags = { team = "platform" }

対応するターゲットソース:

  • Pod/Service の prometheus.io/scrapeportschemepath などの annotations。
  • Prometheus Operator の PodMonitor と ServiceMonitor。
  • 信頼できる静的設定の nodepodserviceendpoints インスタンス。

ローカルノードに属すると確認できるターゲットのみ収集し、各 DaemonSet レプリカによるクラスター全体の重複収集を防ぎます。 measurement は exporter のメトリクス名または静的な measurement 設定で決まり、collector.up が各ターゲットの収集結果を示します。

不要な検出機能は対応する discover_* を無効にしてください。Service annotation、ServiceMonitor が無効で、 明示的な service/endpoints インスタンスもなければ、グローバルな Service と EndpointSlice は購読しません。

メトリクス変換規則

Prometheus exporter の measurement と field はメトリクス名から動的に生成するため、固定ホストメトリクスのように列挙できません:

設定 / 入力 出力規則
measurement 未設定、メトリクス名に _ あり 最初の _ より前を measurement とします。例:http_requests_total → measurement http
keep_exist_metric_name = true field は完全なメトリクス名を保持します。requests_total または http_requests_total など、measurement の明示設定によって異なります。
keep_exist_metric_name = false measurement 未指定なら最初の _ までの接頭辞を除去。例:http_requests_total → measurement http、field requests_total
measurement を明示的に設定 すべてのサンプルをその measurement に書き込み、field は完全名または上記の保持規則を使用します。
Prometheus label tag に変換。ターゲットの Kubernetes 識別 tag を exporter の同名識別 label より優先します。
Counter 累積和として送信。名前に _total がなければ付加します。
Histogram / Summary _sum_count_bucketle/quantile tag に展開。
Info / StateSet Info は値 1 の gauge、StateSet は各状態の 0 または 1 に変換。

各スクレイピングではコレクター状態のメトリクスも生成します:

collector

Tags & Fields Description
host
(tag)
ターゲットの非 loopback IP。不明なら空文字列。
job
(tag)
検出または明示設定された Prometheus job。
ターゲット tags
(tag)
ターゲットが持つ Pod、Service、Node、namespace、instance などの tag。
up 今回のターゲット収集と解析が成功なら 1、失敗なら 0
Type: float | (gauge)

実行と検証

フォアグラウンドで実行:

sudo RUST_LOG=rsdatakit=info rsdatakit --config /etc/rsdatakit/rsdatakit.toml

systemd インストール後に使用できます:

sudo systemctl restart rsdatakit
sudo systemctl status rsdatakit
sudo journalctl -u rsdatakit -f
kubectl -n rsdatakit-system rollout status daemonset/rsdatakit
kubectl -n rsdatakit-system get pods -l app=rsdatakit
kubectl -n rsdatakit-system logs daemonset/rsdatakit --tail=100

起動ログに rsdatakit started が表示されたら、管理画面で以下を確認します:

機能 確認内容
ホスト cpumemdiskdiskionetsystem メトリクスと HOST オブジェクト。
ログ [logs].source のデータソース、収集 tag、元の message または json_as_fields の JSON フィールド。
Trace opentelemetry データソース内のサービス、Span 階層、Trace ID。
Kubernetes kube_poddocker_containers メトリクスと Pod/コンテナオブジェクト。
Prometheus exporter メトリクスと collector.up

独立したヘルスアドレスを設定するか OTLP HTTP を有効にして状態を確認できます。例:

curl http://127.0.0.1:4319/health

degraded は Dataway、WAL、収集モジュールのいずれかに障害があることを示します。HTTP 503 はキュー、 WAL、バックグラウンドタスクが不健全な状態であることを示します。

注意事項

  • ログと Trace はネットワークエラー、HTTP 5xx、429 で WAL に書き込み再試行します。他の 4xx は再試行しません。 メトリクスとオブジェクトは周期スナップショットで、WAL には書き込みません。
  • ログ/Trace 量と許容 Dataway 停止時間に合わせて wal.max_bytes を調整してください。
  • Dataway token と OTLP bearer token は Secret またはアクセス制限した設定ファイルで渡し、リポジトリには登録しないでください。
  • 高カーディナリティを避けるため、kubernetes.label_tags には必要な Pod label のみ追加してください。
  • RUST_LOG=rsdatakit=debug は大量のログを生成します。短時間の調査のみに使用してください。

フィードバック

このページは役に立ちましたか?