- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
클러스터 점검 기능은 자동탐지가 가능하며 Kubernetes 서비스와 같은 로드 밸런스 클러스터 서비스 점검을 합니다. _엔드포인트 점검_해당 장치를 연장하여 Kubernetes 서비스로 관리되는 각 엔드포인트를 모니터링합니다.
클러스터 에이전트는 Kubernetes 서비스의 자동탐지 주석을 기반으로 엔드포인트 점검 설정을 찾습니다. 그 후에 클러스터 에이전트는 이러한 설정을 개별적으로 작동하기 위해 노드 관련 에이전트에게 보냅니다. 엔드포인트 점검은 모니터링되는 Kubernetes 서비스의 엔드포인트를 지원하는 Pod와 같은 노드를 활용하는 에이전트에 보냅니다. 이 디스패칭 로직을 통해 에이전트는 이미 수집된 각각의 Pod에 Pod 및 컨테이너 태그를 추가할 수 있습니다.
에이전트는 10초마다 클러스터 에이전트와 연결하며 작동할 설정 점검을 검색합니다. 엔드 포인트 점검으로부터 나온 메트릭은 평가된 IP 주소를 기반으로 한 서비스 태그, Kubernetes 태그, 호스트 태그 그리고 kube_endpoint_ip
태그와 함께 제출합니다.
버저닝; 이 기능은 Datadog 에이전트 v6.12.0+ 그리고 Datadog 클러스터 에이전트 v1.3.0+ 위한 Kubernetes를 지원합니다. 클러스터 에이전트 v1.4.0를 먼저 살펴보면, 클러스터 에이전트는 Pod를 지원하지 않는 엔드포인드의 모든 엔드포인트 점검을 규칙적인 클러스터 점검으로 바꿉니다. 이 기능을 활용하려면 클러스터 점검 기능(엔드포인트 점검 기능 추가 외)을 사용하세요.
참고: 만약 서비스 뒤 Pod가 정적이라면, ad.datadoghq.com/endpoints.resolve
주석을 추가해야 합니다. Datadog 클러스터 에이전트는 점검을 엔드포인트 점검으로 예약하고 클러스터 점검 실행자로 보냅니다. Kubernetes API 서버로 주석을 추가하는 예시는 여기에서 참고하세요.
아래 예시에서, NGINX용 Kubernetes 배포는 3개의 Pod로 생성되었습니다.
kubectl get pods --selector app=nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-66d557f4cf-m4c7t 1/1 Running 0 3d 10.0.0.117 gke-cluster-default-pool-4658d5d4-k2sn
nginx-66d557f4cf-smsxv 1/1 Running 0 3d 10.0.1.209 gke-cluster-default-pool-4658d5d4-p39c
nginx-66d557f4cf-x2wzq 1/1 Running 0 3d 10.0.1.210 gke-cluster-default-pool-4658d5d4-p39c
서비스도 만들어졌습니다. 이 세 가지 엔드포인트를 통해 Pod에 연결됩니다.
kubectl get service nginx -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx ClusterIP 10.3.253.165 <none> 80/TCP 1h app=nginx
kubectl get endpoints nginx -o yaml
...
- addresses:
- ip: 10.0.0.117
nodeName: gke-cluster-default-pool-4658d5d4-k2sn
targetRef:
kind: Pod
name: nginx-66d557f4cf-m4c7t
...
- ip: 10.0.1.209
nodeName: gke-cluster-default-pool-4658d5d4-p39c
targetRef:
kind: Pod
name: nginx-66d557f4cf-smsxv
...
- ip: 10.0.1.210
nodeName: gke-cluster-default-pool-4658d5d4-p39c
targetRef:
kind: Pod
name: nginx-66d557f4cf-x2wzq
...
서비스 기반 클러스터 검사는 서비스의 단일 IP 주소를 테스트하는 반면, 엔드포인트 검사는 이 서비스와 연결된 3개의 엔드포인트 각각에 대해 예약됩니다.
설계상 엔드포인트 점검은 nginx
서비스의 엔드포인트를 지원하는 Pod와 동일한 노드에서 작동되는 에이전트로 보냅니다. 이 예시에서 에이전트는 gke-cluster-default-pool-4658d5d4-k2sn
와 gke-cluster-default-pool-4658d5d4-p39c
노드에서 작동되고 nginx
Pod를 점검합니다.
클러스터 에이전트의 Operator 배포에서 features.clusterChecks.enabled
구성 키를 사용해 엔드포인트 점검 디스패치가 기본 값으로 활성화되어 있습니다.
kind: DatadogAgent
apiVersion: datadoghq.com/v2alpha1
metadata:
name: datadog
spec:
features:
clusterChecks:
enabled: true
이 설정으로 클러스터 에이전트와 에이전트 사이에 클러스터 점검 및 엔드포인트 점검 디스패칭을 모두 사용할 수 있습니다.
클러스터 에이전트의 Helm 배포에서 features.clusterChecks.enabled
구성 키를 통해 엔드포인트 점검 디스패치가 기본 값으로 활성화되어 있습니다.
datadog:
clusterChecks:
enabled: true
# (...)
clusterAgent:
enabled: true
# (...)
이 설정으로 클러스터 에이전트와 에이전트 사이에 클러스터 점검 및 엔드포인트 점검 디스패칭을 모두 사용할 수 있습니다.
Datadog 클러스터 에이전트에서 kube_endpoints
설정 프로바이더와 리스너를 사용할 수 있도록 합니다. DD_EXTRA_CONFIG_PROVIDERS
와 DD_EXTRA_LISTENERS
환경 변수를 설정합니다.
DD_EXTRA_CONFIG_PROVIDERS="kube_endpoints"
DD_EXTRA_LISTENERS="kube_endpoints"
참고: 모니터링되는 엔드포인트가 Pod에서 지원되지 않는 경우 클러스터 점검을 활성화해야 합니다. kube_services
설정 프로바이더와 리스너를 추가하세요.
DD_EXTRA_CONFIG_PROVIDERS="kube_endpoints kube_services"
DD_EXTRA_LISTENERS="kube_endpoints kube_services"
변경된 설정을 적용하기 위해 에이전트 다시 시작하세요.
노드 기반 에이전트에서 endpointschecks
설정 프로바이더를 사용합니다. 이 것은 두 가지 방법으로 작동할 수 있습니다.
DD_EXTRA_CONFIG_PROVIDERS
환경 변수를 설정합니다. 값이 여러 개인 경우 스페이스로 구분된 문자열을 사용합니다.
DD_EXTRA_CONFIG_PROVIDERS="endpointschecks"
또는 datadog.yaml
설정 파일에 추가하세요.
config_providers:
- name: endpointschecks
polling: true
참고: 모니터링되는 엔드포인트가 Pod에서 지원되지 않는 경우 클러스터 점검을 활성화해야 합니다. clusterchecks
설정 프로바이더를 추가하여 활성화할 수 있습니다.
DD_EXTRA_CONFIG_PROVIDERS="엔드포인드점검 클러스터점검"
변경된 설정을 적용하기 위해 에이전트 다시 시작하세요.
클러스터 에이전트 v1.18.0+에서는 Kubernetes 엔드포인트를 대상으로 지정하기 위해 점검 설정에서advanced_ad_identifiers
와 자동탐지 템플릿 변수를 사용할 수 있습니다(예시 보기).
Kubernetes 서비스의 엔드포인트에 대해 HTTP 점검을 실행하려면,
점검 설정을 규정하기 위해 clusterAgent.confd
필드 사용:
#(...)
clusterAgent:
confd:
<INTEGRATION_NAME>.yaml: |-
advanced_ad_identifiers:
- kube_endpoints:
name: "<ENDPOINTS_NAME>"
namespace: "<ENDPOINTS_NAMESPACE>"
cluster_check: true
init_config:
instances:
- url: "http://%%host%%"
name: "<EXAMPLE_NAME>"
다음 콘텐츠를 사용하여 클러스터 에이전트 컨테이너에 /conf.d/http_check.yaml
파일을 설치합니다.
advanced_ad_identifiers:
- kube_endpoints:
name: "<ENDPOINTS_NAME>"
namespace: "<ENDPOINTS_NAMESPACE>"
cluster_check: true
init_config:
instances:
- url: "http://%%host%%"
name: "<EXAMPLE_NAME>"
**참고: 통합 설정 간소화를 위해 Datadog 에이전트 7.36에 AD Annotations v2가 도입되었습니다. 이전 버전의 Datadog 에이전트에 대해서는 AD Annotations v1을 사용하세요.
서비스 어노테이션 구문은 Kubernetes Pod 어노테이션의 구문과 유사합니다.
ad.datadoghq.com/endpoints.checks: |
{
"<INTEGRATION_NAME>": {
"init_config": <INIT_CONFIG>,
"instances": [<INSTANCE_CONFIG>]
}
}
ad.datadoghq.com/endpoints.logs: '[<LOGS_CONFIG>]'
이 구문은 각 엔드포인트의 IP로 대체되는 %%host%%
템플릿 변수를 지원합니다. kube_namespace
,kube_service
그리고 kube_endpoint_ip
태그가 인스턴스에 자동으로 추가됩니다.
참고: 커스텀 엔드포인트 로그 설정은 Kubernetes 로그 파일 수집이 아닌 Docker 소켓 로그 수집 중에만 지원됩니다.
이 서비스는 nginx
배포 Pod와 연결됩니다. 이 설정을 기반으로:
nginx
기반 엔드포인트 점검을 보냅니다. 이 점검은 NGINX Pod와 같은 각 노드의 에이전트에 의해 작동됩니다(Pod IP를 %%host%%
로 사용).http_check
기반 클러스터 점검은 클러스터의 단일 에이전트로 보냅니다. 이 점검은 서비스의 IP를 %%host%%
로 사용하여 각 엔드포인트에 자동으로 로드 밸런스를 맞춥니다.env:prod
, service:my-nginx
그리고version:1.19.0
태그와 함께 보냅니다.apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
tags.datadoghq.com/env: "prod"
tags.datadoghq.com/service: "my-nginx"
tags.datadoghq.com/version: "1.19.0"
annotations:
ad.datadoghq.com/service.checks: |
{
"http_check": {
"init_config": {},
"instances": [
{
"url": "http://%%host%%",
"name": "My Nginx",
"timeout": 1
}
]
}
}
ad.datadoghq.com/endpoints.checks: |
{
"nginx": {
"init_config": {},
"instances": [
{
"name": "My Nginx Service Endpoints",
"nginx_status_url": "http://%%host%%:%%port%%/status/"
}
]
}
}
ad.datadoghq.com/endpoints.logs: '[{"source":"nginx","service":"webapp"}]'
spec:
ports:
- port: 80
protocol: TCP
selector:
app: nginx
주석을 추가하는 서비스 구문은 Kubernetes Pod 주석 달기와 유사합니다.
ad.datadoghq.com/endpoints.check_names: '[<INTEGRATION_NAME>]'
ad.datadoghq.com/endpoints.init_configs: '[<INIT_CONFIG>]'
ad.datadoghq.com/endpoints.instances: '[<INSTANCE_CONFIG>]'
ad.datadoghq.com/endpoints.logs: '[<LOGS_CONFIG>]'
이 구문은 각 엔드포인트의 IP로 대체되는 %%host%%
템플릿 변수를 지원합니다. kube_namespace
,kube_service
그리고 kube_endpoint_ip
태그가 인스턴스에 자동으로 추가됩니다.
참고: 커스텀 엔드포인트 로그 설정은 Kubernetes 로그 파일 수집이 아닌 Docker 소켓 로그 수집 중에만 지원됩니다.
이 서비스는 nginx
배포 Pod와 연결됩니다. 이 설정을 기반으로:
nginx
기반 엔드포인트 점검을 보냅니다. 이 점검은 NGINX Pod와 같은 각 노드의 에이전트에 의해 작동됩니다(Pod IP를 %%host%%
로 사용).http_check
기반 클러스터 점검은 클러스터의 단일 에이전트로 보냅니다. 이 점검은 서비스의 IP를 %%host%%
로 사용하여 각 엔드포인트에 자동으로 로드 밸런스를 맞춥니다.env:prod
, service:my-nginx
그리고version:1.19.0
태그와 함께 보냅니다.apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
tags.datadoghq.com/env: "prod"
tags.datadoghq.com/service: "my-nginx"
tags.datadoghq.com/version: "1.19.0"
annotations:
ad.datadoghq.com/endpoints.check_names: '["nginx"]'
ad.datadoghq.com/endpoints.init_configs: '[{}]'
ad.datadoghq.com/endpoints.instances: |
[
{
"name": "My Nginx Service Endpoints",
"nginx_status_url": "http://%%host%%:%%port%%/nginx_status"
}
]
ad.datadoghq.com/service.check_names: '["http_check"]'
ad.datadoghq.com/service.init_configs: '[{}]'
ad.datadoghq.com/service.instances: |
[
{
"name": "My Nginx Service",
"url": "http://%%host%%"
}
]
ad.datadoghq.com/endpoints.logs: '[{"source":"nginx","service":"webapp"}]'
spec:
ports:
- port: 80
protocol: TCP
selector:
app: nginx
추가 유용한 문서, 링크 및 기사: