Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš

Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš

Splunk เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบ”เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบเบณเบ‚เปเป‰เบกเบนเบ™ เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ—เบฒเบ‡เบเบฒเบ™เบ„เป‰เบฒเบ—เบตเปˆเบฎเบฑเบšเบฎเบนเป‰เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ‚เบฒเบเบšเปเปˆเป„เบ”เป‰เบœเบฐเบฅเบดเบ”เบขเบนเปˆเปƒเบ™เบฅเบฑเบ”เป€เบŠเบ, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ‚เบฝเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ / เบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ™เบตเป‰.

เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡: เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบšเบˆเบฒเบ docker nodes เปƒเบ™ Splunk เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เป‚เบฎเบ”

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปเบ›เบเบ›เบฐเบซเบฅเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ Docker.
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Docker Hub
เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบเบฑเบ‡เปเบ”เปˆ:

1. เบฎเบนเบš Pullim

$ 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

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™.

เปเบฅเบฐ configure container เบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:


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

เบฅเปเบ–เป‰เบฒ. เปเบกเปˆเบ™โ€‹เบซเบเบฑเบ‡?

เปเบ•เปˆเบ„เบงเบฒเบกเปเบ›เบเปƒเบˆเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบ—เปˆเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™ container เบˆเบฒเบโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เป€เบซเบฑเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบ„เบงเบฒเบกเบœเบดเบ”เบซเบงเบฑเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ


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

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

เบเบดเปˆเบ‡เปƒเบซเบเปˆ. เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เปเบกเปˆเบ™โ€‹เปเบ•เปˆโ€‹เบกเบตโ€‹เบ‚เบญเบ‡โ€‹เบ›เบญเบกโ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เบธเบเป†เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบžเบทเปˆเบญเบ”เบฒเบงเป‚เบซเบฅเบ”เปเบŸเป‰เบกเบˆเบฑเบ”เป€เบเบฑเบšเบ”เป‰เบงเบ binaries, unpack เปเบฅเบฐ configure.
เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบš docker-way เปเบฅเบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบฑเป‰เบ™?

เบšเปเปˆโ€‹เบ‚เบญเบšโ€‹เปƒเบˆ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบญเบทเปˆเบ™. เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบš? เปเบฅเป‰เบงเป„เบ›เป€เบฅเบตเบ!

เป€เบžเบทเปˆเบญโ€‹เบšเปเปˆโ€‹เปƒเบซเป‰โ€‹เบŠเบฑเบโ€‹เบŠเป‰เบฒโ€‹เป€เบเบตเบ™โ€‹เป„เบ›, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เปƒเบ™โ€‹เบ—เบฑเบ™โ€‹เบ—เบต:

dockerfile

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

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เปเบฒเบญเบดเบ”, Splunk เบ‚เปเปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบซเป‰เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš / เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ เบžเบฝเบ‡เปเบ•เปˆ เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเบฅเบดเบซเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฐเป€เบžเบฒเบฐเบ™เบฑเป‰เบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบฒเบเปƒเบ™เบšเบฑเบ™เบˆเบธ. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบตเบ”โ€‹เบ•เบนเป‰โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปเบฅเบฐโ€‹เป„เบกเป‰โ€‹เบ—เปˆเบญเบ™โ€‹เป„เบซเบฅโ€‹เป„เบ›โ€‹เบ„เบทโ€‹เบ™โ€‹เป‰โ€‹เปโ€‹เบฒ. เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เปเบกเปˆเบ™ hardcode, เปเบ•เปˆเบ‚เป‰เบญเบเบšเปเปˆเบžเบปเบšเบงเบดเบ—เบตเบญเบทเปˆเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™ script เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”

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

splunkclouduf.spl โ€” เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเบชเปเบฒเบฅเบฑเบš Splunk Universal Forwarder, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบผเบ”เป„เบ”เป‰เบˆเบฒเบเบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เป€เบงเบฑเบš.

เบ„เบฅเบดเบเบšเปˆเบญเบ™เปƒเบ”เป€เบžเบทเปˆเบญเบ”เบฒเบงเป‚เบซเบฅเบ” (เบขเบนเปˆเปƒเบ™เบฎเบนเบš)Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš

Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš
เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบญเบ”เบญเบญเบเป„เบ”เป‰. เบžเบฒเบเปƒเบ™เปเบกเปˆเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš SplunkCloud เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐ outputs.conf เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ input instance เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป„เบŸเบฅเปŒเบ™เบตเป‰เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Splunk เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบซเบผเบทเป€เบžเบตเปˆเบกเป‚เบซเบ™เบ”เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เป‰เบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบœเบดเบ”เบžเบฒเบ”เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบฑเบ™เบžเบฒเบเปƒเบ™เบ–เบฑเบ‡.

เปเบฅเบฐเบชเบดเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™ restart. เปเบกเปˆเบ™เปเบฅเป‰เบง, เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ—เปˆเบฒเบ™เบˆเบณเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฃเบตเบชเบฐเบ•เบฒเบ”เบกเบฑเบ™.

เปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ inputs.conf เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เป„เบ›เบซเบฒ Splunk. เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเป„เบŸเบฅเปŒเบ™เบตเป‰เปƒเบชเปˆเบฎเบนเบšเบžเบฒเบšเบ–เป‰เบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เปเบˆเบเบขเบฒเบ configs เบœเปˆเบฒเบ™ puppet. เบชเบดเปˆเบ‡เบ”เบฝเบงเปเบกเปˆเบ™เบงเปˆเบฒ Forwarder เป€เบซเบฑเบ™ configs เป€เบกเบทเปˆเบญ daemon เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ ./splunk restart.

เบ›เบฐเป€เบžเบ”เปƒเบ”เปเบ”เปˆเบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเบชเบฐเบ–เบดเบ•เบด docker เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ? เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบเบปเปˆเบฒเบเปˆเบฝเบงเบเบฑเบš Github เบˆเบฒเบ outcoldman, เบชเบฐเบ„เบฃเบดเบšเป„เบ”เป‰เบ–เบทเบเป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เปเบฅเบฐเบ–เบทเบเบ”เบฑเบ”เปเบ›เบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Docker เบฎเบธเปˆเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ (ce-17.*) เปเบฅเบฐ Splunk (7.*).

เบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰

dashboards: (เบชเบญเบ‡โ€‹เบชเบฒเบกโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹)Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš

Splunk Universal Forwarder เปƒเบ™ docker เป€เบ›เบฑเบ™เบœเบนเป‰เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบชเปเบฒเบฅเบฑเบš dashes เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก. เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเปˆเบฒโ€‹เบกเบต 2 เบŠเปˆเบญเบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹: 1 - เบเบฒเบ™โ€‹เบ„เบฑเบ”โ€‹เป€เบฅเบทเบญเบโ€‹เบ”เบฑเบ”โ€‹เบŠเบฐโ€‹เบ™เบต (เบ„เบปเป‰เบ™โ€‹เบซเบฒโ€‹เป‚เบ”เบโ€‹เบซเบ™เป‰เบฒโ€‹เบเบฒเบโ€‹)โ€‹, เบเบฒเบ™โ€‹เบ„เบฑเบ”โ€‹เป€เบฅเบทเบญเบโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบžเบฒเบšโ€‹/containerโ€‹. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบซเบ™เป‰เบฒเบเบฒเบเบ”เบฑเบ”เบชเบฐเบ™เบต, เบ‚เบถเป‰เบ™เบเบฑเบšเบŠเบทเปˆเบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰.

เบชเบฐเบซเบฅเบธเบšเบฅเบงเบกเปเบฅเป‰เบง, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ•เปเปˆเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ เป€เบฅเบตเปˆเบก() ะฒ

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
}

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบฅเบฐเปเบ•เปˆเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบ–เบฑเบ‡เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เป‚เบฎเบ”, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบงเบดเบ—เบตเบ™เบตเป‰, เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบˆเบฐเบšเปเปˆเบ—เบปเบ™เบ—เบธเบเป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบชเบฐเบชเบปเบกเบ‚เปเป‰เบกเบนเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‡เปˆเบฒเบเป†เปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบ”เบฑเบ”เบชเบฐเบ™เบต: _. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบ›เบฑเบ™เบชเบฒเบเบปเบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบง daemon เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เปเบ—เบ™ sed-th wildcard เบเบฑเบšโ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹. เบ•เบปเบงเปเบ›เบŠเบทเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบกเปˆเบ™เบœเปˆเบฒเบ™เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก. เบชเบฝเบ‡เบ•เบฐเบซเบฅเบปเบ.

เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบซเบ”เบœเบปเบ™ Splunk เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบเบฒเบ™เบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ docker hostname. เบฅเบฒเบงเบเบฑเบ‡เบˆเบฐเบ”เบทเป‰เบ”เบถเบ‡เบชเบปเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบกเบต ID เบ‚เบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ‚เบญเบ‡เบฅเบฒเบงเบขเบนเปˆเปƒเบ™เบชเบฐเบซเบ™เบฒเบกเป€เบˆเบปเป‰เบฒเบžเบฒเบš. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” mount / 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

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบšเบฒเบ‡เบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบตเบซเบผเบฒเบ "เบฎเบฒเบ”เป‚เบ„เบ”". เปเบ•เปˆเบญเบตเบ‡เปƒเบชเปˆเบกเบฑเบ™, เบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ›เบญเบกเบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ–เป‰เบฒเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Splunk Forwarder เปƒเบ™ Docker.

เป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡:

เบเบฒเบ™เปเบเป‰เป„เบ‚เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบก
เบเบฒเบ™เปเบเป‰เป„เบ‚เบˆเบฒเบ outcoldman เบ—เบตเปˆเป€เบ›เบฑเบ™เปเบฎเบ‡เบšเบฑเบ™เบ”เบฒเบ™เปƒเบˆเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบ™เปƒเบซเบกเปˆ
เบ‚เบญเบ‡. เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Universal Forwarder

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster