Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam

Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam

Tha Splunk mar aon de ghrunn de na toraidhean cruinneachaidh is anailis malairteach as aithnichte. Fiù ‘s a-nis, nuair nach eilear a’ reic san Ruis tuilleadh, chan e adhbhar a tha seo gun a bhith a ’sgrìobhadh stiùireadh / mar a nì thu airson an toraidh seo.

Amas: cruinnich logaichean siostam bho nodan docker ann an Splunk gun a bhith ag atharrachadh rèiteachadh an inneal aoigheachd

Bu mhath leam tòiseachadh leis an dòigh-obrach oifigeil, a tha a 'coimhead beagan neònach nuair a bhios mi a' cleachdadh Docker.
Ceangal gu mòr-ionad Docker
Dè th' againn:

1. Ìomhaigh pullim

$ docker pull splunk/universalforwarder:latest

2. Tòisich an soitheach leis na paramadairean riatanach

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

3. Bidh sinn a 'dol a-steach don ghobhar

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

An ath rud, thathar ag iarraidh oirnn a dhol gu seòladh aithnichte anns na sgrìobhainnean.

Agus rèitich an soitheach às deidh dha tòiseachadh:


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

Fuirich. Dè?

Ach chan eil na h-iongnadh a’ tighinn gu crìch an sin. Ma ruitheas tu an soitheach bhon ìomhaigh oifigeil ann am modh eadar-ghnìomhach, chì thu na leanas:

Beagan briseadh dùil


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

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

Sgoinneil. Chan eil eadhon artifact anns an ìomhaigh. Is e sin, a h-uile uair a thòisicheas tu bheir e ùine an tasglann a luchdachadh sìos le binaries, dì-phapadh agus rèiteachadh.
Dè mu dheidhinn docker-way agus sin uile?

Chan eil taing. Gabhaidh sinn slighe eile. Dè ma nì sinn na h-obraichean sin uile aig ìre cruinneachaidh? An uairsin rachamaid!

Gus nach cuir thu dàil ro fhada, seallaidh mi dhut an ìomhaigh mu dheireadh sa bhad:

Faidhle docker

# Тут у кого какие предпочтения
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" ]

Mar sin dè a tha air a ghabhail a-steach

ciad_tòiseachadh.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

Aig a’ chiad dol-a-mach, tha Splunk ag iarraidh ort logadh a-steach / facal-faire a thoirt dha, ACH tha an dàta seo air a chleachdadh a-mhàin gus òrdughan rianachd a chuir an gnìomh airson an stàladh sònraichte sin, is e sin, taobh a-staigh an t-soithich. Anns a 'chùis againn, tha sinn dìreach airson an soitheach a chuir air bhog gus am bi a h-uile càil ag obair agus na logaichean a' sruthadh mar abhainn. Gu dearbh, is e còd cruaidh a tha seo, ach cha do lorg mi dòighean sam bith eile.

Nas fhaide a rèir an sgriobt air a chur gu bàs

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

splunkclouduf.spl - Is e faidhle teisteanais a tha seo airson Splunk Universal Forwarder, a ghabhas luchdachadh sìos bhon eadar-aghaidh lìn.

Càite an cliog thu airson luchdachadh sìos (ann an dealbhan)Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam

Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam
Is e tasglann cunbhalach a tha seo a ghabhas dì-phapadh. Taobh a-staigh tha teisteanasan agus facal-faire airson ceangal ris an SplunkCloud againn agus toraidhean.conf le liosta de na h-eisimpleirean cuir a-steach againn. Bidh am faidhle seo buntainneach gus an ath-stàlaich thu an stàladh Splunk agad no gus an cuir thu nod cuir a-steach ma tha an stàladh san togalach. Mar sin, chan eil dad ceàrr air a chuir a-steach don t-soitheach.

Agus is e an rud mu dheireadh ath-thòiseachadh. Tha, gus na h-atharrachaidhean a chuir an sàs, feumaidh tu ath-thòiseachadh.

Anns an cuir a-steach.conf cuiridh sinn na logaichean a tha sinn airson a chuir gu Splunk. Chan fheumar am faidhle seo a chur ris an ìomhaigh ma tha, mar eisimpleir, a’ sgaoileadh configs tro phupaidean. Is e an aon rud gu bheil Forwarder a’ faicinn na configs nuair a thòisicheas an daemon, air neo bidh feum air ./splunk ath-thòiseachadh.

Dè an seòrsa sgriobtaichean stats docker a th’ annta? Tha seann fhuasgladh air Github bho fear a-muigh, chaidh na sgriobtaichean a thoirt às an sin agus an atharrachadh gus obrachadh leis na dreachan gnàthach de Docker (ce-17.*) agus Splunk (7.*).

Leis an dàta a gheibhear, faodaidh tu na leanas a thogail

dashboards: (dealbh no dhà)Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam

Splunk Universal Forwarder ann an Docker mar neach-cruinneachaidh logaichean siostam
Tha an còd tùsail airson sgrìoban anns a’ cheangal a gheibhear aig deireadh an artaigil. Thoir an aire gu bheil 2 raon taghte ann: 1 - taghadh clàr-amais (air a sgrùdadh le masg), taghadh aoigheachd / soitheach. Is dòcha gum feum thu am masg clàr-amais ùrachadh, a rèir nan ainmean a chleachdas tu.

Ann an co-dhùnadh, bu mhath leam d’ aire a tharraing chun ghnìomh tòiseachadh () в

inntrigeadh.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
}

Anns a ’chùis agam, airson gach àrainneachd agus gach eintiteas fa leth, ge bith an e tagradh ann an soitheach no inneal aoigheachd a th’ ann, bidh sinn a ’cleachdadh clàr-amais air leth. San dòigh seo, cha bhith an astar sgrùdaidh a’ fulang nuair a tha cruinneachadh mòr de dhàta ann. Tha riaghailt shìmplidh air a chleachdadh airson clàran-amais ainmeachadh: _. Mar sin, gus am bi an soitheach uile-choitcheann, mus cuir sinn air bhog an daemon fhèin, bidh sinn ga chur na àite agus-th cairt fhiadhaich gu ainm na h-àrainneachd. Tha an caochladair ainm àrainneachd air a dhol tro chaochladairean àrainneachd. Fuaimean èibhinn.

Is fhiach a bhith mothachail cuideachd nach eil làthaireachd paramadair docker a ’toirt buaidh air adhbhar air choireigin ainm aoigheachd. Cuiridh e fhathast gu cruaidh na logaichean le id an t-soithich aige ann an raon an aoigheachd. Mar fhuasgladh, faodaidh tu a chuir suas / etc / ainm-aoigheachd bhon inneal aoigheachd agus aig àm tòiseachaidh dèan feadhainn ùra coltach ri ainmean clàr-amais.

Example 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

An toradh

Tha, is dòcha nach eil am fuasgladh air leth freagarrach agus gu cinnteach chan eil e uile-choitcheann airson a h-uile duine, leis gu bheil mòran ann "hardcode". Ach stèidhichte air, faodaidh a h-uile duine an ìomhaigh aca fhèin a thogail agus a chuir anns an inneal prìobhaideach aca, ma tha, mar a thachras, feumaidh tu Splunk Forwarder ann an Docker.

Tùsan:

Fuasgladh bhon artaigil
Fuasgladh bho outcoldman a bhrosnaich sinn gus cuid den ghnìomhachd ath-chleachdadh
As. sgrìobhainnean airson stèidheachadh Universal Forwarder

Source: www.habr.com

Cuir beachd ann