์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder

์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder

Splunk๋Š” ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ ์ƒ์—…์šฉ ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋Ÿฌ์‹œ์•„์—์„œ ๋” ์ด์ƒ ํŒ๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ์ง€๊ธˆ๋„ ์ด ์ œํ’ˆ์— ๋Œ€ํ•œ ์ง€์นจ/์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์„ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

ํƒœ์Šคํฌ: ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  Splunk์˜ Docker ๋…ธ๋“œ์—์„œ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์•ฝ๊ฐ„ ์ด์ƒํ•ด ๋ณด์ด๋Š” ๊ณต์‹์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
Docker ํ—ˆ๋ธŒ ๋งํฌ
์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

1. ํ’€๋ฆผ ์ด๋ฏธ์ง€

$ docker pull splunk/universalforwarder:latest

2. ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

$ docker run -d  -p 9997:9997 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=<password>' splunk/universalforwarder:latest

3. ์ปจํ…Œ์ด๋„ˆ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค

docker exec -it <container-id> /bin/bash

๋‹ค์Œ์œผ๋กœ ๋ฌธ์„œ์— ์•Œ๋ ค์ง„ ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.


./splunk add forward-server <host name or ip address>:<listening port>
./splunk add monitor /var/log
./splunk restart

๊ธฐ๋‹ค๋ฆฌ๋‹ค. ๋ฌด์—‡?

๊ทธ๋Ÿฌ๋‚˜ ๋†€๋ผ์›€์€ ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์˜ ๊ณต์‹ ์ด๋ฏธ์ง€์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์‹ค๋ง


$ docker run -it -p 9997:9997 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=password' splunk/universalforwarder:latest

PLAY [Run default Splunk provisioning] *******************************************************************************************************************************************************************************************************
Tuesday 09 April 2019  13:40:38 +0000 (0:00:00.096)       0:00:00.096 *********

TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************
ok: [localhost]
Tuesday 09 April 2019  13:40:39 +0000 (0:00:01.520)       0:00:01.616 *********

TASK [Get actual hostname] *******************************************************************************************************************************************************************************************************************
changed: [localhost]
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.599)       0:00:02.215 *********
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.054)       0:00:02.270 *********

TASK [set_fact] ******************************************************************************************************************************************************************************************************************************
ok: [localhost]
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.075)       0:00:02.346 *********
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.067)       0:00:02.413 *********
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.060)       0:00:02.473 *********
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.051)       0:00:02.525 *********
Tuesday 09 April 2019  13:40:40 +0000 (0:00:00.056)       0:00:02.582 *********
Tuesday 09 April 2019  13:40:41 +0000 (0:00:00.216)       0:00:02.798 *********
included: /opt/ansible/roles/splunk_common/tasks/change_splunk_directory_owner.yml for localhost
Tuesday 09 April 2019  13:40:41 +0000 (0:00:00.087)       0:00:02.886 *********

TASK [splunk_common : Update Splunk directory owner] *****************************************************************************************************************************************************************************************
ok: [localhost]
Tuesday 09 April 2019  13:40:41 +0000 (0:00:00.324)       0:00:03.210 *********
included: /opt/ansible/roles/splunk_common/tasks/get_facts.yml for localhost
Tuesday 09 April 2019  13:40:41 +0000 (0:00:00.094)       0:00:03.305 *********

ะฝัƒ ะธ ั‚ะฐะบ ะดะฐะปะตะต...

์—„์ฒญ๋‚œ. ์ด๋ฏธ์ง€์—๋Š” ์•„ํ‹ฐํŒฉํŠธ๋„ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ์•„์นด์ด๋ธŒ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์••์ถ•์„ ํ’€๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
docker-way์™€ ๊ทธ ๋ชจ๋“  ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๊ณ ๋ง™์ง€ ๋งŒ ์‚ฌ์–‘ ํ• ๊ฒŒ. ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๊ธธ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ž‘์—…์„ ์กฐ๋ฆฝ ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ๊ทธ๋Ÿผ ๊ฐ€์ž!

๋„ˆ๋ฌด ์˜ค๋ž˜ ์ง€์ฒดํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ตœ์ข… ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๋กœ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„์ปค ํŒŒ์ผ

# ะขัƒั‚ ัƒ ะบะพะณะพ ะบะฐะบะธะต ะฟั€ะตะดะฟะพั‡ั‚ะตะฝะธั
FROM centos:7

# ะ—ะฐะดะฐั‘ะผ ะฟะตั€ะตะผะตะฝะฝั‹ะต, ั‡ั‚ะพะฑั‹ ะบะฐะถะดั‹ะน ั€ะฐะท ะฟั€ะธ ัั‚ะฐั€ั‚ะต ะฝะต ัƒะบะฐะทั‹ะฒะฐั‚ัŒ ะธั…
ENV SPLUNK_HOME /splunkforwarder
ENV SPLUNK_ROLE splunk_heavy_forwarder
ENV SPLUNK_PASSWORD changeme
ENV SPLUNK_START_ARGS --accept-license

# ะกั‚ะฐะฒะธะผ ะฟะฐะบะตั‚ั‹
# wget - ั‡ั‚ะพะฑั‹ ัะบะฐั‡ะฐั‚ัŒ ะฐั€ั‚ะตั„ะฐะบั‚ั‹
# expect - ะฟะพะฝะฐะดะพะฑะธั‚ัั ะดะปั ะฟะตั€ะฒะพะฝะฐั‡ะฐะปัŒะฝะพะณะพ ะทะฐะฟัƒัะบะฐ Splunk ะฝะฐ ัั‚ะฐะฟะต ัะฑะพั€ะบะธ
# jq - ะธัะฟะพะปัŒะทัƒะตั‚ัั ะฒ ัะบั€ะธะฟั‚ะฐั…, ะบะพั‚ะพั€ั‹ะต ัะพะฑะธั€ะฐัŽั‚ ัั‚ะฐั‚ะธัั‚ะธะบัƒ ะดะพะบะตั€ะฐ
RUN yum install -y epel-release 
    && yum install -y wget expect jq

# ะšะฐั‡ะฐะตะผ, ั€ะฐัะฟะฐะบะพะฒั‹ะฒะฐะตะผ, ัƒะดะฐะปัะตะผ
RUN wget -O splunkforwarder-7.2.4-8a94541dcfac-Linux-x86_64.tgz 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?architecture=x86_64&platform=linux&version=7.2.4&product=universalforwarder&filename=splunkforwarder-7.2.4-8a94541dcfac-Linux-x86_64.tgz&wget=true' 
    && wget -O docker-18.09.3.tgz 'https://download.docker.com/linux/static/stable/x86_64/docker-18.09.3.tgz' 
    && tar -xvf splunkforwarder-7.2.4-8a94541dcfac-Linux-x86_64.tgz 
    && tar -xvf docker-18.09.3.tgz  
    && rm -f splunkforwarder-7.2.4-8a94541dcfac-Linux-x86_64.tgz 
    && rm -f docker-18.09.3.tgz

# ะก shell ัะบั€ะธะฟั‚ะฐะผะธ ะฒัั‘ ะฟะพะฝัั‚ะฝะพ, ะฐ ะฒะพั‚ inputs.conf, splunkclouduf.spl ะธ first_start.sh ะฝัƒะถะดะฐัŽั‚ัั ะฒ ะฟะพััะฝะตะฝะธะธ. ะžะฑ ัั‚ะพะผ ั€ะฐััะบะฐะถัƒ ะฟะพัะปะต source ั‚ัะณะฐ.
COPY [ "inputs.conf", "docker-stats/props.conf", "/splunkforwarder/etc/system/local/" ]
COPY [ "docker-stats/docker_events.sh", "docker-stats/docker_inspect.sh", "docker-stats/docker_stats.sh", "docker-stats/docker_top.sh", "/splunkforwarder/bin/scripts/" ]
COPY splunkclouduf.spl /splunkclouduf.spl
COPY first_start.sh /splunkforwarder/bin/

#  ะ”ะฐั‘ะผ ะฟั€ะฐะฒะฐ ะฝะฐ ะธัะฟะพะปะฝะตะฝะธะต, ะดะพะฑะฐะฒะปัะตะผ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะธ ะฒั‹ะฟะพะปะฝัะตะผ ะฟะตั€ะฒะพะฝะฐั‡ะฐะปัŒะฝัƒัŽ ะฝะฐัั‚ั€ะพะนะบัƒ
RUN chmod +x /splunkforwarder/bin/scripts/*.sh 
    && groupadd -r splunk 
    && useradd -r -m -g splunk splunk 
    && echo "%sudo ALL=NOPASSWD:ALL" >> /etc/sudoers 
    && chown -R splunk:splunk $SPLUNK_HOME 
    && /splunkforwarder/bin/first_start.sh 
    && /splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changeme 
    && /splunkforwarder/bin/splunk restart

# ะšะพะฟะธั€ัƒะตะผ ะธะฝะธั‚ ัะบั€ะธะฟั‚ั‹
COPY [ "init/entrypoint.sh", "init/checkstate.sh", "/sbin/" ]

# ะŸะพ ะถะตะปะฐะฝะธัŽ. ะšะพะผัƒ ะฝัƒะถะฝะพ ะปะพะบะฐะปัŒะฝะพ ะธะผะตั‚ัŒ ะบะพะฝั„ะธะณะธ/ะปะพะณะธ, ะบะพะผัƒ ะฝะตั‚.
VOLUME [ "/splunkforwarder/etc", "/splunkforwarder/var" ]

HEALTHCHECK --interval=30s --timeout=30s --start-period=3m --retries=5 CMD /sbin/checkstate.sh || exit 1

ENTRYPOINT [ "/sbin/entrypoint.sh" ]
CMD [ "start-service" ]

๊ทธ๋Ÿผ ๊ทธ ์•ˆ์— ๋ฌด์—‡์ด ๋“ค์–ด์žˆ๋Š”์ง€

์ฒซ_์‹œ์ž‘.sh

#!/usr/bin/expect -f
set timeout -1
spawn /splunkforwarder/bin/splunk start --accept-license
expect "Please enter an administrator username: "
send -- "adminr"
expect "Please enter a new password: "
send -- "changemer"
expect "Please confirm new password: "
send -- "changemer"
expect eof

์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ Splunk๋Š” ๋กœ๊ทธ์ธ/๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌป๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ ์ด ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งŒ ํŠน์ • ์„ค์น˜, ์ฆ‰ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋Œ€ํ•œ ๊ด€๋ฆฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๊ณ  ๋กœ๊ทธ๊ฐ€ ๊ฐ•์ฒ˜๋Ÿผ ํ๋ฅด๋„๋ก ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ํ•˜๋“œ์ฝ”๋“œ์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ ์Šคํฌ๋ฆฝํŠธ์— ๋”ฐ๋ผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

/splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changeme

splunkclouduf.spl โ€” ์ด๋Š” ์›น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” Splunk Universal Forwarder์šฉ ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ๋ฅผ ์œ„ํ•ด ํด๋ฆญํ•˜๋Š” ๊ณณ(์‚ฌ์ง„ ์ฐธ์กฐ)์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder

์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder
์••์ถ•์„ ํ’€ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ ์•„์นด์ด๋ธŒ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์—๋Š” SplunkCloud์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ์„œ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ.conf ์ž…๋ ฅ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ Splunk ์„ค์น˜๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์„ค์น˜์ธ ๊ฒฝ์šฐ ์ž…๋ ฅ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๊นŒ์ง€ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ถ”๊ฐ€ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์€ ์žฌ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ์˜ˆ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์ž…๋ ฅ.conf Splunk์— ๋ณด๋‚ด๋ ค๋Š” ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Puppet์„ ํ†ตํ•ด ๊ตฌ์„ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ํŒŒ์ผ์„ ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๊ฒƒ์€ Forwarder๊ฐ€ ๋ฐ๋ชฌ์ด ์‹œ์ž‘๋  ๋•Œ ๊ตฌ์„ฑ์„ ํ™•์ธํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ./splunk ์žฌ์‹œ์ž‘.

์–ด๋–ค ์ข…๋ฅ˜์˜ Docker ํ†ต๊ณ„ ์Šคํฌ๋ฆฝํŠธ์ธ๊ฐ€์š”? Github์—๋Š” ์˜ค๋ž˜๋œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ƒ‰๋‹ดํ•œ ์‚ฌ๋žŒ, ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฌ๊ธฐ์—์„œ ๊ฐ€์ ธ์™€ ํ˜„์žฌ ๋ฒ„์ „์˜ Docker(ce-17.*) ๋ฐ Splunk(7.*)์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ณด๋“œ: (์‚ฌ์ง„ ๋‘ ์žฅ)์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder

์‹œ์Šคํ…œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” Docker์˜ Splunk Universal Forwarder
๋Œ€์‹œ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๊ธฐ์‚ฌ ๋์— ์ œ๊ณต๋œ ๋งํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. 2๊ฐœ์˜ ์„ ํƒ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 1 - ์ธ๋ฑ์Šค ์„ ํƒ(๋งˆ์Šคํฌ๋กœ ๊ฒ€์ƒ‰), ํ˜ธ์ŠคํŠธ/์ปจํ…Œ์ด๋„ˆ ์„ ํƒ. ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค ๋งˆ์Šคํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ๊ธฐ๋Šฅ์— ์ฃผ๋ชฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€ํŠธ() ะฒ

์ง„์ž…์ .sh

start() {
    trap teardown EXIT
	if [ -z $SPLUNK_INDEX ]; then
	echo "'SPLUNK_INDEX' env variable is empty or not defined. Should be 'dev' or 'prd'." >&2
	exit 1
	else
	sed -e "s/@index@/$SPLUNK_INDEX/" -i ${SPLUNK_HOME}/etc/system/local/inputs.conf
	fi
	sed -e "s/@hostname@/$(cat /etc/hostname)/" -i ${SPLUNK_HOME}/etc/system/local/inputs.conf
    sh -c "echo 'starting' > /tmp/splunk-container.state"
	${SPLUNK_HOME}/bin/splunk start
    watch_for_failure
}

์ œ ๊ฒฝ์šฐ์—๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋“  ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์ด๋“  ๊ฐ ํ™˜๊ฒฝ๊ณผ ๊ฐœ๋ณ„ ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ์ถ•์ ๋˜์–ด๋„ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ์ €ํ•˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฐ๋Š” ๊ฐ„๋‹จํ•œ ๊ทœ์น™์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. _. ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฒ”์šฉํ™”๋˜๋„๋ก ๋ฐ๋ชฌ ์ž์ฒด๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. SED-ํ™˜๊ฒฝ ์ด๋ฆ„์— ๋Œ€ํ•œ ์™€์ผ๋“œ์นด๋“œ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ์ด๋ฆ„ ๋ณ€์ˆ˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”.

์–ด๋–ค ์ด์œ ๋กœ Splunk๋Š” docker ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์กด์žฌ ์—ฌ๋ถ€์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„. ๊ทธ๋Š” ์—ฌ์ „ํžˆ ํ˜ธ์ŠคํŠธ ํ•„๋“œ์— ์žˆ๋Š” ์ž์‹ ์˜ ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๊ณ ์ง‘์Šค๋Ÿฝ๊ฒŒ ๋ณด๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. / etc / hostname ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ์‹œ์ž‘ ์‹œ ์ธ๋ฑ์Šค ์ด๋ฆ„๊ณผ ์œ ์‚ฌํ•œ ๊ต์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ docker-compose.yml

version: '2'
services:
  splunk-forwarder:
    image: "${IMAGE_REPO}/docker-stats-splunk-forwarder:${IMAGE_VERSION}"
    environment:
      SPLUNK_INDEX: ${ENVIRONMENT}
    volumes:
    - /etc/hostname:/etc/hostname:ro
    - /var/log:/var/log
    - /var/run/docker.sock:/var/run/docker.sock:ro

ํ•ฉ๊ณ„

์˜ˆ, ์•„๋งˆ๋„ ํ•ด๊ฒฐ์ฑ…์€ ์ด์ƒ์ ์ด์ง€ ์•Š๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋ณดํŽธ์ ์ด์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. "ํ•˜๋“œ์ฝ”๋“œ". ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Docker์— Splunk Forwarder๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฐœ์ธ ์•„ํ‹ฐํŒฉํŠธ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งํฌ :

๊ธฐ์‚ฌ์˜ ํ•ด๊ฒฐ์ฑ…
์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•˜๋„๋ก ์˜๊ฐ์„ ์ค€ outcoldman์˜ ์†”๋ฃจ์…˜
์˜. Universal Forwarder ์„ค์ • ์„ค๋ช…์„œ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€