Splunk သည် မှတ်တမ်းများ စုဆောင်းခြင်းနှင့် ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက် အသိအမှတ်ပြုရဆုံး စီးပွားဖြစ်ထုတ်ကုန်အနည်းငယ်ထဲမှ တစ်ခုဖြစ်သည်။ ယခုအချိန်တွင်ပင်၊ ရုရှားတွင်ရောင်းချခြင်းမပြုတော့သည့်အခါ၊ ဤထုတ်ကုန်အပေါ် ညွှန်ကြားချက်များ/လုပ်နည်းကို မရေးရန် အကြောင်းမရှိပါ။
လုပ်ငန်း: လက်ခံသူစက်ဖွဲ့စည်းပုံကို မပြောင်းလဲဘဲ Splunk ရှိ docker node များမှ စနစ်မှတ်တမ်းများကို စုဆောင်းပါ။
Docker ကိုအသုံးပြုတဲ့အခါ ထူးဆန်းပုံပေါ်တဲ့တရားဝင်ချဉ်းကပ်မှုကနေစချင်ပါတယ်။
ဒါဆို ငါတို့မှာ ဘာရှိလဲ။
1. Pullim ပုံ
$ docker pull splunk/universalforwarder:latest2. လိုအပ်သော ဘောင်များဖြင့် ကွန်တိန်နာကို စတင်ပါ။
$ docker run -d -p 9997:9997 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=<password>' splunk/universalforwarder:latest3. ကွန်တိန်နာထဲသို့သွားပါ။
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 *********
ну и так далее...
မြတ်သော။ ရုပ်ပုံထဲမှာ ရုပ်ဝတ္ထုပစ္စည်းတောင် မရှိပါဘူး။ ဆိုလိုသည်မှာ၊ သင်စတင်သည့်အခါတိုင်း၊ ဖိုင်ကို binaries ဖြင့်ဒေါင်းလုဒ်လုပ်ရန်၊ ၎င်းကိုထုပ်ပိုးပြီး configure လုပ်ရန် အချိန်ကုန်ဆုံးမည်ဖြစ်သည်။
docker-way နဲ့ ဒါတွေအားလုံးကကော။
ရပါတယ်ကျေးဇူးပါ။ ငါတို့ တခြားလမ်းကို သွားမယ်။ စည်းဝေးပွဲအဆင့်တွင် ဤလုပ်ငန်းအားလုံးကို ကျွန်ုပ်တို့လုပ်ဆောင်ပါက မည်သို့နည်း။ ဒါဆို သွားကြရအောင်။
ဆွဲထုတ်ခြင်းမှ ရှောင်ကြဉ်ရန်၊ နောက်ဆုံးပုံကို ချက်ချင်းပြသပေးပါမည်။
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" ]ဒါဆို ဘာတွေပါလဲ။
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သင် Splunk ကို စတင်သောအခါတွင်၊ ၎င်းသည် သင့်အား လော့ဂ်အင်/စကားဝှက်တစ်ခု သတ်မှတ်ရန် တောင်းဆိုသော်လည်း ဤဒေတာကို အသုံးပြုထားသည်။ သာ ဤအထူးပြုတပ်ဆင်မှုအတွက် စီမံခန့်ခွဲရေးဆိုင်ရာ ညွှန်ကြားချက်များကို လုပ်ဆောင်ရန်၊ ဆိုလိုသည်မှာ ကွန်တိန်နာအတွင်း၌ ဖြစ်သည်။ ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ အားလုံးအဆင်ပြေပြီး သစ်လုံးများကို မြစ်ကဲ့သို့စီးဆင်းစေရန် ကွန်တိန်နာကို လည်ပတ်လိုပါသည်။ ဟုတ်ပါတယ်၊ ဒါက hardcode ပါ၊ ဒါပေမယ့် တခြားနည်းလမ်းကို ရှာမတွေ့သေးပါဘူး။
ထို့အပြင် အခြေအနေအရ၊ အောက်ပါအတိုင်း ဆောင်ရွက်သည်-
/splunkforwarder/bin/splunk install app /splunkclouduf.spl -auth admin:changemesplunkclouduf.spl - ၎င်းသည် ဝဘ်အင်တာဖေ့စ်မှဒေါင်းလုဒ်လုပ်နိုင်သည့် Splunk Universal Forwarder အထောက်အထားဖိုင်ဖြစ်သည်။
ဒေါင်းလုဒ်လုပ်ရန်နေရာကိုနှိပ်ပါ (ပုံများတွင်)
၎င်းသည် ထုပ်ပိုးထားသော ပုံမှန်မှတ်တမ်းတစ်ခုဖြစ်သည်။ အတွင်းတွင် ကျွန်ုပ်တို့၏ SplunkCloud နှင့် ချိတ်ဆက်ရန်အတွက် လက်မှတ်များနှင့် စကားဝှက်တစ်ခုရှိသည်။ outputs.conf ကျွန်ုပ်တို့၏ထည့်သွင်းမှုအခြေအနေများစာရင်းနှင့်အတူ။ သင်၏ Splunk တပ်ဆင်မှုကို ပြန်လည်ထည့်သွင်းခြင်း သို့မဟုတ် တပ်ဆင်မှုတွင် ထည့်သွင်းခြင်းမပြုမချင်း ဤဖိုင်သည် သက်ဆိုင်ရာဖြစ်ပါမည်။ ဒါကြောင့် ကွန်တိန်နာထဲကို ထည့်လိုက်တာနဲ့ ဘာမှ မမှားပါဘူး။
နောက်ဆုံးတစ်ချက်ကတော့ restart ပါပဲ။ ဟုတ်ကဲ့၊ ပြောင်းလဲမှုများကို အသုံးချရန်၊ ၎င်းကို ပြန်လည်စတင်ရန် လိုအပ်ပါသည်။
ငါတို့၌ inputs.conf Splunk သို့ကျွန်ုပ်တို့ပေးပို့လိုသောမှတ်တမ်းများထည့်ပါ။ ဥပမာအားဖြင့်၊ သင်သည် ရုပ်သေးမှတစ်ဆင့် configs ကိုဖြန့်ဝေပါက ဤဖိုင်ကို ပုံထဲသို့ထည့်ရန် မလိုအပ်ပါ။ အဓိကအချက်မှာ Forwarder သည် daemon ကိုစတင်သောအခါတွင် configs များကိုမြင်ရသည်၊ မဟုတ်ပါကလိုအပ်လိမ့်မည်။ ./splunk ပြန်လည်စတင်ပါ။.
docker stats scripts များကား အဘယ်နည်း။ github တွင်ဖြေရှင်းချက်ဟောင်းတစ်ခုရှိသည်။ ဇာတ်ညွှန်းများကို ထိုနေရာမှ ထုတ်ယူပြီး Docker (ce-17.*) နှင့် Splunk (7.*) ၏ လက်ရှိဗားရှင်းများနှင့် အလုပ်လုပ်ရန် ပြုပြင်မွမ်းမံထားသည်။
ရရှိသောဒေတာဖြင့်၊ သင်သည်အောက်ပါအတိုင်းတည်ဆောက်နိုင်သည်။
ဒက်ရှ်ဘုတ်များ- (ပုံအချို့)
ဒက်ရှ်များ၏ရင်းမြစ်ကုဒ်သည် ဆောင်းပါး၏အဆုံးတွင် သတ်မှတ်ထားသော repo တွင်ဖြစ်သည်။ ရွေးချယ်ထားသည့် အကွက် 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
}ကျွန်ုပ်၏ကိစ္စတွင်၊ ပတ်ဝန်းကျင်တစ်ခုစီနှင့် တစ်ခုချင်းတစ်ခုချင်းအတွက်၊ ၎င်းသည် containerized application သို့မဟုတ် host machine ဖြစ်စေ၊ ကျွန်ုပ်တို့သည် သီးခြားအညွှန်းကို အသုံးပြုသည်။ ဤနည်းအားဖြင့် ဒေတာများ သိသိသာသာ စုဆောင်းမိသောအခါ ရှာဖွေမှု အရှိန်သည် ဒုက္ခရောက်မည်မဟုတ်ပေ။ အညွှန်းများအမည်ပေးခြင်းအတွက် ရိုးရှင်းသောစည်းမျဉ်းကို အသုံးပြုသည်- _. ထို့ကြောင့်၊ container သည် universal ဖြစ်စေရန်၊ daemon ကိုယ်တိုင်မစတင်မီ၊ ကျွန်ုပ်တို့သည် အစားထိုးပါသည်။ sed-om သည် ပတ်ဝန်းကျင်အမည်ကို ကိုယ်စားပြုသည်။ ပတ်ဝန်းကျင်အမည်ဖြင့် ကိန်းရှင်အား ပတ်၀န်းကျင် ကိန်းရှင်များမှတစ်ဆင့် ဖြတ်သန်းသည်။ အသံက ရယ်စရာ။
အကြောင်းတစ်ခုခုကြောင့် Splunk သည် docker parameter ၏ရှေ့မှောက်တွင်မထိခိုက်ကြောင်းကိုလည်းသတိပြုသင့်သည်။ hostname. ၎င်းသည် လက်ခံသူအကွက်ရှိ ၎င်း၏ကွန်တိန်နာ၏ ID ဖြင့် မှတ်တမ်းများကို ဇွတ်ပို့နေလိမ့်မည်။ ဖြေရှင်းချက်အနေဖြင့် သင်သည် mount လုပ်နိုင်သည်။ /etc/hostname host machine မှ နှင့် startup တွင် index names များနှင့် ဆင်တူသော အစားထိုးမှုကို ပြုလုပ်ပါ။
ဥပမာ 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ရလဒ်
ဟုတ်တယ်၊ အဖြေက စံပြမဟုတ်သလို လူတိုင်းအတွက် universal မဟုတ်ဘူး၊ အများကြီးရှိလို့ "ဟာ့ဒ်ကုဒ်". သို့သော် ၎င်းကိုအခြေခံ၍ လူတိုင်းသည် ၎င်းတို့၏ကိုယ်ပိုင်ပုံရိပ်ကိုတည်ဆောက်နိုင်ပြီး၊ အကယ်၍ Docker တွင် Splunk Forwarder လိုအပ်ပါက၊ ၎င်းကို ၎င်းတို့၏ပုဂ္ဂလိကပစ္စည်းများတွင် ထည့်သွင်းနိုင်သည်။
လင့်ခ်များ
source: www.habr.com
