Splunk ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ·Π½Π°Π²Π°Π΅ΠΌΡΡ
ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΎΠ². ΠΠ°ΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΄Π°ΠΆΠΈ Π² Π ΠΎΡΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ Π½Π΅ ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ/how-to ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΄ΡΠΊΡΡ.
ΠΠ°Π΄Π°ΡΠ°: ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈ Ρ docker Π½ΠΎΠ΄ Π² Splunk Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ
ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Ρ
ΠΠ°ΡΠ°ΡΡ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΠΎΠ²Π°ΡΡΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎΠΊΠ΅ΡΠ°.
Π§ΡΠΎ ΠΆΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ:
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.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 ΠΈ outputs.conf ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π½Π°ΡΠΈΡ
input ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ². ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΡΠ°Π»Π΅Π½ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ Splunk ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ input Π½ΠΎΠ΄, Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ on-premise. ΠΠΎΡΡΠΎΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ β restart. ΠΠ°, Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΡΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠ°Π½ΡΡΡ.
Π Π½Π°Ρ inputs.conf Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π² Splunk. ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΠΎΠ±ΡΠ°Π·, Π΅ΡΠ»ΠΈ Π²Ρ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ°ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ ΡΠ΅ΡΠ΅Π· puppet. ΠΠ»Π°Π²Π½ΠΎΠ΅ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Forwarder Π²ΠΈΠ΄Π΅Π» ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ, ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ΅Π½ ./splunk restart.
Π ΡΡΠΎ Π·Π° docker stats ΡΠΊΡΠΈΠΏΡΡ? ΠΠ° Π³ΠΈΡΡ
Π°Π±Π΅ Π΅ΡΡΡ ΡΡΠ°ΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ
Π‘ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅
Π΄ΡΡΠ±ΠΎΡΠ΄Ρ: (ΠΏΠ°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ)
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΡΡΠ΅ΠΉ Π»Π΅ΠΆΠΈΡ Π² ΡΠ΅ΠΏΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ 2 select ΠΏΠΎΠ»Ρ: 1 β Π²ΡΠ±ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (ΠΈΡΡΡΡΡ ΠΏΠΎ ΠΌΠ°ΡΠΊΠ΅), Π²ΡΠ±ΠΎΡ Ρ
ΠΎΡΡΠ°/ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ°ΡΠΊΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅.
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅, Ρ ΠΎΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ start() Π²
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
}
Π ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ, Π±ΡΠ΄Ρ ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. Π’Π°ΠΊ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π΄Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: <environment_name>_<service/application/etc>. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π±ΡΠ» ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½Π°, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ sed-ΠΎΠΌ wildcard Π½Π° ΠΈΠΌΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ²ΡΡΠΈΡ Π·Π°Π±Π°Π²Π½ΠΎ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π° Splunk Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ docker ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° hostname. ΠΠ½ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΡΠΎΡΠΎ ΡΠ»Π°ΡΡ Π»ΠΎΠ³ΠΈ Ρ id ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΠΏΠΎΠ»Π΅ host. ΠΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ /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 ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅.
Π‘ΡΡΠ»ΠΊΠΈ:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com