Splunk Universal Forwarder yn Docker fel casglwr log system

Splunk Universal Forwarder yn Docker fel casglwr log system

Mae Splunk yn un o nifer o'r cynhyrchion casglu a dadansoddi logiau masnachol mwyaf adnabyddus. Hyd yn oed nawr, pan na wneir gwerthiannau yn Rwsia mwyach, nid yw hyn yn rheswm i beidio ag ysgrifennu cyfarwyddiadau / sut i wneud y cynnyrch hwn.

Gorchwyl: casglu logiau system o nodau docwr yn Splunk heb newid cyfluniad y peiriant gwesteiwr

Hoffwn ddechrau gyda'r dull swyddogol, sy'n edrych braidd yn rhyfedd wrth ddefnyddio Docker.
Cyswllt i ganolbwynt Docker
Beth sydd gennym ni:

1. Delwedd Pullim

$ docker pull splunk/universalforwarder:latest

2. Dechreuwch y cynhwysydd gyda'r paramedrau angenrheidiol

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

3. Rydym yn mynd i mewn i'r cynhwysydd

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

Nesaf, gofynnir i ni fynd i gyfeiriad hysbys yn y ddogfennaeth.

A ffurfweddwch y cynhwysydd ar Γ΄l iddo ddechrau:


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

Arhoswch. Beth?

Ond nid yw'r syndod yn gorffen yn y fan honno. Os ydych chi'n rhedeg y cynhwysydd o'r ddelwedd swyddogol yn y modd rhyngweithiol, fe welwch y canlynol:

Ychydig o siom


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

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

Gwych. Nid yw'r ddelwedd hyd yn oed yn cynnwys arteffact. Hynny yw, bob tro y byddwch chi'n dechrau bydd yn cymryd amser i lawrlwytho'r archif gyda deuaidd, dadbacio a ffurfweddu.
Beth am docker-way a hynny i gyd?

Dim Diolch. Byddwn yn cymryd llwybr gwahanol. Beth os ydym yn cyflawni'r holl weithrediadau hyn yn y cam cydosod? Yna gadewch i ni fynd!

Er mwyn peidio ag oedi yn rhy hir, byddaf yn dangos y ddelwedd derfynol i chi ar unwaith:

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

Felly beth sydd wedi'i gynnwys yn

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

Ar y cychwyn cyntaf, mae Splunk yn gofyn ichi roi mewngofnodi / cyfrinair iddo, OND defnyddir y data hwn yn unig i weithredu gorchmynion gweinyddol ar gyfer y gosodiad penodol hwnnw, hynny yw, y tu mewn i'r cynhwysydd. Yn ein hachos ni, rydyn ni eisiau lansio'r cynhwysydd fel bod popeth yn gweithio a bod y boncyffion yn llifo fel afon. Wrth gwrs, cod caled yw hwn, ond nid wyf wedi dod o hyd i unrhyw ffyrdd eraill.

Ymhellach yn Γ΄l y sgript yn cael ei weithredu

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

splunkclouduf.spl β€” Mae hon yn ffeil tystlythyrau ar gyfer Splunk Universal Forwarder, y gellir ei lawrlwytho o'r rhyngwyneb gwe.

Ble i glicio i lawrlwytho (mewn lluniau)Splunk Universal Forwarder yn Docker fel casglwr log system

Splunk Universal Forwarder yn Docker fel casglwr log system
Mae hon yn archif reolaidd y gellir ei dadbacio. Y tu mewn mae tystysgrifau a chyfrinair ar gyfer cysylltu Γ’'n SplunkCloud a allbynnau.conf gyda rhestr o'n enghreifftiau mewnbwn. Bydd y ffeil hon yn berthnasol nes i chi ailosod eich gosodiad Splunk neu ychwanegu nod mewnbwn os yw'r gosodiad ar y safle. Felly, nid oes dim o'i le ar ei ychwanegu y tu mewn i'r cynhwysydd.

A'r peth olaf yw ailgychwyn. Oes, i gymhwyso'r newidiadau, mae angen i chi ei ailgychwyn.

Yn ein mewnbynnau.conf rydym yn ychwanegu'r logiau yr ydym am eu hanfon at Splunk. Nid oes angen ychwanegu'r ffeil hon at y ddelwedd os ydych, er enghraifft, yn dosbarthu ffurfweddiadau trwy byped. Yr unig beth yw bod Forwarder yn gweld y configs pan fydd yr daemon yn dechrau, fel arall bydd angen ./splunk ailgychwyn.

Pa fath o sgriptiau ystadegau docwyr ydyn nhw? Mae hen ateb ar Github o outcoldman, cymerwyd y sgriptiau oddi yno a'u haddasu i weithio gyda fersiynau cyfredol o Docker (ce-17.*) a Splunk (7.*).

Gyda'r data a gafwyd, gallwch adeiladu'r canlynol

dangosfyrddau: (cwpl o luniau)Splunk Universal Forwarder yn Docker fel casglwr log system

Splunk Universal Forwarder yn Docker fel casglwr log system
Mae'r cod ffynhonnell ar gyfer llinellau toriad yn y ddolen a ddarperir ar ddiwedd yr erthygl. Sylwch fod yna 2 faes dethol: 1 - dewis mynegai (wedi'i chwilio yn Γ΄l mwgwd), dewis gwesteiwr/cynhwysydd. Mae'n debyg y bydd angen i chi ddiweddaru'r mwgwd mynegai, yn dibynnu ar yr enwau rydych chi'n eu defnyddio.

I gloi, hoffwn dynnu eich sylw at y swyddogaeth dechrau() Π²

pwynt mynediad.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
}

Yn fy achos i, ar gyfer pob amgylchedd a phob endid unigol, boed yn gais mewn cynhwysydd neu beiriant gwesteiwr, rydym yn defnyddio mynegai ar wahΓ’n. Fel hyn, ni fydd y cyflymder chwilio yn dioddef pan fydd crynhoad data yn sylweddol. Defnyddir rheol syml i enwi mynegeion: _. Felly, er mwyn i'r cynhwysydd fod yn gyffredinol, cyn lansio'r daemon ei hun, rydyn ni'n cymryd ei le syched-th wildcard i enw'r amgylchedd. Mae'r newidyn enw amgylchedd yn cael ei drosglwyddo trwy newidynnau amgylchedd. Swnio'n ddoniol.

Mae'n werth nodi hefyd nad yw presenoldeb paramedr y docwr yn effeithio ar Splunk am ryw reswm enw gwesteiwr. Bydd yn dal i anfon boncyffion yn ystyfnig gyda ID ei gynhwysydd yn y maes gwesteiwr. Fel ateb, gallwch mount / etc / enw ​​gwesteiwr o'r peiriant gwesteiwr ac wrth gychwyn gwnewch amnewidiadau tebyg i enwau mynegai.

Enghraifft 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

Cyfanswm

Ydy, efallai nad yw'r ateb yn ddelfrydol ac yn sicr nid yw'n gyffredinol i bawb, gan fod yna lawer "cod caled". Ond yn seiliedig arno, gall pawb adeiladu eu delwedd eu hunain a'i roi yn eu artiffactory preifat, os, fel y mae'n digwydd, mae angen Splunk Forwarder yn Docker arnoch.

Cyfeiriadau:

Ateb o'r erthygl
Ateb gan outcoldman a'n hysbrydolodd i ailddefnyddio rhai o'r swyddogaethau
O. dogfennaeth ar gyfer sefydlu Universal Forwarder

Ffynhonnell: hab.com

Ychwanegu sylw