Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema

Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema

Splunk huwa wieħed minn bosta mill-prodotti ta 'ġbir u analiżi ta' zkuk kummerċjali l-aktar rikonoxxibbli. Anke issa, meta l-bejgħ ma jibqax isir fir-Russja, din mhix raġuni biex ma tiktebx struzzjonijiet/kif għal dan il-prodott.

Kompitu: iġbor zkuk tas-sistema minn docker nodes fi Splunk mingħajr ma tbiddel il-konfigurazzjoni tal-magna ospitanti

Nixtieq nibda bl-approċċ uffiċjali, li jidher daqsxejn stramba meta tuża Docker.
Link għal Docker hub
X'għandna:

1. Immaġini Pullim

$ docker pull splunk/universalforwarder:latest

2. Ibda l-kontenitur bil-parametri meħtieġa

$ docker run -d  -p 9997:9997 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=<password>' splunk/universalforwarder:latest

3. Immorru fil-kontenitur

docker exec -it <container-id> /bin/bash

Sussegwentement, aħna mitluba mmorru f'indirizz magħruf fid-dokumentazzjoni.

U kkonfigura l-kontenitur wara li jibda:


./splunk add forward-server <host name or ip address>:<listening port>
./splunk add monitor /var/log
./splunk restart

Stenna. Xiex?

Iżda s-sorpriżi ma jispiċċawx hemm. Jekk tmexxi l-kontenitur mill-immaġni uffiċjali fil-mod interattiv, se tara dan li ġej:

Daqsxejn diżappunt


$ 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 *********

ну и так далее...

Kbir. L-immaġni lanqas fiha artifact. Jiġifieri, kull darba li tibda tieħu ż-żmien biex tniżżel l-arkivju bil-binarji, tħoll u kkonfigurat.
Xi ngħidu dwar docker-way u dak kollu?

Le grazzi. Se nieħdu rotta differenti. X'jiġri jekk inwettqu dawn l-operazzjonijiet kollha fl-istadju tal-assemblaġġ? Imbagħad ejja!

Sabiex ma tiddewwimx wisq, ser nuruk l-immaġni finali minnufih:

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" ]

Allura dak li jinsab fih

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

Fl-ewwel bidu, Splunk jistaqsik biex tagħtiha login/password, IMMA din id-dejta tintuża biss biex tesegwixxi kmandi amministrattivi għal dik l-installazzjoni partikolari, jiġifieri ġewwa l-kontenitur. Fil-każ tagħna, irridu biss inniedu l-kontenitur sabiex kollox jaħdem u z-zkuk jiċċirkolaw bħal xmara. Naturalment, dan huwa hardcode, imma ma sibt l-ebda mod ieħor.

Aktar skond l-iskrittura hija esegwita

/splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changeme

splunkclouduf.spl — Dan huwa fajl tal-kredenzjali għal Splunk Universal Forwarder, li jista’ jitniżżel mill-interface tal-web.

Fejn tikklikkja biex tniżżel (fl-istampi)Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema

Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema
Dan huwa arkivju regolari li jista 'jiġi ppakkjat. Ġewwa hemm ċertifikati u password għall-konnessjoni ma 'SplunkCloud tagħna u outputs.conf b'lista ta' każijiet ta' input tagħna. Dan il-fajl se jkun rilevanti sakemm terġa' tinstalla l-installazzjoni Splunk tiegħek jew iżżid node ta' input jekk l-installazzjoni tkun fuq il-post. Għalhekk, m'hemm xejn ħażin li żżidha ġewwa l-kontenitur.

U l-aħħar ħaġa hija terġa 'tibda. Iva, biex tapplika l-bidliet, għandek bżonn terġa 'tibda.

Fil tagħna inputs.conf inżidu r-zkuk li rridu nibagħtu lil Splunk. Mhux meħtieġ li żżid dan il-fajl mal-immaġini jekk, pereżempju, tqassam il-konfigurazzjonijiet permezz ta' puppet. L-unika ħaġa hija li Forwarder jara l-konfigurazzjonijiet meta jibda d-daemon, inkella jeħtieġ ./splunk restart.

X'tip ta' docker stats scripts huma? Hemm soluzzjoni antika fuq Github minn outcoldman, l-iskripts ttieħdu minn hemm u modifikati biex jaħdmu mal-verżjonijiet attwali ta 'Docker (ce-17.*) u Splunk (7.*).

Bid-dejta miksuba, tista 'tibni dan li ġej

dashboards: (koppja ta' stampi)Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema

Splunk Universal Forwarder f'Docker bħala kollettur ta 'log tas-sistema
Il-kodiċi tas-sors għal daxxijiet jinsab fil-link ipprovdut fl-aħħar tal-artiklu. Jekk jogħġbok innota li hemm 2 oqsma magħżula: 1 - għażla tal-indiċi (imfittxija bil-maskra), għażla tal-host/kontenitur. X'aktarx ikollok bżonn taġġorna l-maskra tal-indiċi, skont l-ismijiet li tuża.

Bħala konklużjoni, nixtieq niġbed l-attenzjoni tiegħek għall-funzjoni ibda() в

punt tad-dħul.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
}

Fil-każ tiegħi, għal kull ambjent u kull entità individwali, kemm jekk tkun applikazzjoni f'kontenitur jew magna ospitanti, nużaw indiċi separat. Dan il-mod, il-veloċità tat-tfittxija mhux se tbati meta jkun hemm akkumulazzjoni sinifikanti ta 'data. Regola sempliċi tintuża biex issemmi l-indiċi: _. Għalhekk, sabiex il-kontenitur ikun universali, qabel ma nniedu d-daemon innifsu, nissostitwixxu għatx-th wildcard għall-isem tal-ambjent. Il-varjabbli tal-isem tal-ambjent hija mgħoddija minn varjabbli tal-ambjent. Ħsejjes umoristiċi.

Ta 'min jinnota wkoll li għal xi raġuni Splunk mhuwiex affettwat mill-preżenza tal-parametru docker hostname. Huwa xorta se jibgħat iebsa zkuk bl-id tal-kontenitur tiegħu fil-qasam ospitanti. Bħala soluzzjoni, tista 'timmonta / etc / hostname mill-magna ospitanti u fl-istartjar jagħmlu sostituzzjonijiet simili għall-ismijiet indiċi.

Eżempju 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

Total

Iva, forsi s-soluzzjoni mhix ideali u ċertament mhux universali għal kulħadd, peress li hemm ħafna "hardcode". Iżda bbażat fuqha, kulħadd jista 'jibni l-immaġni tiegħu stess u jpoġġiha fl-artifactory privat tiegħu, jekk, kif jiġri, għandek bżonn Splunk Forwarder f'Docker.

Referenzi:

Soluzzjoni mill-artiklu
Soluzzjoni minn outcoldman li ispiratna biex nerġgħu nużaw ftit mill-funzjonalità
Ta. dokumentazzjoni għat-twaqqif ta’ Universal Forwarder

Sors: www.habr.com

Ixtri hosting affidabbli għal siti bi protezzjoni DDoS, servers VPS VDS 🔥 Ixtri hosting ta' websajts affidabbli bi protezzjoni DDoS, servers VPS VDS | ProHoster