سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه

سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه

سپلنک یو له ډیری پیژندل شوي سوداګریز لاګ راټولولو او تحلیلي محصولاتو څخه دی. حتی اوس، کله چې په روسیه کې نور خرڅلاو نه کیږي، دا د دې محصول لپاره لارښوونې / څنګه لیکلو دلیل نه دی.

موخه: د کوربه ماشین ترتیب بدلولو پرته په سپلنک کې د ډاکر نوډونو څخه د سیسټم لاګونه راټول کړئ

زه غواړم د رسمي چلند سره پیل وکړم ، کوم چې د ډاکر کارولو پرمهال یو څه عجیب ښکاري.
د ډاکر مرکز سره اړیکه
موږ څه لرو:

1. د پلم عکس

$ docker pull splunk/universalforwarder:latest

2. کانټینر د اړینو پیرامیټونو سره پیل کړئ

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

3. موږ کانتینر ته ځو

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

بیا، موږ څخه غوښتنه کیږي چې په اسنادو کې پیژندل شوي پتې ته لاړ شو.

او کانټینر ترتیب کړئ وروسته له دې چې پیل شي:


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

انتظار وکړئ. څه؟

مګر حیرانتیا هلته پای ته نه رسیږي. که تاسو د رسمي عکس څخه کانټینر په متقابل حالت کې پرمخ وړئ ، نو تاسو به لاندې وګورئ:

یو څه مایوسه


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

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

غوره. په انځور کې حتی یو اثار هم نشته. دا ، هرکله چې تاسو پیل کوئ دا به د بائنریونو سره آرشیف ډاونلوډ کولو ، خلاصولو او تنظیم کولو لپاره وخت ونیسي.
د ډاکر لارې او د دې ټولو په اړه څه؟

نه مننه. موږ به بله لاره غوره کړو. څه که موږ دا ټول عملیات د مجلس په مرحله کې ترسره کړو؟ بیا راځه!

د دې لپاره چې ډیر ځنډ ونه کړئ ، زه به تاسو ته سمدلاسه وروستی عکس وښیم:

ډکولر

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

نو هغه څه چې پکې شامل دي

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

په لومړي پیل کې، سپلنک له تاسو څخه غوښتنه کوي چې دا د ننوتلو / پاسورډ ورکړئ، مګر دا ډاټا کارول کیږي یوازې د دې ځانګړي نصب لپاره اداري امرونه اجرا کول، دا د کانټینر دننه. زموږ په قضیه کې، موږ یوازې کانټینر په لاره اچول غواړو ترڅو هرڅه کار وکړي او لاګونه د سیند په څیر جریان ولري. البته، دا هارډ کوډ دی، مګر ما بله لاره نه ده موندلې.

نور د سکریپټ مطابق اجرا کیږي

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

splunkclouduf.spl - دا د سپلنک یونیورسل فارورډر لپاره د اعتبار فایل دی، کوم چې د ویب انٹرفیس څخه ډاونلوډ کیدی شي.

د ډاونلوډ کولو لپاره چیرته کلیک وکړئ (په عکسونو کې)سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه

سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه
دا یو منظم آرشیف دی چې خلاص کیدی شي. دننه زموږ د SplunkCloud سره وصل کیدو لپاره سندونه او پاسورډ دی outputs.conf زموږ د ننوتلو مثالونو لیست سره. دا فایل به تر هغه پورې اړونده وي تر هغه چې تاسو خپل د سپلنک انسټالشن بیا انسټال کړئ یا د ان پټ نوډ اضافه کړئ که چیرې انسټالشن په اساس وي. له همدې امله ، د کانټینر دننه د دې اضافه کولو کې هیڅ غلط ندي.

او وروستی شی بیا پیل دی. هو، د بدلونونو پلي کولو لپاره، تاسو باید دا بیا پیل کړئ.

زموږ په inputs.conf موږ هغه لاګونه اضافه کوو چې موږ یې سپلونک ته لیږو. دا اړینه نده چې دا فایل په عکس کې اضافه کړئ که چیرې ، د مثال په توګه ، تاسو د ګوډاګی له لارې تشکیلات توزیع کوئ. یوازینی شی دا دی چې فارورډر تشکیلات ګوري کله چې ډیمون پیل شي ، که نه نو اړتیا به وي ./splunk بیا پیل کړئ.

د ډاکر سټیټس سکریپټونه کوم ډول دي؟ د ګیتوب څخه یو زوړ حل شتون لري بهرنی سړی، سکریپټونه له هغه ځای څخه اخیستل شوي او د Docker (ce-17. *) او سپلنک (7 *) اوسني نسخو سره کار کولو لپاره ترمیم شوي.

د ترلاسه شوي معلوماتو سره، تاسو کولی شئ لاندې جوړ کړئ

ډشبورډونه: (یو څو عکسونه)سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه

سپلنک یونیورسل فارورډر په ډاکر کې د سیسټم لاګ راټولونکي په توګه
د ډیشونو لپاره د سرچینې کوډ د مقالې په پای کې چمتو شوي لینک کې دی. مهرباني وکړئ په یاد ولرئ چې 2 غوره ساحې شتون لري: 1 - د شاخص انتخاب (د ماسک لخوا لټون شوی)، کوربه / کانټینر انتخاب. تاسو به احتمالا د شاخص ماسک تازه کولو ته اړتیا ولرئ ، د هغه نومونو پورې اړه لري چې تاسو یې کاروئ.

په پایله کې، زه غواړم ستاسو پام فعالیت ته واړوم پیل() в

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
}

زما په قضیه کې، د هر چاپیریال او هرې انفرادي ادارې لپاره، دا په کانټینر یا کوربه ماشین کې غوښتنلیک وي، موږ یو جلا شاخص کاروو. په دې توګه، د لټون سرعت به زیان ونه رسوي کله چې د معلوماتو د پام وړ جمع وي. یو ساده قاعده د شاخصونو نومولو لپاره کارول کیږي: _. له همدې امله ، د دې لپاره چې کانټینر نړیوال وي ، مخکې لدې چې پخپله ډیمون پیل کړي ، موږ یې ځای په ځای کوو سل- د چاپیریال نوم ته وائلډ کارډ. د چاپیریال نوم متغیر د چاپیریال متغیرونو له لارې تیریږي. مسخره ښکاري.

دا هم د یادونې وړ ده چې د ځینو دلیلونو لپاره سپلنک د ډاکر پیرامیټر شتون لخوا اغیزمن شوی نه دی کوربه نوم. هغه به لاهم په کلکه د کوربه په ساحه کې د خپل کانټینر ID سره لاګونه واستوي. د حل په توګه، تاسو کولی شئ نصب کړئ / etc / hostname د کوربه ماشین څخه او په پیل کې د شاخص نومونو ته ورته ځای بدل کړئ.

مثال 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

نتیجه

هو، شاید حل مثالی نه وي او یقینا د هرچا لپاره نړیوال نه وي، ځکه چې ډیری شتون لري "هارډ کوډ". مګر د دې پراساس ، هرڅوک کولی شي خپل عکس رامینځته کړي او په خپل شخصي هنري کارخانه کې یې واچوي ، که چیرې دا پیښ شي ، تاسو په ډاکر کې سپلنک فارورډر ته اړتیا لرئ.

سرچینې:

د مقالې څخه حل
د آوټکولډمین څخه حل چې موږ یې هڅولي ترڅو ځینې فعالیت بیا وکاروو
د. د یونیورسل فارورډر تنظیم کولو لپاره اسناد

سرچینه: www.habr.com

Add a comment