เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฒเฉŒเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจตเจœเฉ‹เจ‚ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจชเจฒเฉฐเจ• เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ

เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฒเฉŒเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจตเจœเฉ‹เจ‚ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจชเจฒเฉฐเจ• เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ

เจธเจชเจฒเฉฐเจ• เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจชเจ›เจพเจฃเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจตเจชเจพเจฐเจ• เจฒเฉŒเจ— เจธเฉฐเจ—เฉเจฐเจนเจฟ เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ‰เจคเจชเจพเจฆเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค เจนเฉเจฃ เจตเฉ€, เจœเจฆเฉ‹เจ‚ เจฐเฉ‚เจธ เจตเจฟเฉฑเจš เจตเจฟเจ•เจฐเฉ€ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€, เจคเจพเจ‚ เจ‡เจน เจ‡เจธ เจ‰เจคเจชเจพเจฆ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผ/เจ•เจฟเจตเฉ‡เจ‚-เจ•เจฐเจจ เจจเจพ เจฒเจฟเจ–เจฃ เจฆเจพ เจ•เจพเจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ‰เจฆเฉ‡เจธเจผ: เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‡ เจฌเจฟเจจเจพเจ‚ เจธเจชเจฒเฉฐเจ• เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจจเฉ‹เจกเจธ เจคเฉ‹เจ‚ เจธเจฟเจธเจŸเจฎ เจฒเฉŒเจ— เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเฉ‹

เจฎเฉˆเจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ, เจœเฉ‹ เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฅเฉ‹เฉœเจพ เจ…เจœเฉ€เจฌ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ.
เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ เจจเจพเจฒ เจฒเจฟเฉฐเจ• เจ•เจฐเฉ‹
เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ•เฉ€ เจนเฉˆ:

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 โ€” เจ‡เจน เจธเจชเจฒเฉฐเจ• เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเจฎเจพเจฃ เจชเฉฑเจคเจฐ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจตเฉˆเฉฑเจฌ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเฉฑเจฅเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจเจพ เจนเฉˆ (เจคเจธเจตเฉ€เจฐเจพเจ‚ เจตเจฟเฉฑเจš)เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฒเฉŒเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจตเจœเฉ‹เจ‚ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจชเจฒเฉฐเจ• เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ

เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฒเฉŒเจ— เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจตเจœเฉ‹เจ‚ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจชเจฒเฉฐเจ• เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ
เจ‡เจน เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจชเฉเจฐเจพเจฒเฉ‡เจ– เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจชเฉˆเจ• เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเจพเจกเฉ‡ SplunkCloud เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจนเจจ outputs.conf เจธเจพเจกเฉ‡ เจ‡เจจเจชเฉเจŸ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ‡ เจจเจพเจฒเฅค เจ‡เจน เจซเจพเจˆเจฒ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจขเฉเจ•เจตเฉ€เจ‚ เจฐเจนเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจธเจชเจฒเฉฐเจ• เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจธเจฅเจพเจชเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจœเจพเจ‚ เจ‡เฉฐเจชเฉเฉฑเจŸ เจจเฉ‹เจก เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเจฆเฉ‡ เจœเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจ†เจจ-เจชเฉเจฐเฉ€เจฎเจฟเจธ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ‡เจธ เจจเฉ‚เฉฐ เจกเฉฑเจฌเฉ‡ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจœเฉ‹เฉœเจจ เจตเจฟเฉฑเจš เจ•เฉเจ เจตเฉ€ เจ—เจฒเจค เจจเจนเฉ€เจ‚ เจนเฉˆ.

เจ…เจคเฉ‡ เจ†เจ–เจฐเฉ€ เจ—เฉฑเจฒ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจนเฉˆ. เจนเจพเจ‚, เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจธเจพเจกเฉ‡ เจตเจฟเฉฑเจš inputs.conf เจ…เจธเฉ€เจ‚ เจ‰เจน เจฒเฉŒเจ— เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจธเจชเจฒเฉฐเจ• เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจœเฉ‡เจ•เจฐ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ•เจ เจชเฉเจคเจฒเฉ€ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฆเฉ‡ เจนเฉ‹เฅค เจธเจฟเจฐเจซ เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจซเจพเจฐเจตเจฐเจกเจฐ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจกเฉˆเจฎเจจ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€ ./splunk เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เจฐเฉ‹.

เจ‰เจน เจ•เจฟเจธ เจ•เจฟเจธเจฎ เจฆเฉ€เจ†เจ‚ เจกเฉŒเจ•เจฐ เจธเจŸเฉˆเจŸเจธ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจนเจจ? เจคเฉ‹เจ‚ Github 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจพเจฃเจพ เจนเฉฑเจฒ เจนเฉˆ outcoldman, เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจฅเฉ‹เจ‚ เจฒเจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ (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
}

เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจนเจฐเฉ‡เจ• เจตเจพเจคเจพเจตเจฐเจฃ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ‡เจ•เจพเจˆ เจฒเจˆ, เจญเจพเจตเฉ‡เจ‚ เจ‡เจน เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉ‹เจตเฉ‡ เจœเจพเจ‚ เจ‡เฉฑเจ• เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ–เฉ‹เจœ เจฆเฉ€ เจ—เจคเฉ€ เจจเฉ‚เฉฐ เจจเฉเจ•เจธเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฆเจพ เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ‡เจ•เฉฑเจ เจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ. เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจจเจพเจฎ เจฆเฉ‡เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจจเจฟเจฏเจฎ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ: _. เจ‡เจธเจฒเจˆ, เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจกเฉˆเจฎเจจ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚ sed-เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ‡ เจจเจพเจฎ เจฆเจพ เจตเจพเจˆเจฒเจกเจ•เจพเจฐเจกเฅค เจตเจพเจคเจพเจตเจฐเจฃ เจจเจพเจฎ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉเจ†เจฐเจพ เจชเจพเจธ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฎเจœเจผเจพเจ•เฉ€เจ† เจฒเฉฑเจ—เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจตเฉ€ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจธเจชเจฒเฉฐเจ• เจกเฉŒเจ•เจฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจฎเฉ‡เจœเจผเจฌเจพเจจ เจจเจพเจ‚. เจ‰เจน เจ…เจœเฉ‡ เจตเฉ€ เจนเฉ‹เจธเจŸ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ€ เจ†เจˆเจกเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจฒเฉŒเจ— เจญเฉ‡เจœเฉ‡เจ—เจพเฅค เจ‡เฉฑเจ• เจนเฉฑเจฒ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡, เจคเฉเจธเฉ€เจ‚ เจฎเจพเจŠเจ‚เจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ / 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

เจจเจคเฉ€เจœเจพ

เจนเจพเจ‚, เจธเจผเจพเจ‡เจฆ เจนเฉฑเจฒ เจ†เจฆเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจธเจฐเจต เจตเจฟเจ†เจชเจ• เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจนเจจ "เจนเจพเจฐเจกเจ•เฉ‹เจก". เจชเจฐ เจ‡เจธเจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡, เจนเจฐ เจ•เฉ‹เจˆ เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจคเจธเจตเฉ€เจฐ เจฌเจฃเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจจเจฟเฉฑเจœเฉ€ เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‡, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจตเจพเจชเจฐเจฆเจพ เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจชเจฒเฉฐเจ• เจซเจพเจฐเจตเจฐเจกเจฐ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

เจฒเจฟเฉฐเจ•:

เจฒเฉ‡เจ– เจคเฉ‹เจ‚ เจนเฉฑเจฒ
เจ†เจ‰เจŸเจ•เฉ‹เจฒเจกเจฎเฉˆเจจ เจฆเจพ เจ‡เฉฑเจ• เจนเฉฑเจฒ เจœเจฟเจธ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เฉเจ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจฎเฉเฉœ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจ•เฉ€เจคเจพ
เจฆเฉ‡. เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจซเจพเจฐเจตเจฐเจกเจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹