เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ

เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ

เชธเซเชชเซเชฒเช‚เช• เช เชธเซŒเชฅเซ€ เชตเชงเซ เช“เชณเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชตเซเชฏเชพเชชเชพเชฐเซ€ เชฒเซ‹เช— เชธเช‚เช—เซเชฐเชน เช…เชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช‰เชคเซเชชเชพเชฆเชจเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เช›เซ‡. เช…เชคเซเชฏเชพเชฐเซ‡ เชชเชฃ, เชœเซเชฏเชพเชฐเซ‡ เชฐเชถเชฟเชฏเชพเชฎเชพเช‚ เชตเซ‡เชšเชพเชฃ เชนเชตเซ‡ เชฅเชคเซเช‚ เชจเชฅเซ€, เชคเซเชฏเชพเชฐเซ‡ เช† เช‰เชคเซเชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ เชธเซ‚เชšเชจเชพเช“/เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ€ เชคเซ‡ เชจ เชฒเช–เชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชจเชฅเซ€.

เช‰เชฆเซเชฆเซ‡เชถ: เชนเซ‹เชธเซเชŸ เชฎเชถเซ€เชจ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฌเชฆเชฒเซเชฏเชพ เชตเชฟเชจเชพ เชธเซเชชเซเชฒเช‚เช•เชฎเชพเช‚ เชกเซ‹เช•เชฐ เชจเซ‹เชกเซเชธเชฎเชพเช‚เชฅเซ€ เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‹

เชนเซเช‚ เชธเชคเซเชคเชพเชตเชพเชฐ เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚, เชœเซ‡ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฅเซ‹เชกเซ€ เชตเชฟเชšเชฟเชคเซเชฐ เชฒเชพเช—เซ‡ เช›เซ‡.
เชกเซ‹เช•เชฐ เชนเชฌ เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช•
เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชถเซเช‚ เช›เซ‡:

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 *********

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

เชฎเชนเชพเชจ. เชˆเชฎเซ‡เชœเชฎเชพเช‚ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชชเชฃ เชจเชฅเซ€. เชเชŸเชฒเซ‡ เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชคเชฎเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชถเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชฌเชพเชˆเชจเชฐเซ€เช“ เชธเชพเชฅเซ‡ เช†เชฐเซเช•เชพเชˆเชต เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ, เช…เชจเชชเซ…เช• เช•เชฐเชตเชพ เช…เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชฒเชพเช—เชถเซ‡.
เชกเซ‹เช•เชฐ-เชตเซ‡ เช…เชจเซ‡ เชคเซ‡ เชฌเชงเชพ เชตเชฟเชถเซ‡ เชถเซเช‚?

เชจเชพ เช†เชญเชพเชฐ. เช…เชฎเซ‡ เชเช• เช…เชฒเช— เชฐเชธเซเชคเซ‹ เชฒเชˆเชถเซเช‚. เชœเซ‹ เช†เชชเชฃเซ‡ เช† เชฌเชงเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเซเชŸเซ‡เชœ เชชเชฐ เช•เชฐเซ€เช เชคเซ‹? เชชเช›เซ€ เชšเชพเชฒเซ‹!

เชตเชงเซ เชธเชฎเชฏ เชตเชฟเชฒเช‚เชฌ เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชคเชฎเชจเซ‡ เชคเชฐเชค เชœ เช…เช‚เชคเชฟเชฎ เช›เชฌเซ€ เชฌเชคเชพเชตเซ€เชถ:

เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ

# ะขัƒั‚ ัƒ ะบะพะณะพ ะบะฐะบะธะต ะฟั€ะตะดะฟะพั‡ั‚ะตะฝะธั
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" ]

เชคเซ‹ เชคเซ‡เชฎเชพเช‚ เชถเซเช‚ เชธเชฎเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡

first_start.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

เชชเซเชฐเชฅเชฎ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชธเซเชชเซเชฒเช‚เช• เชคเชฎเชจเซ‡ เชฒเซ‹เช—เชฟเชจ/เชชเชพเชธเชตเชฐเซเชก เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เชฎเชพเชคเซเชฐ เชคเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชตเชนเซ€เชตเชŸเซ€ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชซเช•เซเชค เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชœเซ‡เชฅเซ€ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช…เชจเซ‡ เชฒเซ‹เช— เชจเชฆเซ€เชจเซ€ เชœเซ‡เชฎ เชตเชนเซ‡. เช…เชฒเชฌเชคเซเชค, เช† เชนเชพเชฐเซเชกเช•เซ‹เชก เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชจเซ‡ เชฌเซ€เชœเซ€ เช•เซ‹เชˆ เชฐเซ€เชคเซ‹ เชฎเชณเซ€ เชจเชฅเซ€.

เช†เช—เชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช…เชจเซเชธเชพเชฐ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

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

splunkclouduf.spl โ€” เช† เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ เชฎเชพเชŸเซ‡เชจเซ€ เช“เชณเช–เชชเชคเซเชฐ เชซเชพเชˆเชฒ เช›เซ‡, เชœเซ‡ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐเชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชฏเชพเช‚ เช•เซเชฒเชฟเช• เช•เชฐเชตเซเช‚ (เชคเชธเชตเซ€เชฐเซ‹เชฎเชพเช‚)เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ

เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ
เช† เชเช• เชจเชฟเชฏเชฎเชฟเชค เช†เชฐเซเช•เชพเช‡เชต เช›เซ‡ เชœเซ‡ เช…เชจเชชเซ‡เช• เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช…เช‚เชฆเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เชธเซเชชเซเชฒเชจเซเช•เช•เซเชฒเชพเช‰เชก เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชชเชพเชธเชตเชฐเซเชก เช›เซ‡ outputs.conf เช…เชฎเชพเชฐเชพ เช‡เชจเชชเซเชŸ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชธเชพเชฅเซ‡. เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซเช‚ เชธเซเชชเซเชฒเช‚เช• เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เชจ เช•เชฐเซ‹ เช…เชฅเชตเชพ เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช‘เชจ-เชชเซเชฐเชฟเชฎเชพเช‡เช เชนเซ‹เชฏ เชคเซ‹ เช‡เชจเชชเซเชŸ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเซ‹ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช† เชซเชพเช‡เชฒ เชธเช‚เชฌเช‚เชงเชฟเชค เชฐเชนเซ‡เชถเซ‡. เชคเซ‡เชฅเซ€, เชคเซ‡เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช•เช‚เชˆ เช–เซ‹เชŸเซเช‚ เชจเชฅเซ€.

เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชตเชธเซเชคเซ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช›เซ‡. เชนเชพ, เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช…เชฎเชพเชฐเชพ เชฎเชพเช‚ inputs.conf เช…เชฎเซ‡ เชฒเซ‹เช— เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เชœเซ‡ เช…เชฎเซ‡ เชธเซเชชเซเชฒเช‚เช•เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช. เชœเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เช•เช เชชเซ‚เชคเชณเซ€ เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“เชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เช† เชซเชพเช‡เชฒเชจเซ‡ เช›เชฌเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชเช•เชฎเชพเชคเซเชฐ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชกเชฟเชฎเชจ เชถเชฐเซ‚ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“เชจเซ‡ เชœเซเช เช›เซ‡, เช…เชจเซเชฏเชฅเชพ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ ./splunk เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹.

เชคเซ‡ เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชกเซ‹เช•เชฐ เชธเซเชŸเซ‡เชŸเซเชธ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช›เซ‡? เชฅเซ€ Github เชชเชฐ เชเช• เชœเซ‚เชจเซ‹ เช‰เช•เซ‡เชฒ เช›เซ‡ เช†เช‰เชŸเช•เซ‹เชฒเซเชกเชฎเซ‡เชจ, เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชคเซเชฏเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เช…เชจเซ‡ เชกเซ‹เช•เชฐ (ce-17. *) เช…เชจเซ‡ เชธเซเชชเซเชฒเช‚เช• (7*) เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เชชเซเชฐเชพเชชเซเชค เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹

เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเซเชธ: (เชฌเซ‡ เชšเชฟเชคเซเชฐเซ‹)เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ

เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช— เช•เชฒเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ
เชกเซ‡เชถ เชฎเชพเชŸเซ‡เชจเซ‹ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เช†เชชเซ‡เชฒเซ€ เชฒเชฟเช‚เช•เชฎเชพเช‚ เช›เซ‡. เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชคเซเชฏเชพเช‚ 2 เชชเชธเช‚เชฆเช—เซ€เชจเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เช›เซ‡: 1 - เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชชเชธเช‚เชฆเช—เซ€ (เชฎเชพเชธเซเช• เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชงเชพเชฏเซ‡เชฒ), เชนเซ‹เชธเซเชŸ/เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชธเช‚เชฆเช—เซ€. เชคเชฎเซ‡ เชœเซ‡ เชจเชพเชฎเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฎเชพเชธเซเช•เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชจเชฟเชทเซเช•เชฐเซเชทเชฎเชพเช‚, เชนเซเช‚ เชคเชฎเชพเชฐเซเช‚ เชงเซเชฏเชพเชจ เช•เชพเชฐเซเชฏ เชคเชฐเชซ เชฆเซ‹เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เชถเชฐเซ‚เช†เชค() ะฒ

entrypoint.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
}

เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชฆเชฐเซ‡เช• เชชเชฐเซเชฏเชพเชตเชฐเชฃ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟเช—เชค เชเชจเซเชŸเชฟเชŸเซ€ เชฎเชพเชŸเซ‡, เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชนเซ‹เชฏ เช•เซ‡ เชนเซ‹เชธเซเชŸ เชฎเชถเซ€เชจ, เช…เชฎเซ‡ เชเช• เช…เชฒเช— เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เช† เชฐเซ€เชคเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชจเซ‹ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชธเช‚เชšเชฏ เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชถเซ‹เชงเชจเซ€ เช—เชคเชฟเชจเซ‡ เช…เชธเชฐ เชฅเชถเซ‡ เชจเชนเซ€เช‚. เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเซ‡ เชจเชพเชฎ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเชณ เชจเชฟเชฏเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡: _. เชคเซ‡เชฅเซ€, เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชฌเชจเชตเชพ เชฎเชพเชŸเซ‡, เชกเชฟเชฎเชจ เชชเซ‹เชคเซ‡ เชœ เชฒเซ‹เช‚เชš เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชฌเชฆเชฒเซ€เช เช›เซ€เช เชชเชฐเช‚เชคเซ- เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเชพ เชจเชพเชฎเชจเซเช‚ เชตเชพเช‡เชฒเซเชกเช•เชพเชฐเซเชก. เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชจเซ‡เชฎ เชตเซ‡เชฐเซ€เชเชฌเชฒ เช เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชฐเชฎเซเชœเซ€ เชฒเชพเช—เซ‡ เช›เซ‡.

เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชชเชฃ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เชธเซเชชเซเชฒเช‚เช• เชกเซ‹เช•เชฐ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ€ เชนเชพเชœเชฐเซ€เชฅเซ€ เชชเซเชฐเชญเชพเชตเชฟเชค เชจเชฅเซ€ เชฏเชœเชฎเชพเชจเชจเชพเชฎ. เชคเซ‡ เชนเชœเซ เชชเชฃ เชนเซ‹เชธเซเชŸ เชซเซ€เชฒเซเชกเชฎเชพเช‚ เชคเซ‡เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เช†เชˆเชกเซ€ เชธเชพเชฅเซ‡ เชœเชฟเชฆเซเชฆเชชเซ‚เชฐเซเชตเช• เชฒเซ‹เช— เชฎเซ‹เช•เชฒเชถเซ‡. เช‰เช•เซ‡เชฒ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ / etc / เชฏเชœเชฎเชพเชจเชจเชพเชฎ เชฏเชœเชฎเชพเชจ เชฎเชถเซ€เชจเชฎเชพเช‚เชฅเซ€ เช…เชจเซ‡ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชตเช–เชคเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เชจเชพเชฎเซ‹ เชœเซ‡เชตเชพ เชœ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เช•เชฐเซ‹.

เช‰เชฆเชพเชนเชฐเชฃ 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

เชชเชฐเชฟเชฃเชพเชฎ

เชนเชพ, เช•เชฆเชพเชš เช‰เช•เซ‡เชฒ เช†เชฆเชฐเซเชถ เชจเชฅเซ€ เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เช›เซ‡ "เชนเชพเชฐเซเชกเช•เซ‹เชก". เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡, เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟ เชคเซ‡เชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เช›เชฌเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เช–เชพเชจเช—เซ€ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‹ เชคเซ‡ เชฅเชพเชฏ เชคเซ‡เชฎ, เชคเชฎเชพเชฐเซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชธเซเชชเซเชฒเช‚เช• เชซเซ‹เชฐเชตเชฐเซเชกเชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชธเช‚เชฆเชฐเซเชญเซ‹:

เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เช‰เช•เซ‡เชฒ
เช†เช‰เชŸเช•เซ‹เชฒเซเชกเชฎเซ‡เชจเชจเซ‹ เช‰เช•เซ‡เชฒ เช•เซ‡ เชœเซ‡เชฃเซ‡ เช…เชฎเชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‹ เชซเชฐเซ€เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชชเซเชฐเซ‡เชฐเชฃเชพ เช†เชชเซ€
เชจเชพ. เชฏเซเชจเชฟเชตเชฐเซเชธเชฒ เชซเซ‹เชฐเชตเชฐเซเชกเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹