Datadog Document Link
https://docs.datadoghq.com/containers/kubernetes/installation/?tab=helm&tabs=null
Basic values
https://github.com/DataDog/helm-charts/blob/main/examples/datadog/agent_basic_values.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
targetSystem: "linux"
datadog:
logs:
enabled: true
containerCollectAll: false
# containerCollectUsingFiles: true
apm:
portEnabled: true
socketPath: /var/run/datadog/apm.socket
hostSocketPath: /var/run/datadog/
processAgent:
enabled: true
processCollection: false
Helm Repo Update
1
2
$ helm repo add datadog https://helm.datadoghq.com
$ helm repo update
Helm Install
1
$ helm install datadog -f values.yaml --set datadog.apiKey=YOURKEY datadog/datadog
Deployment Add SideCar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tags.datadoghq.com/env: "<environment>"
tags.datadoghq.com/service: "<service>"
tags.datadoghq.com/version: "<version>"
spec:
template:
metadata:
labels:
tags.datadoghq.com/env: "<environment>"
tags.datadoghq.com/service: "<service>"
tags.datadoghq.com/version: "<version>"
spec:
initContainers:
- name: download-agent
image: busybox
command:
- wget
- -O
- /agent/dd-java-agent.jar
- https://dtdg.co/latest-java-tracer
volumeMounts:
- name: agent-volume
mountPath: "/agent"
volumes:
# for APM
- name: apmsocketpath
hostPath:
path: /var/run/datadog/
# for log
- name: agent-volume
emptyDir: { }
containers:
- name: <CONTAINER_NAME>
image: <CONTAINER_IMAGE>/<TAG>
volumeMounts:
# for APM
- name: apmsocketpath
mountPath: /var/run/datadog
# for log
- name: agent-volume
mountPath: "/agent"
env:
- 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']
Spring log json appender 추가
JSON Format으로 log를 남기자
gradle dependency 추가
1
implementation 'net.logstash.logback:logstash-logback-encoder:6.6'
logback.xml 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_PATH" value="/var/log"/>
<appender name="jsonAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<appender name="stdoutAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- <appender name="rollingJsonAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <file>${LOG_PATH}/application-json.log</file>-->
<!-- <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${LOG_PATH}/application-json.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>-->
<!-- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">-->
<!-- <maxFileSize>200MB</maxFileSize>-->
<!-- </timeBasedFileNamingAndTriggeringPolicy>-->
<!-- <maxHistory>7</maxHistory>-->
<!-- </rollingPolicy>-->
<!-- </appender>-->
<springProfile name="!prod">
<root level="INFO">
<appender-ref ref="stdoutAppender"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="jsonAppender"/>
</root>
</springProfile>
</configuration>