Agent v5의 쿠버네티스(Kubernetes) Agent 기본 사용법
Datadog Agent v5는 최대 쿠버네티스 버전 1.8까지 지원합니다. 최신 버전의 쿠버네티스는 Datadog Agent v6를 사용해야 합니다.
개요
쿠버네티스에서 실시간 메트릭을 받아 다음과 같이 활용할 수 있습니다.
- 쿠버네티스 상태 시각화 및 모니터링
- Kubernetes 실패 복구 및 이벤트 알림 확인
쿠버네티스의 경우, Agent를 DaemonSet로 실행하시길 권장합니다. 도커(Docker) 이미지는 활성화된 도커와 쿠버네티스 통합 모두에서 사용할 수 있습니다.
또한, 호스트에서 Datadog Agent를 실행하고 설정하여 쿠버네티스 메트릭을 수집할 수 있습니다.
Kubernetes 설정
설치
컨테이너 설치
쿠버네티스 덕분에 Datadog Agent를 모든 노드에 자동 배포하는 DaemonSets의 장점을 활용할 수 있습니다(또는 nodeSelectors를 사용해 특정 노드에만 배포할 수도 있습니다).
쿠버네티스 클러스터에서 DaemonSets 옵션을 지원하지 않는다면 각 쿠버네티스 노드의 배포 콘텐츠로서 Datadog Agent를 설치하세요.
쿠버네티스에서 RBAC를 사용한다면 Datadog-쿠버네티스 통합에서 RBAC 권한을 설정하는 방법을 알아보세요.
- 다음의
dd-agent.yaml
매니페스트(Manifest)를 생성합니다.
apiVersion: extensions/v1beta1
metadata:
name: dd-agent
spec:
template:
metadata:
labels:
app: dd-agent
name: dd-agent
spec:
containers:
- image: gcr.io/datadoghq/docker-dd-agent:latest
imagePullPolicy: Always
name: dd-agent
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
env:
- name: API_KEY
value: "DATADOG_API_KEY"
- name: KUBERNETES
value: "yes"
volumeMounts:
- name: dockersocket
mountPath: /var/run/docker.sock
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
volumes:
- hostPath:
path: /var/run/docker.sock
name: dockersocket
- hostPath:
path: /proc
name: procdir
- hostPath:
path: /sys/fs/cgroup
name: cgroups
DATADOG_API_KEY
를 API 키로 대체하거나 쿠버네티스 시크릿을 사용해 API 키를 환경 변수로 설정합니다.
- 명령어로 DaemonSet을 배포합니다.
kubectl create -f dd-agent.yaml
참조: 매니페스트는 자동탐지, 자동 설정 기능을 활성화합니다. 이를 비활성화하려면 SD_BACKEND
환경 변수 정의를 제거하세요. 자동탐지를 설정하는 방법은 자동탐지 가이드를 참조하시기 바랍니다.
호스트 설치
dd-check-kubernetes
패키지를 수동 설치하거나 즐겨 사용하는 설정 관리자로 설치하세요.
설정
kubernetes.yaml
파일을 편집해 서버나 포트를 지정하고, 모니터링할 마스터를 설정하세요.
instances:
host: localhost
port: 4194
method: http
사용할 수 있는 모든 설정 옵션의 목록은 샘플 kubernetes.yaml에서 확인할 수 있습니다
검증
컨테이너 실행
환경에서 DaemonSet으로 실행 중인 Datadog Agent를 확인하려면 다음을 실행하세요.
Agent가 배포되었다면 아래 텍스트와 비슷한 출력값이 표시됩니다. 여기서 desired 및 current는 클러스터에서 실행 중인 노드 개수와 동일합니다.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Agent 점검 실행
Agent의 info
하위 명령어를 실행하고 점검(Checks) 섹션의 kubernetes
를 찾습니다.
Checks
======
kubernetes
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
쿠버네티스 상태 설정
설치
컨테이너 설치
버전 1.2.0 이상의 쿠버네티스를 실행 중이라면 kube-state-metrics 프로젝트를 사용해 추가 메트릭을 Datadog로 보낼 수 있습니다(아래 메트릭 목록에서 kubernetes_state
접두어로 알아볼 수 있습니다).
kube-state-metrics를 실행하려면 kube-state-metrics 서비스를 배포하는 다음의 매니페스트를 사용해 kube-state-metrics.yaml
파일을 생성하세요.
apiVersion: extensions/v1beta1
metadata:
name: kube-state-metrics
spec:
replicas: 1
template:
metadata:
labels:
app: kube-state-metrics
spec:
containers:
- name: kube-state-metrics
image: gcr.io/google_containers/kube-state-metrics:v1.2.0
ports:
- name: metrics
containerPort: 8080
resources:
requests:
memory: 30Mi
cpu: 100m
limits:
memory: 50Mi
cpu: 200m
---
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: kube-state-metrics
name: kube-state-metrics
spec:
ports:
- name: metrics
port: 8080
targetPort: metrics
protocol: TCP
selector:
app: kube-state-metrics
이제 다음을 실행해 배포하세요.
kubectl create -f kube-state-metrics.yaml
위의 매니페스트는 Google에서 공개한 kube-state-metrics
컨테이너를 사용합니다. 이는 Quay에서도 사용할 수 있습니다. 직접 구축하고자 하시는 분은 공식 프로젝트 설명서를 참조하세요.
쿠버네티스 상태 메트릭(Kubernetes State Metrics) 서비스를 다른 URL이나 포트에서 실행하기로 설정한 경우, conf.d/kubernetes_state.yaml
의 kube_state_url
파라미터를 설정한 다음 Agent를 재부팅하여 Datadog Agent를 구성할 수 있습니다.
더 자세한 정보가 필요하신 분은 kubernetes_state.yaml.example 파일을 참조하세요. 자동탐지를 사용하신다면 kube state URL이 자동으로 설정되어 관리됩니다.
호스트 설치
dd-check-kubernetes_state
패키지를 수동으로, 또는 즐겨 사용하는 설정 관리자로 설치하세요(CentOS/AWS에서는 rpm 패키지를 다운로드하고 설치 가이드를 참조하세요).
다음으로 kubernetes_state.yaml
파일을 수정해 서버와 포트를 지정하고, 모니터링할 마스터를 설정합니다. 사용할 수 있는 모든 설정 옵션의 목록은 샘플 kubernetes_state.yaml에서 확인할 수 있습니다.
검증
컨테이너 검증
환경에서 DaemonSet으로 실행 중인 Datadog Agent를 확인하려면 다음을 실행하세요.
Agent가 배포되면 아래 텍스트와 유사한 출력이 표시됩니다. 여기서 desired 및 current는 클러스터에서 실행 중인 노드 수와 같습니다.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Agent 점검 검증
Agent의 info 하위 명령어를 실행하고 점검(Checks) 섹션의 kubernetes_state
를 찾습니다.
Checks
======
kubernetes_state
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
쿠버네티스 DNS 설정
설치
dd-check-kube_dns
패키지를 수동 설치하거나 즐겨 사용하는 설정 관리자로 설치하세요.
설정
다음으로 kube_dns.yaml
파일을 수정해 서버와 포트를 지정하고, 모니터링할 마스터를 설정합니다. 사용할 수 있는 모든 설정 옵션의 목록은 샘플 kube_dns.yaml 에서 확인할 수 있습니다.
서비스 탐지 사용
쿠버네티스 워커 노드마다 하나의 dd-agent
팟을 사용하는 경우, kube-dns 팟에서 다음의 어노테이션을 사용해 데이터를 자동으로 수집할 수 있습니다.
apiVersion: v1
metadata:
annotations:
service-discovery.datadoghq.com/kubedns.check_names: '["kube_dns"]'
service-discovery.datadoghq.com/kubedns.init_configs: '[{}]'
service-discovery.datadoghq.com/kubedns.instances: '[[{"prometheus_endpoint":"http://%%host%%:10055/metrics", "tags":["dns-pod:%%host%%"]}]]'
참조:
- “dns-pod” 태그가 타겟 DNS 팟 IP를 추적한다는 점에 유의하시기 바랍니다. 다른 태그는 서비스 탐지를 사용해 정보를 폴링(polling)하는
dd-agent
와 연관됩니다. - 서비스 탐지 어노테이션은 팟에 적용해야 합니다. 배포 시에는 어노테이션을 템플릿 스펙의 메타데이터에 추가하세요.
검증
Agent의 info 하위 명령어를 실행하고 점검(Checks) 섹션의 kube_dns
를 찾습니다.
Checks
======
kube_dns
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks