Splunk Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡΡΠ΅ Π½Π°ΡΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°ΡΠ»ΠΈΠ²ΠΈ ΠΊΠΎΠΌΠ΅ΡΡΠΈΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈ. ΠΡΡΠΈ ΠΈ ΡΠ΅Π³Π°, ΠΊΠΎΠ³Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°ΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ Π²ΡΡΠΈ Π²ΠΎ Π ΡΡΠΈΡΠ°, ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π° Π½Π΅ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠΏΠ°ΡΡΡΠ²Π°/ΠΊΠ°ΠΊΠΎ Π΄Π° Π·Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄.
ΠΠ°Π΄Π°ΡΠ°: ΡΠΎΠ±ΠΈΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ ΠΎΠ΄ Π΄ΠΎΠΊΠ΅ΡΡΠΊΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ Π²ΠΎ Splunk Π±Π΅Π· Π΄Π° ΡΠ° ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½
ΠΠΈ ΡΠ°ΠΊΠ°Π» Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°ΠΌ ΡΠΎ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΊΠΎΡ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΌΠ°Π»ΠΊΡ ΡΡΠ΄Π½ΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ 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 ΠΈ ΡΠ΅ΡΠΎ ΡΠΎΠ°?
ΠΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ°ΠΌ. ΠΠ΅ ΡΡΠ³Π½Π΅ΠΌΠ΅ ΠΏΠΎ Π΄ΡΡΠ³ ΠΏΠ°Ρ. Π¨ΡΠΎ Π°ΠΊΠΎ Π³ΠΈ ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅? Π’ΠΎΠ³Π°Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΎΠ΄ΠΈΠΌΠ΅!
ΠΠ° Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠ΄Π»ΠΎΠΆΠΈ ΠΏΡΠ΅Π΄ΠΎΠ»Π³ΠΎ, Π²Π΅Π΄Π½Π°Ρ ΡΠ΅ Π²ΠΈ ΡΠ° ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ°:
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.Ρ
#!/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, ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ ΠΎΠ΄ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ.
ΠΠ°Π΄Π΅ Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π·Π° Π΄Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ (Π½Π° ΡΠ»ΠΈΠΊΠΈ)
ΠΠ²Π° Π΅ ΡΠ΅Π΄ΠΎΠ²Π½Π° Π°ΡΡ
ΠΈΠ²Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΏΠ°ΠΊΡΠ²Π°. ΠΠ½Π°ΡΡΠ΅ ΠΈΠΌΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ Π½Π°ΡΠΈΠΎΡ SplunkCloud ΠΈ ΠΈΠ·Π»Π΅Π·ΠΈ.conf ΡΠΎ Π»ΠΈΡΡΠ° Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²Π»Π΅Π·Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ. ΠΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π° ΡΓ¨ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Splunk ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π²Π»Π΅Π·Π΅Π½ ΡΠ°Π·ΠΎΠ» Π°ΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ° Π΅ Π²ΠΎ ΠΏΡΠΎΡΡΠΎΡΠΈΡΠ°. ΠΠ°ΡΠΎΠ°, Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠΎ Π»ΠΎΡΠΎ Π΄Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π½Π΅ΡΡΠΎ Π΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅. ΠΠ°, Π·Π° Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅.
ΠΠΎ Π½Π°ΡΠ°ΡΠ° Π²Π»Π΅Π·ΠΎΠ²ΠΈ.conf Π³ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΡΠΏΡΠ°ΡΠΈΠΌΠ΅ Π½Π° Splunk. ΠΠ΅ Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΎΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π°ΠΊΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅ΠΊΡ ΠΊΡΠΊΠ»Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π½Π΅ΡΡΠΎ Π΅ ΡΡΠΎ Forwarder Π³ΠΈ Π³Π»Π΅Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΠΊΠΎΠ³Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π΅ΠΌΠΎΠ½ΠΎΡ, ΠΈΠ½Π°ΠΊΡ ΡΠ΅ ΠΌΡ ΡΡΠ΅Π±Π° ./splunk ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅.
ΠΠ°ΠΊΠ²ΠΈ ΡΠΊΡΠΈΠΏΡΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ΅ ΡΠΈΠ΅? ΠΠΌΠ° ΡΡΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Github ΠΎΠ΄
Π‘ΠΎ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΠ²ΠΎ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠ°Π±Π»ΠΈ: (Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ»ΠΈΠΊΠΈ)
ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° ΡΡΡΠΈΡΠΊΠΈ Π΅ Π²ΠΎ Π²ΡΡΠΊΠ°ΡΠ° Π΄Π°Π΄Π΅Π½Π° Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° 2 ΠΈΠ·Π±ΡΠ°Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°: 1 - ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ (ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°Π½ ΡΠΎ ΠΌΠ°ΡΠΊΠ°), ΠΈΠ·Π±ΠΎΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½/ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠ°ΡΠ²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ½Π°ΡΠ° ΠΌΠ°ΡΠΊΠ°, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΈΠΌΠΈΡΠ°ΡΠ° ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅.
ΠΠ°ΠΊΠΎ Π·Π°ΠΊΠ»ΡΡΠΎΠΊ, Π±ΠΈ ΡΠ°ΠΊΠ°Π» Π΄Π° Π³ΠΎ ΡΠ²ΡΡΠ°ΠΌ Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΠ΅ΡΠΎΠΊ () Π²
Π²Π»Π΅Π·Π½Π° ΡΠΎΡΠΊΠ°.Ρ
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
}
ΠΠΎ ΠΌΠΎΡΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΡΠ΅Π΄ΠΈΠ½Π° ΠΈ ΡΠ΅ΠΊΠΎΡ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ΅Π½ Π΅Π½ΡΠΈΡΠ΅Ρ, Π±ΠΈΠ»ΠΎ Π΄Π° Π΅ ΡΠΎΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΡΡΡΠ°Π΄Π° ΠΊΠΎΠ³Π° ΠΈΠΌΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π°ΠΊΡΠΌΡΠ»Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ: _. ΠΠ°ΡΠΎΠ°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½, ΠΏΡΠ΅Π΄ Π΄Π° Π³ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΈΠΎΡ Π΄Π΅ΠΌΠΎΠ½, Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΆΠ΅Π΄-ΡΠΈ ΡΠΎΠΊΠ΅Ρ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°. ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° ΠΈΠΌΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π½ΠΈΠ· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°. ΠΠ²ΡΡΠΈ ΡΠΌΠ΅ΡΠ½ΠΎ.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΊΠΎΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Splunk Π½Π΅ Π΅ ΠΏΠΎΠ΄ Π²Π»ΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΡΡΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ docker hostname. Π’ΠΎΡ ΡΠ΅ΠΏΠ°ΠΊ ΡΠ²ΡΠ΄ΠΎΠ³Π»Π°Π²ΠΎ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° ΡΡΡΠΏΡΠΈ ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π²ΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ. ΠΠ°ΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ / 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.
Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠΈ:
ΠΠ·Π²ΠΎΡ: www.habr.com