Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema

Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema

Ang Splunk usa sa pipila sa labing nailhan nga komersyal nga koleksyon sa troso ug mga produkto sa pagtuki. Bisan karon, kung ang pagbaligya wala na gihimo sa Russia, dili kini hinungdan nga dili isulat ang mga panudlo / kung giunsa kini nga produkto.

Tumong: pagkolekta sa mga log sa sistema gikan sa mga docker node sa Splunk nga walay pagbag-o sa configuration sa host machine

Gusto kong magsugod sa opisyal nga pamaagi, nga medyo katingad-an kung gigamit ang Docker.
Pag-link sa Docker hub
Unsay naa nato:

1. Pullim nga hulagway

$ docker pull splunk/universalforwarder:latest

2. Sugdi ang sudlanan nga adunay gikinahanglan nga mga parameter

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

3. Mosulod mi sa sudlanan

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

Sunod, gihangyo kami nga moadto sa nahibal-an nga adres sa dokumentasyon.

Ug i-configure ang sudlanan pagkahuman magsugod:


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

Hulat. Unsa?

Apan ang mga sorpresa wala matapos didto. Kung gipadagan nimo ang sudlanan gikan sa opisyal nga imahe sa interactive mode, imong makita ang mosunod:

Usa ka gamay nga kasagmuyo


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

Π½Ρƒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅...

Nindot. Ang imahe wala bisan usa ka artifact. Kana mao, sa matag higayon nga magsugod ka magkinahanglan og panahon aron ma-download ang archive nga adunay mga binary, i-unpack ug i-configure.
Unsa man ang bahin sa docker-way ug tanan niana?

Dili salamat. Lahi nga ruta ang atong agian. Unsa kaha kung buhaton naton kini nga tanan nga mga operasyon sa yugto sa asembliya? Unya lakaw ta!

Aron dili malangan ug dugay, akong ipakita kanimo ang kataposang hulagway diha-diha dayon:

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

Busa unsa ang anaa sa

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

Sa una nga pagsugod, gihangyo ka sa Splunk nga hatagan kini usa ka login / password, PERO kini nga datos gigamit lamang aron ipatuman ang mga administratibong sugo alang nianang partikular nga pag-instalar, nga mao, sulod sa sudlanan. Sa among kaso, gusto lang namo nga ilunsad ang sudlanan aron ang tanan molihok ug ang mga troso modagayday sama sa usa ka suba. Siyempre, kini usa ka hardcode, apan wala ako'y nakit-an nga ubang mga paagi.

Dugang pa sumala sa script gipatuman

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

splunkclouduf.spl β€” Kini usa ka file sa kredensyal alang sa Splunk Universal Forwarder, nga mahimong ma-download gikan sa web interface.

Asa i-klik aron ma-download (sa mga hulagway)Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema

Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema
Kini usa ka regular nga archive nga mahimong ma-unpack. Sa sulod adunay mga sertipiko ug usa ka password alang sa pagkonektar sa among SplunkCloud ug outputs.conf uban ang usa ka lista sa among mga higayon sa pag-input. Kini nga file mahimong may kalabutan hangtud nga imong i-install pag-usab ang imong Splunk nga pag-install o pagdugang usa ka input node kung ang pag-install naa sa lugar. Busa, walay sayop sa pagdugang niini sa sulod sa sudlanan.

Ug ang katapusan nga butang mao ang pagsugod pag-usab. Oo, aron magamit ang mga pagbag-o, kinahanglan nimo nga i-restart kini.

Sa among inputs.conf gidugang namon ang mga troso nga gusto namon ipadala sa Splunk. Dili kinahanglan nga idugang kini nga file sa imahe kung, pananglitan, nag-apod-apod ka sa mga config pinaagi sa puppet. Ang bugtong butang mao nga ang Forwarder nakakita sa mga config kung magsugod ang daemon, kung dili kini kinahanglan ./splunk restart.

Unsang klaseha sa docker stats scripts sila? Adunay usa ka daan nga solusyon sa Github gikan sa outcoldman, ang mga script gikuha gikan didto ug giusab aron magamit sa kasamtangan nga mga bersyon sa Docker (ce-17.*) ug Splunk (7.*).

Uban sa datos nga nakuha, mahimo nimong tukuron ang mosunod

mga dashboard: (usa ka magtiayon nga mga litrato)Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema

Splunk Universal Forwarder sa docker ingon usa ka tigkolekta sa log sa sistema
Ang source code para sa mga dash naa sa link nga gihatag sa katapusan sa artikulo. Palihug timan-i nga adunay 2 ka pinili nga mga natad: 1 - index selection (gipangita pinaagi sa maskara), host/container selection. Lagmit kinahanglan nimo nga i-update ang index mask, depende sa mga ngalan nga imong gigamit.

Sa konklusyon, gusto nako nga ipunting ang imong atensyon sa function magsugod() Π²

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
}

Sa akong kaso, alang sa matag palibot ug matag indibidwal nga entidad, kini usa ka aplikasyon sa usa ka sudlanan o usa ka host machine, naggamit kami usa ka lahi nga indeks. Niining paagiha, ang katulin sa pagpangita dili mag-antos kung adunay usa ka hinungdanon nga pagtipon sa datos. Usa ka yano nga lagda ang gigamit sa pagngalan sa mga indeks: _. Busa, aron ang sudlanan mahimong unibersal, sa wala pa ilunsad ang daemon mismo, among gipulihan sed-ika wildcard sa ngalan sa palibot. Ang variable nga ngalan sa palibot gipasa pinaagi sa mga variable sa palibot. Morag kataw-anan.

Angay usab nga hinumdoman nga sa usa ka hinungdan ang Splunk wala maapektuhan sa presensya sa parameter sa docker hostname. Gahi gihapon siyang magpadala og mga troso nga adunay id sa iyang sudlanan sa host field. Ingon usa ka solusyon, mahimo ka mag-mount / etc / hostname gikan sa host machine ug sa pagsugod paghimo mga kapuli nga susama sa mga ngalan sa indeks.

Pananglitan 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

Ang resulta

Oo, tingali ang solusyon dili maayo ug siguradong dili unibersal alang sa tanan, tungod kay daghan "hardcode". Apan base niini, ang matag usa makahimo sa ilang kaugalingon nga imahe ug ibutang kini sa ilang pribadong artifactory, kung, kung kini mahitabo, kinahanglan nimo ang Splunk Forwarder sa Docker.

Mga reperensiya:

Solusyon gikan sa artikulo
Usa ka solusyon gikan sa outcoldman nga nagdasig kanamo sa paggamit pag-usab sa pipila ka mga gamit
Sa. dokumentasyon para sa pag-set up sa Universal Forwarder

Source: www.habr.com

Idugang sa usa ka comment