Docker
Docker Container의 지표, 오브젝트, 로그 데이터를 수집합니다.
수집기 설정¶
사전 조건¶
- 현재 container는 Docker, Containerd, CRI-O 컨테이너 런타임을 지원합니다
- 버전 요구 사항: Docker v17.04 이상, Containerd v1.5.1 이상, CRI-O 1.20.1 이상
Info
- 컨테이너 수집은 Docker와 Containerd 두 가지 런타임 Version-1.5.7을 지원하며, 기본적으로 모두 수집이 활성화되어 있습니다.
- DataKit
Docker 환경의 DataKit는 호스트 머신에만 설치할 수 있습니다.
DataKit 설치 디렉터리 아래의 conf.d/samples 디렉터리로 들어가서 container.conf.sample을 복사한 뒤 container.conf로 이름을 바꾸세요. 예시는 다음과 같습니다:
일반적으로는 endpoints만 조정하면 됩니다
로그 수집¶
로그 수집 관련 설정은여기를 참고하세요.
지표¶
아래 모든 데이터 수집에는 기본적으로 host라는 전역 tag가 추가됩니다(tag 값은 DataKit가 실행되는 호스트명). 또한 설정에서 [inputs.container.tags]를 통해 다른 태그를 지정할 수도 있습니다:
docker_containers
컨테이너의 metric이며, Running 상태만 지원합니다.
- 태그
| Tag | Description |
|---|---|
aws_ecs_cluster_name |
AWS ECS의 클러스터 이름. |
cluster_name_k8s |
K8s 클러스터 이름(기본값은 default). datakit.yaml의 ENV_CLUSTER_NAME_K8S에서 이름을 변경할 수 있습니다. |
container_id |
Container ID |
container_name |
k8s의 컨테이너 이름(io.kubernetes.container.name 라벨). 비어 있으면 $container_runtime_name을 사용합니다. |
container_runtime |
컨테이너 런타임(Docker/Containerd/cri-o 기반 컨테이너). |
container_runtime_name |
런타임의 컨테이너 이름(예: 'docker ps'). 비어 있으면 'unknown'을 사용합니다. |
container_runtime_version |
컨테이너 런타임 버전. |
container_type |
컨테이너의 유형(이 컨테이너는 Kubernetes/Docker/Containerd/cri-o에 의해 생성됨). |
daemonset |
오브젝트가 속한 DaemonSet 이름. |
deployment |
오브젝트가 속한 Deployment 이름. |
image |
컨테이너 이미지의 전체 이름, 예: nginx.org/nginx:1.21.0. |
image_name |
컨테이너 이미지 이름, 예: nginx.org/nginx. |
image_short_name |
컨테이너 이미지의 짧은 이름, 예: nginx. |
image_tag |
컨테이너 이미지의 태그, 예: 1.21.0. |
namespace |
컨테이너의 namespace(io.kubernetes.pod.namespace 라벨). |
pod_name |
컨테이너의 pod 이름(io.kubernetes.pod.name 라벨). |
pod_uid |
컨테이너의 pod uid(io.kubernetes.pod.uid 라벨). |
state |
컨테이너 상태(Running만). |
statefulset |
오브젝트가 속한 StatefulSet 이름. |
task_arn |
AWS Fargate의 task arn. |
task_family |
AWS Fargate의 task family. |
task_version |
AWS Fargate의 task version. |
- 지표 목록
| Metric | Description | Type | Unit |
|---|---|---|---|
block_read_byte |
컨테이너 파일 시스템에서 읽은 총 바이트 수(docker만 지원). | int | B |
block_write_byte |
컨테이너 파일 시스템에 기록한 총 바이트 수(docker만 지원). | int | B |
cpu_numbers |
CPU 코어 수. | int | count |
cpu_usage |
시스템 호스트에서의 CPU 사용률. | float | percent |
cpu_usage_base100 |
정규화된 CPU 사용률, 최대 100%. | float | percent |
mem_capacity |
호스트 머신의 전체 메모리. | int | B |
mem_limit |
컨테이너의 메모리 제한. | int | B |
mem_usage |
메모리 사용량. | int | B |
mem_used_percent |
호스트 머신의 용량을 기준으로 계산한 메모리 사용률. | float | percent |
mem_used_percent_base_limit |
제한값을 기준으로 계산한 메모리 사용률. | float | percent |
network_bytes_rcvd |
네트워크에서 수신한 총 바이트 수(컨테이너의 메인 프로세스 사용량만 집계하며, loopback은 제외). | int | B |
network_bytes_sent |
네트워크로 전송한 총 바이트 수(컨테이너의 메인 프로세스 사용량만 집계하며, loopback은 제외). | int | B |
오브젝트¶
docker_containers
컨테이너의 object이며, Running 상태만 지원합니다.
- 태그
| Tag | Description |
|---|---|
aws_ecs_cluster_name |
AWS ECS의 클러스터 이름. |
cluster_name_k8s |
K8s 클러스터 이름(기본값은 default). datakit.yaml의 ENV_CLUSTER_NAME_K8S에서 이름을 변경할 수 있습니다. |
container_id |
Container ID |
container_name |
k8s의 컨테이너 이름(io.kubernetes.container.name 라벨). 비어 있으면 $container_runtime_name을 사용합니다. |
container_runtime |
컨테이너 런타임(Docker/Containerd/cri-o 기반 컨테이너). |
container_runtime_name |
런타임의 컨테이너 이름(예: 'docker ps'). 비어 있으면 'unknown'을 사용합니다. |
container_runtime_version |
컨테이너 런타임 버전. |
container_type |
컨테이너의 유형(이 컨테이너는 Kubernetes/Docker/Containerd/cri-o에 의해 생성됨). |
daemonset |
오브젝트가 속한 DaemonSet 이름. |
deployment |
오브젝트가 속한 Deployment 이름. |
image |
컨테이너 이미지의 전체 이름, 예: nginx.org/nginx:1.21.0. |
image_name |
컨테이너 이미지 이름, 예: nginx.org/nginx. |
image_short_name |
컨테이너 이미지의 짧은 이름, 예: nginx. |
image_tag |
컨테이너 이미지의 태그, 예: 1.21.0. |
name |
컨테이너의 ID. |
namespace |
컨테이너의 namespace(io.kubernetes.pod.namespace 라벨). |
pod_name |
컨테이너의 pod 이름(io.kubernetes.pod.name 라벨). |
pod_uid |
컨테이너의 pod uid(io.kubernetes.pod.uid 라벨). |
state |
Container의 상태(Running만). |
statefulset |
오브젝트가 속한 StatefulSet 이름. |
status |
컨테이너 상태, 예: Up 5 hours. |
task_arn |
AWS Fargate의 task arn. |
task_family |
AWS Fargate의 task family. |
task_version |
AWS Fargate의 task version. |
- 지표 목록
| Metric | Description | Type | Unit |
|---|---|---|---|
age |
나이(초) | int | s |
block_read_byte |
컨테이너 파일 시스템에서 읽은 총 바이트 수(docker만 지원). | int | B |
block_write_byte |
컨테이너 파일 시스템에 기록한 총 바이트 수(docker만 지원). | int | B |
cpu_numbers |
CPU 코어 수. | int | count |
cpu_usage |
시스템 호스트에서의 CPU 사용률. | float | percent |
cpu_usage_base100 |
정규화된 CPU 사용률, 최대 100%. | float | percent |
mem_capacity |
호스트 머신의 전체 메모리. | int | B |
mem_limit |
컨테이너의 메모리 제한. | int | B |
mem_usage |
메모리 사용량. | int | B |
mem_used_percent |
호스트 머신의 용량을 기준으로 계산한 메모리 사용률. | float | percent |
mem_used_percent_base_limit |
제한값을 기준으로 계산한 메모리 사용률. | float | percent |
network_bytes_rcvd |
네트워크에서 수신한 총 바이트 수(컨테이너의 메인 프로세스 사용량만 집계하며, loopback은 제외). | int | B |
network_bytes_sent |
네트워크로 전송한 총 바이트 수(컨테이너의 메인 프로세스 사용량만 집계하며, loopback은 제외). | int | B |