Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²

Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²

Splunk являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹Ρ… коммСрчСских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для сбора ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΎΠ². Π”Π°ΠΆΠ΅ сСйчас, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Π² России большС Π½Π΅ производятся, это Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ инструкции/how-to ΠΏΠΎ этому ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ.

Π—Π°Π΄Π°Ρ‡Π°: ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ систСмныС Π»ΠΎΠ³ΠΈ с docker Π½ΠΎΠ΄ Π² Splunk Π½Π΅ мСняя ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ хост-ΠΌΠ°ΡˆΠΈΠ½Ρ‹

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит странноватым ΠΏΡ€ΠΈ использовании Π΄ΠΎΠΊΠ΅Ρ€Π°.
Бсылка Π½Π° Docker hub
Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ:

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, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· Π²Π΅Π± интСрфСйса.

ΠšΡƒΠ΄Π° Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ (Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…)Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²

Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²
Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ. Π’Π½ΡƒΡ‚Ρ€ΠΈ β€” сСртификаты ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ SplunkCloud ΠΈ outputs.conf со списком Π½Π°ΡˆΠΈΡ… input инстансов. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ пСрСустановитС свою ΠΈΠ½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡŽ Splunk ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ input Π½ΠΎΠ΄, Ссли инсталляция on-premise. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

И послСднСС β€” restart. Π”Π°, для примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚Π°Π½ΡƒΡ‚ΡŒ.

Π’ наш inputs.conf добавляСм Π»ΠΎΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² Splunk. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² ΠΎΠ±Ρ€Π°Π·, Ссли Π²Ρ‹, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, раскидываСтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ Ρ‡Π΅Ρ€Π΅Π· puppet. Π“Π»Π°Π²Π½ΠΎΠ΅ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Forwarder Π²ΠΈΠ΄Π΅Π» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, ΠΏΡ€ΠΈ стартС Π΄Π΅ΠΌΠΎΠ½Π°, ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ΅Π½ ./splunk restart.

А Ρ‡Ρ‚ΠΎ Π·Π° docker stats скрипты? На Π³ΠΈΡ‚Ρ…Π°Π±Π΅ Π΅ΡΡ‚ΡŒ староС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ outcoldman, скрипты взяты ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ вСрсиями Docker (ce-17.*) ΠΈ Splunk (7.*).

Π‘ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅

Π΄ΡΡˆΠ±ΠΎΡ€Π΄Ρ‹: (ΠΏΠ°Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ)Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²

Splunk Universal Forwarder Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ сборщик систСмных Π»ΠΎΠ³ΠΎΠ²
Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ дэшСй Π»Π΅ΠΆΠΈΡ‚ Π² Ρ€Π΅ΠΏΠ΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ присутствуСт 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 ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π΄ΠΎΠΊΠ΅Ρ€Π΅.

Бсылки:

РСшСниС ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ
РСшСниС ΠΎΡ‚ outcoldman Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ²ΡˆΠ΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°
ΠžΡ„. докумСнтация ΠΏΠΎ настройкС Universal Forwarder

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com