Skip to content

Commit 77cf970

Browse files
authored
Merge pull request #222 from aerostitch/add_map_extra_config
Review the generation of the datadog.conf to make it more flexible and maintainable
2 parents 4ac18b6 + 6790da3 commit 77cf970

23 files changed

+342
-1080
lines changed

Dockerfile

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ FROM debian:jessie
33
MAINTAINER Datadog <package@datadoghq.com>
44

55
ENV DOCKER_DD_AGENT=yes \
6-
AGENT_VERSION=1:5.16.0-1
6+
AGENT_VERSION=1:5.16.0-1 \
7+
DD_ETC_ROOT=/etc/dd-agent \
8+
PATH="/opt/datadog-agent/embedded/bin:/opt/datadog-agent/bin:${PATH}" \
9+
PYTHONPATH=/opt/datadog-agent/agent \
10+
DD_CONF_LOG_TO_SYSLOG=no \
11+
NON_LOCAL_TRAFFIC=yes \
12+
DD_SUPERVISOR_DELETE_USER=yes
713

814
# Install the Agent
915
RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/datadog.list \
@@ -15,23 +21,18 @@ RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/d
1521
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
1622

1723
# Configure the Agent
18-
# 1. Listen to statsd (8125) and traces (8126) from other containers
19-
# 2. Turn syslog off
20-
# 3. Remove dd-agent user from supervisor configuration
21-
# 4. Remove dd-agent user from init.d configuration
22-
# 5. Fix permission on /etc/init.d/datadog-agent
23-
RUN mv /etc/dd-agent/datadog.conf.example /etc/dd-agent/datadog.conf \
24-
&& sed -i -e"s/^.*non_local_traffic:.*$/non_local_traffic: yes/" /etc/dd-agent/datadog.conf \
25-
&& sed -i -e"s/^.*log_to_syslog:.*$/log_to_syslog: no/" /etc/dd-agent/datadog.conf \
26-
&& sed -i "/user=dd-agent/d" /etc/dd-agent/supervisor.conf \
24+
# 1. Remove dd-agent user from init.d configuration
25+
# 2. Fix permission on /etc/init.d/datadog-agent
26+
RUN mv ${DD_ETC_ROOT}/datadog.conf.example ${DD_ETC_ROOT}/datadog.conf \
2727
&& sed -i 's/AGENTUSER="dd-agent"/AGENTUSER="root"/g' /etc/init.d/datadog-agent \
28-
&& rm /etc/dd-agent/conf.d/network.yaml.default \
29-
|| chmod +x /etc/init.d/datadog-agent
28+
&& rm -f ${DD_ETC_ROOT}/conf.d/network.yaml.default \
29+
&& chmod +x /etc/init.d/datadog-agent
3030

3131
# Add Docker check
32-
COPY conf.d/docker_daemon.yaml /etc/dd-agent/conf.d/docker_daemon.yaml
33-
32+
COPY conf.d/docker_daemon.yaml ${DD_ETC_ROOT}/conf.d/docker_daemon.yaml
33+
# Add install and config files
3434
COPY entrypoint.sh /entrypoint.sh
35+
COPY config_builder.py /config_builder.py
3536

3637
# Extra conf.d and checks.d
3738
VOLUME ["/conf.d", "/checks.d"]
Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,49 @@ ENV DD_HOME=/opt/datadog-agent \
77
DD_START_AGENT=0 \
88
DOCKER_DD_AGENT=yes \
99
PYCURL_SSL_LIBRARY=openssl \
10-
AGENT_VERSION=5.16.0
11-
12-
# Add Docker check
13-
COPY conf.d/docker_daemon.yaml "$DD_HOME/agent/conf.d/docker_daemon.yaml"
14-
15-
# Add install and config files
16-
ADD https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh /tmp/setup_agent.sh
17-
COPY entrypoint.sh /entrypoint.sh
18-
19-
# Expose supervisor and DogStatsD port
20-
EXPOSE 9001/tcp 8125/udp
10+
AGENT_VERSION=5.16.0 \
11+
DD_ETC_ROOT="/opt/datadog-agent/agent" \
12+
PATH="/opt/datadog-agent/venv/bin:/opt/datadog-agent/agent/bin:$PATH" \
13+
PYTHONPATH="/opt/datadog-agent/agent" \
14+
DD_CONF_LOG_TO_SYSLOG=no \
15+
NON_LOCAL_TRAFFIC=yes \
16+
DD_SUPERVISOR_DELETE_USER=yes
2117

2218
# Install minimal dependencies
2319
RUN apk add -qU --no-cache coreutils curl curl-dev python-dev tar sysstat tini
2420

2521
# Install build dependencies
22+
ADD https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh /tmp/setup_agent.sh
2623
RUN apk add -qU --no-cache -t .build-deps gcc musl-dev pgcluster-dev linux-headers \
2724
# Install the agent
2825
&& sh /tmp/setup_agent.sh \
2926
# Clean build dependencies
30-
&& apk del -q .build-deps
27+
&& apk del -q .build-deps \
28+
&& rm /tmp/setup_agent.sh
3129

3230
# Configure the Agent
33-
# 1. Listen to statsd from other containers
34-
# 2. Turn syslog off
35-
# 3. Remove dd-agent user from supervisor configuration
36-
# 4. Remove setup script
37-
RUN cp "$DD_HOME/agent/datadog.conf.example" "$DD_HOME/agent/datadog.conf" \
38-
&& sed -i -e"s/^.*non_local_traffic:.*$/non_local_traffic: yes/" "$DD_HOME/agent/datadog.conf" \
39-
&& sed -i -e"s/^.*log_to_syslog:.*$/log_to_syslog: no/" "$DD_HOME/agent/datadog.conf" \
40-
&& sed -i "/user=dd-agent/d" "$DD_HOME/agent/supervisor.conf" \
41-
&& rm "$DD_HOME/agent/conf.d/network.yaml.default" \
42-
|| rm /tmp/setup_agent.sh
31+
RUN cp ${DD_ETC_ROOT}/datadog.conf.example ${DD_ETC_ROOT}/datadog.conf \
32+
&& rm -f ${DD_ETC_ROOT}/conf.d/network.yaml.default
33+
34+
# Add Docker check
35+
COPY conf.d/docker_daemon.yaml "${DD_ETC_ROOT}/conf.d/docker_daemon.yaml"
36+
# Add install and config files
37+
COPY entrypoint.sh /entrypoint.sh
38+
COPY config_builder.py /config_builder.py
39+
40+
# Extra conf.d and checks.d
41+
VOLUME ["/conf.d", "/checks.d"]
42+
43+
# Expose supervisor and DogStatsD port
44+
EXPOSE 9001/tcp 8125/udp
4345

4446
# Healthcheck
4547
HEALTHCHECK --interval=5m --timeout=3s --retries=1 \
4648
CMD test $($DD_HOME/venv/bin/python $DD_HOME/venv/bin/supervisorctl \
47-
-c $DD_HOME/agent/supervisor.conf status | awk '{print $2}' | egrep -v 'RUNNING|EXITED' | wc -l) \
49+
-c ${DD_ETC_ROOT}/supervisor.conf status | awk '{print $2}' | egrep -v 'RUNNING|EXITED' | wc -l) \
4850
-eq 0 || exit 1
4951

50-
# Extra conf.d and checks.d
51-
VOLUME ["/conf.d", "/checks.d"]
52-
5352
ENTRYPOINT ["/sbin/tini", "-g", "--", "/entrypoint.sh"]
5453

55-
WORKDIR "$DD_HOME"
56-
CMD source venv/bin/activate && supervisord -c agent/supervisor.conf
54+
WORKDIR $DD_HOME
55+
CMD ["supervisord", "-c", "agent/supervisor.conf"]
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ FROM debian:jessie
33
MAINTAINER Datadog <package@datadoghq.com>
44

55
ENV DOCKER_DD_AGENT=yes \
6-
AGENT_VERSION=1:5.16.0-1
7-
8-
COPY entrypoint.sh supervisor.conf /
6+
AGENT_VERSION=1:5.16.0-1 \
7+
DD_ETC_ROOT=/etc/dd-agent \
8+
PATH="/opt/datadog-agent/embedded/bin:/opt/datadog-agent/bin:${PATH}" \
9+
PYTHONPATH=/opt/datadog-agent/agent \
10+
DD_CONF_LOG_TO_SYSLOG=no \
11+
NON_LOCAL_TRAFFIC=yes
912

1013
# Install the Agent
1114
RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/datadog.list \
@@ -15,24 +18,21 @@ RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/d
1518
&& apt-get clean \
1619
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
1720

18-
# Configure the Agent
19-
# 1. Listen to statsd from other containers
20-
# 2. Turn syslog off
21-
# 3. Use custom supervisor.conf
22-
RUN mv /etc/dd-agent/datadog.conf.example /etc/dd-agent/datadog.conf \
23-
&& sed -i -e"s/^.*non_local_traffic:.*$/non_local_traffic: yes/" /etc/dd-agent/datadog.conf \
24-
&& sed -i -e"s/^.*log_to_syslog:.*$/log_to_syslog: no/" /etc/dd-agent/datadog.conf \
25-
&& mv /supervisor.conf /etc/dd-agent/supervisor.conf
26-
27-
# Expose supervisor, DogStatsD and trace-agent port
28-
EXPOSE 9001/tcp 8125/udp 8126/tcp
21+
# Add install and config files
22+
COPY entrypoint-dogstatsd.sh /entrypoint.sh
23+
COPY dogstatsd/supervisor.conf /etc/dd-agent/supervisor.conf
24+
COPY config_builder.py /config_builder.py
2925

30-
# Set proper permissions to allow running as a non-root user
31-
RUN chmod g+w /etc/dd-agent/datadog.conf \
26+
RUN mv /etc/dd-agent/datadog.conf.example /etc/dd-agent/datadog.conf \
27+
# Set proper permissions to allow running as a non-root user
28+
&& chmod g+w /etc/dd-agent/datadog.conf \
3229
&& chmod -R g+w /var/log/datadog \
3330
&& chmod g+w /etc/dd-agent \
3431
&& chmod g+w /opt/datadog-agent/run/
3532

33+
# Expose supervisor, DogStatsD and trace-agent port
34+
EXPOSE 9001/tcp 8125/udp 8126/tcp
35+
3636
# Healthcheck
3737
HEALTHCHECK --interval=5m --timeout=3s --retries=1 \
3838
CMD test $(/opt/datadog-agent/embedded/bin/python /opt/datadog-agent/bin/supervisorctl \
Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,39 @@ ENV DD_HOME=/opt/datadog-agent \
66
DOCKER_DD_AGENT=yes \
77
# prevent the agent from being started after install
88
DD_START_AGENT=0 \
9-
AGENT_VERSION=5.16.0
10-
11-
# Add install and config files
12-
ADD https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh /tmp/setup_agent.sh
13-
COPY entrypoint.sh supervisor.conf /
14-
15-
# Expose supervisor and DogStatsD port
16-
EXPOSE 9001/tcp 8125/udp
9+
AGENT_VERSION=5.16.0 \
10+
DD_ETC_ROOT="/opt/datadog-agent/agent" \
11+
PATH="/opt/datadog-agent/venv/bin:/opt/datadog-agent/agent/bin:$PATH" \
12+
PYTHONPATH=/opt/datadog-agent/agent \
13+
DD_CONF_LOG_TO_SYSLOG=no \
14+
NON_LOCAL_TRAFFIC=yes
1715

1816
# Install minimal dependencies
1917
RUN apk add -qU --no-cache curl-dev python-dev tar sysstat ca-certificates
2018

2119
# Install build dependencies
20+
ADD https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh /tmp/setup_agent.sh
2221
RUN apk add -qU --no-cache -t .build-deps curl gcc musl-dev pgcluster-dev linux-headers \
2322
# Install the agent
2423
&& sh /tmp/setup_agent.sh \
2524
# Clean build dependencies
26-
&& apk del -q .build-deps
27-
28-
# Configure the Agent
29-
# 1. Listen to statsd from other containers
30-
# 2. Turn syslog off
31-
# 3. Use custom supervisor.conf
32-
# 4. Clean up the install script
33-
RUN mv $DD_HOME/agent/datadog.conf.example $DD_HOME/agent/datadog.conf \
34-
&& sed -i -e"s/^.*non_local_traffic:.*$/non_local_traffic: yes/" $DD_HOME/agent/datadog.conf \
35-
&& sed -i -e"s/^.*log_to_syslog:.*$/log_to_syslog: no/" $DD_HOME/agent/datadog.conf \
36-
&& mv /supervisor.conf $DD_HOME/agent/supervisor.conf \
37-
&& rm /tmp/setup_agent.sh
25+
&& apk del -q .build-deps \
26+
# Clean up the install script
27+
&& rm /tmp/setup_agent.sh
28+
29+
# Add install and config files
30+
COPY entrypoint-dogstatsd.sh /entrypoint.sh
31+
COPY dogstatsd/supervisor-alpine.conf $DD_HOME/agent/supervisor.conf
32+
COPY config_builder.py /config_builder.py
3833

3934
# Set proper permissions to allow running as a non-root user
40-
RUN chmod -R g+wx $DD_HOME \
35+
RUN mv $DD_HOME/agent/datadog.conf.example $DD_HOME/agent/datadog.conf \
36+
&& chmod -R g+wx $DD_HOME \
4137
&& chmod g+x /entrypoint.sh
4238

39+
# Expose supervisor and DogStatsD port
40+
EXPOSE 9001/tcp 8125/udp
41+
4342
ENTRYPOINT ["/entrypoint.sh"]
4443

4544
USER 1001

jmx/Dockerfile renamed to Dockerfile-jmx

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@ FROM debian:jessie
33
MAINTAINER Datadog <package@datadoghq.com>
44

55
ENV DOCKER_DD_AGENT=yes \
6-
AGENT_VERSION=1:5.16.0-1
6+
AGENT_VERSION=1:5.16.0-1 \
7+
DD_ETC_ROOT=/etc/dd-agent \
8+
PATH="/opt/datadog-agent/embedded/bin:/opt/datadog-agent/bin:${PATH}" \
9+
PYTHONPATH=/opt/datadog-agent/agent \
10+
DD_CONF_SD_JMX_ENABLE=yes \
11+
DD_CONF_LOG_TO_SYSLOG=no \
12+
NON_LOCAL_TRAFFIC=yes \
13+
DD_SUPERVISOR_DELETE_USER=yes
714

815
# Install the Agent
916
RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/datadog.list \
@@ -15,25 +22,16 @@ RUN echo "deb http://apt.datadoghq.com/ stable main" > /etc/apt/sources.list.d/d
1522
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
1623

1724
# Configure the Agent
18-
# 1. Listen to statsd from other containers
19-
# 2. Turn syslog off
20-
# 3. Enable Service Discovery with JMXFetch
21-
# 4. Remove dd-agent user from supervisor configuration
22-
# 5. Remove dd-agent user from init.d configuration
23-
# 6. Fix permission on /etc/init.d/datadog-agent
24-
RUN mv /etc/dd-agent/datadog.conf.example /etc/dd-agent/datadog.conf \
25-
&& sed -i -e"s/^.*non_local_traffic:.*$/non_local_traffic: yes/" /etc/dd-agent/datadog.conf \
26-
&& sed -i -e"s/^.*log_to_syslog:.*$/log_to_syslog: no/" /etc/dd-agent/datadog.conf \
27-
&& sed -i -e"s/^.*sd_jmx_enable:.*$/sd_jmx_enable: yes/" /etc/dd-agent/datadog.conf \
28-
&& sed -i "/user=dd-agent/d" /etc/dd-agent/supervisor.conf \
25+
RUN mv ${DD_ETC_ROOT}/datadog.conf.example ${DD_ETC_ROOT}/datadog.conf \
2926
&& sed -i 's/AGENTUSER="dd-agent"/AGENTUSER="root"/g' /etc/init.d/datadog-agent \
30-
&& rm /etc/dd-agent/conf.d/network.yaml.default \
31-
|| chmod +x /etc/init.d/datadog-agent
27+
&& rm -f ${DD_ETC_ROOT}/conf.d/network.yaml.default \
28+
&& chmod +x /etc/init.d/datadog-agent
3229

33-
# Add Docker check
34-
COPY conf.d/docker_daemon.yaml /etc/dd-agent/conf.d/docker_daemon.yaml
35-
36-
COPY entrypoint.sh /entrypoint.sh
30+
# Add Docker check
31+
COPY conf.d/docker_daemon.yaml ${DD_ETC_ROOT}/conf.d/docker_daemon.yaml
32+
# Add install and config files
33+
COPY entrypoint.sh /entrypoint.sh
34+
COPY config_builder.py /config_builder.py
3735

3836
# Extra conf.d and checks.d
3937
VOLUME ["/conf.d", "/checks.d"]
@@ -44,7 +42,7 @@ EXPOSE 8125/udp 9001/tcp
4442
# Healthcheck
4543
HEALTHCHECK --interval=5m --timeout=3s --retries=1 \
4644
CMD test $(/opt/datadog-agent/embedded/bin/python /opt/datadog-agent/bin/supervisorctl \
47-
-c /etc/dd-agent/supervisor.conf status | awk '{print $2}' | egrep -v 'RUNNING|EXITED' | wc -l) \
45+
-c ${DD_ETC_ROOT}/supervisor.conf status | awk '{print $2}' | egrep -v 'RUNNING|EXITED' | wc -l) \
4846
-eq 0 || exit 1
4947

5048
ENTRYPOINT ["/entrypoint.sh"]

0 commit comments

Comments
 (0)