Splunk Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½Π°ΠΉ-ΡΠ°Π·ΠΏΠΎΠ·Π½Π°Π²Π°Π΅ΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΡΡΡΠΏΠΈ. ΠΠΎΡΠΈ ΡΠ΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠ΄Π°Π²Π°Ρ Π² Π ΡΡΠΈΡ, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π° Π½Π΅ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ/ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡ.
ΠΠ°Π΄Π°ΡΠ°: ΡΡΠ±ΠΈΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Π΄ΠΎΠΊΠ΅Ρ Π²ΡΠ·Π»ΠΈ Π² Splunk, Π±Π΅Π· Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Ρ
ΠΎΡΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°
ΠΠΈΡ
ΠΈΡΠΊΠ°Π» Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π° Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΠ°Π½Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Docker.
ΠΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅:
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
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠΈΠ΄Π΅ΠΌ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π°Π΄ΡΠ΅Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°:
./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" ]
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° Π²
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 Π²ΠΈ ΠΌΠΎΠ»ΠΈ Π΄Π° ΠΌΡ Π΄Π°Π΄Π΅ΡΠ΅ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Π°, ΠΠ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°ΠΌΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ, ΡΠΎΠ΅ΡΡ Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΡΠ½Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΡΡΡΠΏΠΈΡΠ΅ Π΄Π° ΡΠ΅ΠΊΠ°Ρ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΊΠ°. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° Π΅ ΡΠ²ΡΡΠ΄ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈΡ Π΄ΡΡΠ³ΠΈ Π½Π°ΡΠΈΠ½ΠΈ.
ΠΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°
/splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changeme
splunkclouduf.spl β Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Splunk Universal Forwarder, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ ΠΎΡ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΡΠ΄Π΅ Π΄Π° ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅, Π·Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ (Π² ΡΠ½ΠΈΠΌΠΊΠΈ)
Π’ΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π°ΡΡ
ΠΈΠ², ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½. ΠΡΡΡΠ΅ ΠΈΠΌΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ ΠΏΠ°ΡΠΎΠ»Π° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Π½Π°ΡΠΈΡ SplunkCloud ΠΈ ΠΈΠ·Ρ
ΠΎΠ΄ΠΈ.conf ΡΡΡ ΡΠΏΠΈΡΡΠΊ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²Ρ
ΠΎΠ΄Π½ΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ. Π’ΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΌΠ΅ΡΡΠ΅Π½, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° Splunk ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π²Ρ
ΠΎΠ΄Π΅Π½ Π²ΡΠ·Π΅Π», Π°ΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π΅ Π»ΠΎΠΊΠ°Π»Π½Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π½ΡΠΌΠ° Π½ΠΈΡΠΎ Π»ΠΎΡΠΎ Π΄Π° Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ Π΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. ΠΠ°, Π·Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅.
Π Π½Π°ΡΠ°ΡΠ° inputs.conf Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π½Π° Splunk. ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» ΠΊΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π°ΠΊΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π· ΠΌΠ°ΡΠΈΠΎΠ½Π΅ΡΠΊΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ Π΅, ΡΠ΅ Forwarder Π²ΠΈΠΆΠ΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡ ΡΡΠ°ΡΡΠΈΡΠ°, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠΌΠ° Π½ΡΠΆΠ΄Π° ./splunk ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
ΠΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΠΊΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ° ΡΠ΅? ΠΠΌΠ° ΡΡΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Github ΠΎΡ
Π‘ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ
ΡΠ°Π±Π»Π°: (Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ½ΠΈΠΌΠΊΠΈ)
ΠΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π° ΡΠΈΡΠ΅ΡΠ°ΡΠ° Π΅ Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ°ΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΈΠΌΠ° 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
}
Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ΅Π΄Π° ΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΎΠ±Π΅ΠΊΡ, Π±ΠΈΠ»ΠΎ ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ ΠΌΠ°ΡΠΈΠ½Π°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΡΡΡΠ΅Π½Π΅ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΡΡΡΠ°Π΄Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ: _. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΈΡ Π΄Π΅ΠΌΠΎΠ½, Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Π½ΡΠΌΠ΅ ΠΆΠ°ΠΆΠ΄Π°-ΡΠΈ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Ρ Π·Π½Π°ΠΊ ΠΊΡΠΌ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°. ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° ΠΏΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°. ΠΠ²ΡΡΠΈ ΡΠΌΠ΅ΡΠ½ΠΎ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° Splunk Π½Π΅ ΡΠ΅ Π²Π»ΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΈΡΡΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΈΠΌΠ΅ Π½Π° Ρ ΠΎΡΡ. Π’ΠΎΠΉ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠΏΠΎΡΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΠΏΠΎΠ»Π΅ΡΠΎ Π·Π° Ρ ΠΎΡΡ. ΠΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ / Π Ρ.Π½. / Ρ ΠΎΡΡ ΠΎΡ Ρ ΠΎΡΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΏΡΠ°Π²Π΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 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