Splunk yek ji çend hilberên berhevkirin û analîzê yên têketinê yên bazirganî yên herî naskirî ye. Niha jî, dema ku firotan êdî li Rûsyayê nayê kirin, ev ne sedemek e ku meriv ji bo vê hilberê rêwerz/çawa nenivîsîne.
Armanc: bêyî guheztina veavakirina makîneya mêvandar têketinên pergalê ji girêkên dokerê yên li Splunk berhev bikin
Ez dixwazim bi nêzîkatiya fermî dest pê bikim, ku dema ku Docker bikar tîne hinekî xerîb xuya dike.
Çi heye:
1. Wêneyê Pullim
$ docker pull splunk/universalforwarder:latest2. Konteynir bi pîvanên pêwîst dest pê bikin
$ docker run -d -p 9997:9997 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=<password>' splunk/universalforwarder:latest3. Em diçin nav konteynerê
docker exec -it <container-id> /bin/bashDûv re, ji me tê xwestin ku di belgeyê de biçin navnîşanek naskirî.
Û piştî ku konteynerê dest pê dike mîheng bikin:
./splunk add forward-server <host name or ip address>:<listening port>
./splunk add monitor /var/log
./splunk restart
Payin. Çi?
Lê sosret bi dawî nabin. Ger hûn konteynerê ji wêneya fermî di moda înteraktîf de bimeşînin, hûn ê jêrîn bibînin:
Piçek bêhêvîbûn
$ 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 *********
ну и так далее...
Ecêb. Di wêneyê de hunerek jî tê de nîne. Ango, her gava ku hûn dest pê bikin, ew ê dem bigire ku arşîvê bi binaryan dakêşin, pak bikin û mîheng bikin.
Çi li ser docker-way û her tiştî?
Na spas. Em ê rêyek cûda bigirin. Ger em van hemî operasyonan di qonaxa civînê de bikin? Paşê em herin!
Ji bo ku pir dereng nemînim, ez ê tavilê wêneya dawîn nîşanî we bidim:
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" ]Ji ber vê yekê tiştê ku tê de heye
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 eofDi destpêka yekem de, Splunk ji we dipirse ku hûn têketinek / şîfreyek bidin, LÊ ev dane tê bikar anîn bi tenê ku emrên îdarî ji bo wê sazkirina taybetî, ango di hundurê konteynerê de bicîh bikin. Di doza me de, em tenê dixwazin konteynerê bidin destpêkirin da ku her tişt bixebite û têketin mîna çemek biherikin. Bê guman, ev koda hişk e, lê min rêyên din nedît.
Wekî din li gorî senaryoyê tê meşandin
/splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changemesplunkclouduf.spl - Ev pelek pêbaweriyê ye ji bo Splunk Universal Forwarder, ku dikare ji navrûya tevneyê were dakêşandin.
Li ku derê bikirtînin dakêşin (di wêneyan de)
Ev arşîvek birêkûpêk e ku dikare bê pakkirin. Di hundurê de sertîfîka û şîfreyek ji bo girêdana bi SplunkCloud-a me û derdan.conf bi navnîşek mînakên têketina me. Ev pel dê têkildar be heya ku hûn sazkirina Splunk-a xwe ji nû ve saz bikin an girêkek têketinê lê zêde bikin heke sazkirin li ser bingehê be. Ji ber vê yekê, tiştek xelet tune ku wê di hundurê konteynerê de zêde bike.
Û ya dawîn ji nû ve destpêkirinê ye. Erê, ji bo pêkanîna guhertinan, hûn hewce ne ku wê ji nû ve bidin destpêkirin.
Di me de têketin.conf em têketinên ku em dixwazin ji Splunk re bişînin zêde dikin. Ne hewce ye ku hûn vê pelê li wêneyê zêde bikin heke, mînakî, hûn mîhengan bi riya puppetê belav bikin. Tiştek tenê ev e ku Forwarder gava ku daemon dest pê dike konfigurasyonan dibîne, wekî din ew ê hewce bike ./splunk ji nû ve dest pê bike.
Ew çi cûre nivîsarên statîstîkên docker in? Li ser Github ji çareseriyek kevn heye , senaryo ji wir hatine girtin û hatine guheztin da ku bi guhertoyên heyî yên Docker (ce-17.*) û Splunk (7.*) re bixebitin.
Bi daneyên ku hatine bidestxistin, hûn dikarin jêrîn ava bikin
dashboard: (çend wêne)
Koda çavkaniyê ji bo dakêşan di girêdana ku di dawiya gotarê de hatî peyda kirin de ye. Ji kerema xwe bala xwe bidin ku 2 qadên bijartî hene: 1 - Hilbijartina navnîşê (bi maskê tê lêgerîn), hilbijartina mêvandar / konteyner. Hûn ê hewce bikin ku li gorî navên ku hûn bikar tînin, maskeya navnîşê nûve bikin.
Di encamê de, ez dixwazim bala we bikişînim ser fonksiyonê destpêkirin() в
xala têketinê.ş
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
}Di doza min de, ji bo her hawîrdor û her saziyek kesane, ew serîlêdanek di konteynerek an makîneyek mêvandar de be, em navnîşek cihêreng bikar tînin. Bi vî rengî, gava ku berhevbûnek girîng a daneyê hebe, leza lêgerînê dê zirarê nede. Rêgezek hêsan ji bo navên indexan tê bikar anîn: _. Ji ber vê yekê, ji bo ku konteynir gerdûnî be, berî destpêkirina daemon bixwe, em diguhezînin sed-mîna wildcard ji bo navê jîngehê. Guherbara navê jîngehê di nav guhêrbarên jîngehê re derbas dibe. Sounds funny.
Di heman demê de hêjayî gotinê ye ku ji ber hin sedeman Splunk ji hebûna pîvana docker nayê bandor kirin hostname. Ew ê dîsa jî bi serhişkî têketinên bi nasnameya konteynera xwe li qada mêvandar bişîne. Wekî çareseriyek, hûn dikarin siwar bikin / etc / hostname ji makîneya mêvandar û di dema destpêkirinê de veguheztinên mîna navên navnîşan çêbikin.
Mînak 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:roEncam
Erê, dibe ku çareserî ji bo her kesî ne îdeal û bê guman ne gerdûnî ye, ji ber ku gelek hene "hardcode". Lê li ser bingeha wê, her kes dikare wêneya xwe ava bike û wê têxe nav hunera xweya taybet, heke, wekî ku diqewime, hûn hewceyê Splunk Forwarder in Docker.
References:
Source: www.habr.com
