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.
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)
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
Uban sa datos nga nakuha, mahimo nimong tukuron ang mosunod
mga dashboard: (usa ka magtiayon nga mga litrato)
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:
Source: www.habr.com