Splunk Universal Forwarder Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠ°ΠΊΠΎ систСмски собирач Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ

Splunk Universal Forwarder Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠ°ΠΊΠΎ систСмски собирач Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ

Splunk Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒΡ‚Π΅ Π½Π°Ρ˜ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Ρ‚Π»ΠΈΠ²ΠΈ ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ. Π”ΡƒΡ€ΠΈ ΠΈ сСга, ΠΊΠΎΠ³Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±Π°Ρ‚Π° повСќС Π½Π΅ сС Π²Ρ€ΡˆΠΈ Π²ΠΎ Π ΡƒΡΠΈΡ˜Π°, ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΄Π° Π½Π΅ ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ упатства/ΠΊΠ°ΠΊΠΎ Π΄Π° Π·Π° овој ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄.

Π—Π°Π΄Π°Ρ‡Π°: ΡΠΎΠ±ΠΈΡ€Π°Ρ˜Ρ‚Π΅ систСмски Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΎΠ΄ докСрскитС јазли Π²ΠΎ Splunk Π±Π΅Π· Π΄Π° ја ΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° домаќин

Π‘ΠΈ сакал Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π°ΠΌ со ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½ΠΈΠΎΡ‚ пристап, кој ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΌΠ°Π»ΠΊΡƒ Ρ‡ΡƒΠ΄Π½ΠΎ ΠΊΠΎΠ³Π° сС користи Docker.
Врска Π΄ΠΎ 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.ш

#!/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 ΠΈ ΠΈΠ·Π»Π΅Π·ΠΈ.conf со листа Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π²Π»Π΅Π·Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ. Оваа Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ќС Π±ΠΈΠ΄Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π° сè Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ја инсталиратС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Splunk ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Π²Π»Π΅Π·Π΅Π½ јазол Π°ΠΊΠΎ ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ Π²ΠΎ ΠΏΡ€ΠΎΡΡ‚ΠΎΡ€ΠΈΡ˜Π°. Π—Π°Ρ‚ΠΎΠ°, Π½Π΅ΠΌΠ° Π½ΠΈΡˆΡ‚ΠΎ лошо Π΄Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚.

И послСдното Π½Π΅ΡˆΡ‚ΠΎ Π΅ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅. Π”Π°, Π·Π° Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ рСстартиратС.

Π’ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° Π²Π»Π΅Π·ΠΎΠ²ΠΈ.conf Π³ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ сакамС Π΄Π° Π³ΠΈ испратимС Π½Π° Splunk. НС Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΎΠ²Π°Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π° сликата Π°ΠΊΠΎ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дистрибуиратС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΊΡƒΠΊΠ»Π°. ЕдинствСното Π½Π΅ΡˆΡ‚ΠΎ Π΅ ΡˆΡ‚ΠΎ Forwarder Π³ΠΈ Π³Π»Π΅Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΊΠΎΠ³Π° ќС Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π΅ΠΌΠΎΠ½ΠΎΡ‚, ΠΈΠ½Π°ΠΊΡƒ ќС ΠΌΡƒ Ρ‚Ρ€Π΅Π±Π° ./splunk Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅.

Какви скрипти Π·Π° Π΄ΠΎΠΊΠ΅Ρ€ статистика сС Ρ‚ΠΈΠ΅? Има старо Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Github ΠΎΠ΄ outcoldman, скриптитС Π±Π΅Π° Π·Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Ρ‚Π°ΠΌΡƒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ со Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° Docker (ce-17.*) ΠΈ Splunk (7.*).

Π‘ΠΎ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ слСдново

ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ: (Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ слики)Splunk Universal Forwarder Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠ°ΠΊΠΎ систСмски собирач Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ

Splunk Universal Forwarder Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠ°ΠΊΠΎ систСмски собирач Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ
Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° Ρ†Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ Π΅ Π²ΠΎ врската Π΄Π°Π΄Π΅Π½Π° Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π°. Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° 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.

Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ:

РСшСниС ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π°
РСшСниС ΠΎΠ΄ Outcoldman ΠΊΠΎΠ΅ Π½Π΅ ΠΈΠ½ΡΠΏΠΈΡ€ΠΈΡ€Π°ΡˆΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° користимС Π΄Π΅Π» ΠΎΠ΄ функционалноста
На. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Universal Forwarder

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€