この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/system/container-metrics/
翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930)
コンテナメトリクスに関するセマンティック規約
ステータス: Development
コンテナメトリクス
この文書では、OpenTelemetryにおける一般的なコンテナレベルのメトリクスのInstrumentと属性について説明します。 これらのメトリクスは、技術固有の明確に定義されたAPI(KubeletのAPIやコンテナランタイムなど)から収集されます。
メトリクス: container.uptime
このメトリクスは推奨です。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.uptime | Gauge | s | コンテナが実行されている時間。[1] | container |
[1]: 計装は、double型のgaugeを使用し、利用可能な最高精度の浮動小数点数で稼働時間を秒単位で計測すべきです(SHOULD)。
実際の精度は計装とオペレーティングシステムに依存します。
メトリクス: container.cpu.time
このメトリクスは推奨です。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.cpu.time | Counter | s | 消費された合計CPU時間。[1] | container |
[1]: 利用可能なすべてのCPUコアにおいて、その特定のコンテナが消費したCPU時間
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
cpu.mode | Conditionally Required [1] | string | このデータポイントのCPUモード。コンテナのCPUメトリクスは、modeラベルを持たないデータポイント、またはmodeラベルを持つデータポイントのいずれかのみによって特徴付けられるべきです(SHOULD)。[2] | user; system |
[1] cpu.mode: modeが利用可能な場合、つまりDocker Stats API、containerd statsまたはcAdvisorから取得されたメトリクスの場合は必須。
[2] cpu.mode: コンテナに利用可能であれば、次のモードを使用すべきです(SHOULD): user、system。
opencontainers/cgroup、Moby/Docker、cAdvisorのような実装では、それぞれの状態はcgroupの統計情報から直接取得されます。cgroup v1では、userモードとsystemモードはcpuacct.statファイルのそれぞれuser統計とsystem統計から取得されます。cgroup v2では、userモードとsystemモードはcpu.statファイルのそれぞれuser_usec統計とsystem_usec統計から取得されます。
Kubernetesは、Kubelet の statsAPIを通じて合計CPU時間(cpu.stat.usage_usec)のみを公開するため、このメトリクスはすべてのモードの合計を意味するmode属性なしで報告すべきです。
純粋なコンテナ環境では、通常CPUのモードが利用可能であり、cpu.modeを報告すべきです。その場合、各モードのCPU時間を合計すると、総CPU時間が得られます。
cpu.modeには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
idle | Idle | |
interrupt | Interrupt | |
iowait | IO Wait | |
nice | Nice | |
steal | Steal | |
system | System | |
user | User |
メトリクス: container.cpu.usage
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.cpu.usage | Gauge | {cpu} | コンテナのCPU使用率。CPU数で計測され、0から割り当て可能なCPU数までの範囲を取ります。[1] | container |
[1]: 利用可能なすべてのCPUコアにおける、その特定のコンテナのCPU使用率。これは、計測間隔における累積CPU時間(container.cpu.time)の変化量を、経過時間で割ることで算出されます: usageCores = (cpuTimeEnd - cpuTimeStart) / elapsedSeconds
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
cpu.mode | Conditionally Required [1] | string | このデータポイントのCPUモード。コンテナのCPUメトリクスは、modeラベルを持たないデータポイント、またはmodeラベルを持つデータポイントのいずれかのみによって特徴付けられるべきです(SHOULD)。[2] | user; system |
[1] cpu.mode: modeが利用可能な場合、つまりDocker Stats API、containerd statsまたはcAdvisorから取得されたメトリクスの場合は必須。
[2] cpu.mode: コンテナに利用可能であれば、次のモードを使用すべきです(SHOULD): user、system。
cpu.modeには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
idle | Idle | |
interrupt | Interrupt | |
iowait | IO Wait | |
nice | Nice | |
steal | Steal | |
system | System | |
user | User |
メトリクス: container.memory.usage
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.memory.usage | UpDownCounter | By | コンテナのメモリ使用量。[1] | container |
[1]: アクセスされた時期にかかわらず、すべてのメモリを含む現在のメモリ使用量。
一般に、このメトリクスはcadvisor、特にcontainer_memory_usage_bytesメトリクスから導出できます。
K8sでは、このメトリクスはKubeletのstats APIのContainerStats.MemoryのMemoryStats.UsageBytesフィールドから導出されます。
メトリクス: container.memory.available
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.memory.available | UpDownCounter | By | コンテナで利用可能なメモリ。[1] | container |
[1]: 利用可能なメモリ。これは、メモリ上限 - workingSetBytesとして定義されます。メモリ上限が未定義の場合、利用可能バイト数は省略されます。
一般に、このメトリクスはcadvisorから、container_spec_memory_limit_bytesメトリクスからcontainer_memory_working_set_bytesメトリクスを減算することで導出できます。
K8sでは、このメトリクスはKubeletのstats APIのContainerStats.MemoryのMemoryStats.AvailableBytesフィールドから導出されます。
メトリクス: container.memory.rss
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.memory.rss | UpDownCounter | By | コンテナのメモリRSS。[1] | container |
[1]: 一般に、このメトリクスはcadvisor、特にcontainer_memory_rssメトリクスから導出できます。
K8sでは、このメトリクスはKubeletのstats APIのContainerStats.MemoryのMemoryStats.RSSBytesフィールドから導出されます。
メトリクス: container.memory.working_set
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.memory.working_set | UpDownCounter | By | コンテナのworking setメモリ。[1] | container |
[1]: 一般に、このメトリクスはcadvisor、特にcontainer_memory_working_set_bytesメトリクスから導出できます。
K8sでは、このメトリクスはKubeletのstats APIのContainerStats.MemoryのMemoryStats.WorkingSetBytesフィールドから導出されます。
メトリクス: container.paging.faults
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.paging.faults | Counter | {fault} | コンテナのメモリページングフォルト。[1] | container |
[1]: 一般に、このメトリクスはcadvisor、特にcontainer_memory_failures_total{failure_type=pgfault, scope=container}メトリクスとcontainer_memory_failures_total{failure_type=pgmajfault, scope=container}メトリクスから導出できます。
K8sでは、このメトリクスはKubeletのstats APIのContainerStats.MemoryのMemoryStats.PageFaultsフィールドとMemoryStats.MajorPageFaultsフィールドから導出されます。
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
system.paging.fault.type | Recommended | string | ページングフォルトの種別 | minor |
system.paging.fault.typeには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
major | major | |
minor | minor |
メトリクス: container.disk.io
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.disk.io | Counter | By | コンテナのディスクバイト数。[1] | container |
[1]: 正常に読み書きされたバイト数の合計(すべてのディスクから集計)。
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
disk.io.direction | Recommended | string | ディスクIO操作の方向。 | read | |
system.device | Recommended | string | デバイス識別子 | (identifier) |
disk.io.directionには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
read | read | |
write | write |
メトリクス: container.network.io
このメトリクスはopt-inです。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.network.io | Counter | By | コンテナのネットワークバイト数。[1] | container |
[1]: コンテナのすべてのネットワークインターフェースで送受信されたバイト数。
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.interface.name | Recommended | string | ネットワークインターフェース名。 | lo; eth0 | |
network.io.direction | Recommended | string | 観測対象ホストの物理または仮想ネットワークインターフェースの視点から見たトラフィックの方向。ステートフルな接続やネットワークフローの論理的な方向を表すために使用すべきではありません。 | transmit |
network.io.directionには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
receive | receive | |
transmit | transmit |
メトリクス: container.filesystem.available
このメトリクスは推奨です。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.filesystem.available | UpDownCounter | By | コンテナのファイルシステムの利用可能バイト数。[1] | container |
[1]: K8sでは、このメトリクスはKubeletのstats APIの ContainerStats.Rootfsの FsStats.AvailableBytesフィールドから導出されます。
メトリクス: container.filesystem.capacity
このメトリクスは推奨です。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.filesystem.capacity | UpDownCounter | By | コンテナのファイルシステム容量。[1] | container |
[1]: K8sでは、このメトリクスはKubeletのstats APIの ContainerStats.Rootfsの FsStats.CapacityBytesフィールドから導出されます。
メトリクス: container.filesystem.usage
このメトリクスは推奨です。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
container.filesystem.usage | UpDownCounter | By | コンテナのファイルシステム使用量。[1] | container |
[1]: これはcapacity - availableと等しくない場合があります。
K8sでは、このメトリクスはKubeletのstats APIの ContainerStats.Rootfsの FsStats.UsedBytesフィールドから導出されます。