Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa

Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa

Splunk erregistro-bilketa eta analisi komertzial ezagunenetako bat da. Orain ere, Errusian salmentak egiten ez direnean, hau ez da produktu honen argibideak/nola idazteko arrazoia.

Task: bildu sistemaren erregistroak Splunk-eko docker-nodoetatik ostalari-makinaren konfigurazioa aldatu gabe

Ikuspegi ofizialetik hasi nahiko nuke, Docker erabiltzean arraro samarra dirudiena.
Estekatu Docker zentrora
Zer daukagu:

1. Pullim irudia

$ docker pull splunk/universalforwarder:latest

2. Hasi ontzia beharrezko parametroekin

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

3. Edukiontzira sartzen gara

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

Ondoren, dokumentazioko helbide ezagun batera joateko eskatzen zaigu.

Eta konfiguratu edukiontzia hasi ondoren:


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

Itxaron. Zer?

Baina ezustekoak ez dira hor amaitzen. Edukiontzia irudi ofizialetik modu interaktiboan exekutatzen baduzu, honako hau ikusiko duzu:

Desilusio pixka bat


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

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

Bikaina. Irudiak ez du artefakturik ere. Hau da, hasten zaren bakoitzean denbora beharko da artxiboa bitarrekin deskargatzeko, deskonprimitzeko eta konfiguratzeko.
Zer gertatzen da docker-way eta guzti?

Ez eskerrik asko. Beste bide bat hartuko dugu. Eta eragiketa horiek guztiak muntaketa fasean egiten baditugu? Orduan goazen!

Gehiegi ez atzeratzeko, berehala erakutsiko dizut azken irudia:

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

Beraz, zer den

lehen_hasi.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

Hasieran, Splunk-ek saioa hasteko/pasahitza emateko eskatzen dizu, BAINA datu hauek erabiltzen dira bakarrik instalazio jakin horretarako, hau da, edukiontzi barruan administrazio-aginduak exekutatzeko. Gure kasuan, edukiontzia jaurtitzea besterik ez dugu nahi, dena funtziona dezan eta enborrak ibai bat bezala isur daitezen. Jakina, hau hardcode da, baina ez dut beste biderik aurkitu.

Gehiago gidoiaren arabera exekutatzen da

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

splunkclouduf.spl — Hau Splunk Universal Forwarder-erako kredentzial-fitxategia da, web-interfazetik deskargatu daitekeena.

Non egin klik deskargatzeko (argazkietan)Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa

Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa
Hau artxibo arrunta da, deskonprimitu daitekeena. Barruan ziurtagiriak eta gure SplunkCloud-era konektatzeko pasahitza eta irteerak.konf gure sarrerako instantzien zerrenda batekin. Fitxategi hau garrantzitsua izango da Splunk-en instalazioa berriro instalatu arte edo sarrera-nodo bat gehitu arte, instalazioa lokala bada. Hori dela eta, ez dago gaizki edukiontzi barruan gehitzeak.

Eta azken gauza berrabiaraztea da. Bai, aldaketak aplikatzeko, berrabiarazi behar duzu.

Gurean sarrerak.konf Splunk-era bidali nahi ditugun erregistroak gehitzen ditugu. Ez da beharrezkoa fitxategi hau irudiari gehitzea, adibidez, konfigurazioak txotxongilo bidez banatzen badituzu. Gauza bakarra da Forwarder-ek deabrua hasten denean konfigurazioak ikusten dituela, bestela beharko du. ./splunk berrabiarazi.

Nolako docker stats script-ak dira? Github-en irtenbide zahar bat dago kanpoko gizona, gidoiak handik hartu eta Docker (ce-17.*) eta Splunk (7) egungo bertsioekin lan egiteko aldatu ziren.

Lortutako datuekin, honako hau eraiki dezakezu

aginte-panelak: (argazki pare bat)Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa

Splunk Universal Forwarder docker-en sistemaren erregistro-biltzaile gisa
Marratxoen iturburu kodea artikuluaren amaieran emandako estekan dago. Kontuan izan 2 aukera-eremu daudela: 1 - indize-hautapena (maskararen bidez bilatuta), ostalariaren/edukiontziaren hautaketa. Litekeena da indize-maskara eguneratu beharko duzula, erabiltzen dituzun izenen arabera.

Amaitzeko, zure arreta deituko nuke funtzioaz hasi() в

sarrera-puntua.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
}

Nire kasuan, ingurune bakoitzerako eta entitate bakoitzerako, izan edukiontzi bateko aplikazio bat edo ostalari makina bat izan, indize bereizia erabiltzen dugu. Horrela, bilaketa-abiadurak ez du jasango datu metaketa nabarmena dagoenean. Indizeak izendatzeko arau sinple bat erabiltzen da: _. Horregatik, edukiontzia unibertsala izan dadin, deabrua bera abiarazi aurretik, ordezkatzen dugu egarria-ingurunearen izenaren komodina. Ingurune-izena aldagaia ingurune-aldagaietatik pasatzen da. Dibertigarria dirudi.

Aipatzekoa da, halaber, arrazoiren batengatik Splunk ez duela docker parametroaren presentziaren eraginik hostname. Oraindik ere egoskor bidaliko ditu bere edukiontziaren idarekin erregistroak ostalari eremuan. Irtenbide gisa, muntatu dezakezu / Etc / hostname ostalariaren makinatik eta abiaraztean egin ordezkapenak indize-izenen antzekoak.

Adibidea 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

Guztira

Bai, agian irtenbidea ez da ideala eta, zalantzarik gabe, ez da guztiontzat unibertsala, asko baitaude "kode gogorra". Baina horretan oinarrituta, bakoitzak bere irudia eraiki dezake eta bere artifactory pribatuan jar dezake, baldin eta, gertatzen den bezala, Docker-en Splunk Forwarder behar baduzu.

erreferentziak:

Artikuluaren irtenbidea
Outcoldman-en irtenbide bat, funtzionalitate batzuk berrerabiltzera bultzatu gaituena
De. Universal Forwarder konfiguratzeko dokumentazioa

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster