datadog 구성과 사용한 내용이다.
- 설치
- on prem에서는 공식 가이드에 따라 helm 설치했다.
- helm repo add datadog https://helm.datadoghq.com
helm install my-datadog-operator datadog/datadog-operator
- helm repo add datadog https://helm.datadoghq.com
- OCP에서는 datadog agent operator를 통해 구성하는데 버전이슈로 redis-operator=0.13.0 이하에서만 동작하였다.
- datadog operator가 설치되고 나면 agent를 생성한다.
- on prem에서는 공식 가이드에 따라 helm 설치했다.
spec:
agent:
apm:
enabled: true # apm 사용 설정
config:
kubelet:
tlsVerify: false # 필수
log:
enabled: true
logsConfigContainerCollectAll: false
process:
enabled: true
security:
compliance:
enabled: false
runtime:
enabled: false
systemProbe:
bpfDebugEnabled: false
clusterAgent:
config:
admissionController:
enabled: true
clusterChecksEnabled: true
externalMetrics:
enabled: true
replicas: 2
clusterChecksRunner:
replicas: 2
clusterName: my-ocp-dev
credentials:
apiKey: <datadoghq 에서 생성한 API key>
features:
kubeStateMetricsCore:
clusterCheck: true
enabled: true #k8s 메트릭 설정
logCollection:
enabled: true
logsConfigContainerCollectAll: false
-
-
- cluster agent deployment가 먼저 생성되고 agent daemonset이 이후에 생성된다. 테스트용도이므로 ds yaml을 직접 수정하여 nodeAffinity 설정하여 배포 대상을 제한했다.
-
- 확인
- datadoghq.com 에서 확인하여 보면, infrastructure의 정보가 잘 보인다.
-

- APM
- GO, Java, Javascript, PHP, Python, Ruby, C++, .NET 지원
- OCP에서는 Log 설정을 지원하지 않아 Trace에서 ErrorStack을 통한 로그 확인이 가능하므로 해당 기능을 이용하였다.
- 준비
- dd-java-agent.jar를 다운받아야 하는데 annotation을 추가하면 컨테이너의 루트 경로 아래에 /datadog-lib 가 생성된다. base image에 미리 받아두어도 무방하다.
- deployment yaml에 label을 추가하고, command를 통해 javaagent 를 동작시킨다. 이때 service를 입력하여야 하는데 해당 이름으로 datadoghq.com에서 grouping되어 조회되니, 각 application별로 다른 이름으로 지정하자.
- 확인
- slueth를 springboot dependency에 추가하였다.
- 사전에 개발한 200정상과 500 error 발생시키는 API를 swagger로 테스트하였다.
- APM Traces 로 이동하여 보면 list가 보인다. 아무것도 보이지 않는다면 위에서 설정한 nodeAffinity외에 다른곳에 pod가 생성된것은 아닌지 확인해보자.
metadata:
labels:
tags.datadoghq.com/env: dev # dev,stg,prd 등 환경
tags.datadoghq.com/service: sample # grouping 가능
tags.datadoghq.com/version: 0.0.1 # 임의 버전
spec:
template:
metadata:
labels:
tags.datadoghq.com/env: dev
tags.datadoghq.com/service: sample
tags.datadoghq.com/version: 0.0.1
admission.datadoghq.com/enabled: "true" # 추가
annotations:
ad.datadoghq.com/codeserver-1-app.logs: '[{"source": "java", "service": "sample"}]'
# source는 nginx, java, python, nodejs, ruby, php, go, apache, mysql, postgresql, redis, docker, kubernetes 가능. service는 lable과 동일한 service명으로
admission.datadoghq.com/java-lib.version: v1.37.0
agent.datadoghq.com/component: cluster-agent
agent.datadoghq.com/name: datadog
spec:
containers:
- command: ["java"]
args: [
"-javaagent:/datadog-lib/dd-java-agent.jar",
"-Ddd.profiling.enabled=true",
"-XX:FlightRecorderOptions=stackdepth=256",
"-Ddd.logs.injection=true",
"-Ddd.service=sample", # label과 동일하게
"-Ddd.env=dev", # label과 동일하게
"-Ddd.version=0.0.1", # label과 동일하게
"-Ddd.dynamic.instrumentation.enabled=true"
"-Ddd.symbol.database.upload.enabled=true"
"-jar",
"/app.jar" # applicaiton jar 위치
]
env:
- name: DD_LOGS_INJECTION
value: "true"
- name: DD_TRACE_SAMPLE_RATE
value: "10"
- name: DD_ENV
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/env']
- name: DD_SERVICE
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/service']
- name: DD_VERSION
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/version']

-
-
- 500에러건을 클릭하여 상세로 이동한뒤 Waterfall로 각 span의 호출순서와 오류 내용확인이 가능하다.

- 익셉션 발생 span을 선택하면, 하단에 정보창이 보이는데, Error 메시지의 View stack trace 를 클릭하면 prettier 버전과 Raw 버전의 stackTrace 가 출력된다.

-
- application.yml
- springboot 에서 prometheus, micrometer설정하면 추가적으로 APM metric값들이 조회된다.
- management.datadog.metrics.export.api-key를 등록해준다.
management:
datadog:
metrics:
export:
api-key: "datadog api key"
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
endpoints:
web:
exposure:
include: "*"
metrics:
export:
prometheus:
enabled: true
tags:
application: ${spring.application.name}
728x90
'CloudNative > Observability & Analysis' 카테고리의 다른 글
| jib maven 으로 pinpoint agent 배포 (0) | 2024.10.18 |
|---|---|
| pinpoint server 2.5.4 k8s deploy (2) | 2024.10.18 |
| pinpoint server 2.5.4 YAML for k8s (0) | 2024.10.17 |
| pinpoint server 2.5.4 base image build for k8s (1) | 2024.10.17 |
| pinpoint APM docker-compose (2) | 2024.08.07 |