පද්ධති ලොග් එකතුකරන්නෙකු ලෙස ඩොකර් හි ඇති ස්ප්ලන්ක් යුනිවර්සල් ෆෝවර්ඩර්

පද්ධති ලොග් එකතුකරන්නෙකු ලෙස ඩොකර් හි ඇති ස්ප්ලන්ක් යුනිවර්සල් ෆෝවර්ඩර්

Splunk යනු වඩාත් හඳුනාගත හැකි වාණිජ ලොග් එකතු කිරීමේ සහ විශ්ලේෂණ නිෂ්පාදන කිහිපයෙන් එකකි. මේ වන විටත්, රුසියාවේ විකුණුම් තවදුරටත් සිදු නොකරන විට, මෙම නිෂ්පාදනය සඳහා උපදෙස් / කෙසේද යන්න ලිවීමට මෙය හේතුවක් නොවේ.

අරමුණු: ධාරක යන්ත්‍ර වින්‍යාසය වෙනස් නොකර Splunk හි ඩොකර් නෝඩ් වලින් පද්ධති ලොග් එකතු කරන්න

මම Docker භාවිතා කරන විට ටිකක් අමුතු ලෙස පෙනෙන නිල ප්‍රවේශයෙන් ආරම්භ කිරීමට කැමැත්තෙමි.
Docker hub වෙත සබැඳිය
අපට ඇත්තේ කුමක්ද:

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" ]

ඉතින් එහි අඩංගු දේ

පළමු_ආරම්භය.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 ඔබෙන් එයට පිවිසුමක්/මුරපදයක් ලබා දෙන ලෙස ඉල්ලා සිටියි, නමුත් මෙම දත්ත භාවිතා වේ පමණි එම විශේෂිත ස්ථාපනය සඳහා පරිපාලන විධානයන් ක්‍රියාත්මක කිරීමට, එනම් බහාලුම් ඇතුළත. අපගේ නඩුවේදී, අපට අවශ්‍ය වන්නේ කන්ටේනරය දියත් කිරීමට පමණක් වන අතර එමඟින් සෑම දෙයක්ම ක්‍රියාත්මක වන අතර ලොග ගංගාවක් මෙන් ගලා යයි. ඇත්ත වශයෙන්ම, මෙය දෘඪ කේතයකි, නමුත් මම වෙනත් ක්රම සොයාගෙන නැත.

තව දුරටත් පිටපතට අනුව ක්රියාත්මක වේ

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

splunkclouduf.spl — මෙය Splunk Universal Forwarder සඳහා අක්තපත්‍ර ගොනුවකි, එය වෙබ් අතුරු මුහුණතෙන් බාගත හැක.

බාගත කිරීමට ක්ලික් කළ යුතු ස්ථානය (පින්තූර වල)පද්ධති ලොග් එකතුකරන්නෙකු ලෙස ඩොකර් හි ඇති ස්ප්ලන්ක් යුනිවර්සල් ෆෝවර්ඩර්

පද්ධති ලොග් එකතුකරන්නෙකු ලෙස ඩොකර් හි ඇති ස්ප්ලන්ක් යුනිවර්සල් ෆෝවර්ඩර්
මෙය ඉවත් කළ හැකි සාමාන්‍ය ලේඛනාගාරයකි. ඇතුළත අපගේ SplunkCloud වෙත සම්බන්ධ වීමට සහතික සහ මුරපදයක් ඇත outputs.conf අපගේ ආදාන අවස්ථා ලැයිස්තුවක් සමඟ. ඔබ ඔබේ Splunk ස්ථාපනය නැවත ස්ථාපනය කරන තෙක් හෝ ස්ථාපනය පරිශ්‍රයේ තිබේ නම් ආදාන නෝඩයක් එක් කරන තෙක් මෙම ගොනුව අදාළ වේ. ඒ නිසා කන්ටේනරය ඇතුලට දැම්මට වරදක් නෑ.

සහ අවසාන දෙය නැවත ආරම්භ කිරීමයි. ඔව්, වෙනස්කම් යෙදීමට, ඔබ එය නැවත ආරම්භ කළ යුතුය.

අපේ inputs.conf අපි Splunk වෙත යැවීමට අවශ්‍ය ලොග් එකතු කරමු. උදාහරණයක් ලෙස, ඔබ රූකඩ හරහා වින්‍යාස බෙදා හරින්නේ නම්, මෙම ගොනුව රූපයට එක් කිරීම අවශ්‍ය නොවේ. එකම දෙය නම්, ඩීමන් ආරම්භ වන විට ෆෝවර්ඩර් විසින් වින්‍යාසය දකිනු ඇත, එසේ නොමැතිනම් එයට අවශ්‍ය වනු ඇත ./splunk නැවත ආරම්භ කරන්න.

ඒවා මොන වගේ docker stats scripts ද? Github හි පැරණි විසඳුමක් ඇත outcoldman, ස්ක්‍රිප්ට් එතැනින් ගෙන Docker (ce-17.*) සහ Splunk (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
}

මගේ නඩුවේදී, එක් එක් පරිසරය සහ එක් එක් තනි ආයතනය සඳහා, එය බහාලුම් හෝ ධාරක යන්ත්‍රයක යෙදුමක් වේවා, අපි වෙනම දර්ශකයක් භාවිතා කරමු. මේ ආකාරයෙන්, සැලකිය යුතු දත්ත සමුච්චයක් ඇති විට සෙවුම් වේගය දුක් විඳින්නේ නැත. දර්ශක නම් කිරීම සඳහා සරල රීතියක් භාවිතා කරයි: _. එබැවින්, කන්ටේනරය විශ්වීය වීම සඳහා, ඩීමන් දියත් කිරීමට පෙර, අපි ප්රතිස්ථාපනය කරමු sedපරිසරයේ නමට -th Wildcard. පරිසර නාම විචල්‍යය පාරිසරික විචල්‍යයන් හරහා ගමන් කරයි. විහිළුවක් වගේ.

කිසියම් හේතුවක් නිසා ඩොකර් පරාමිතිය තිබීමෙන් ස්ප්ලන්ක්ට බලපාන්නේ නැති බව ද සඳහන් කිරීම වටී ධාරක නාමයයි. ඔහු තවමත් මුරණ්ඩු ලෙස සත්කාරක ක්ෂේත්‍රය තුළ ඔහුගේ කන්ටේනරයේ හැඳුනුම්පත සහිත ලඝු-සටහන් යවනු ඇත. විසඳුමක් ලෙස, ඔබට සවි කළ හැකිය / etc / ධාරක නාමය ධාරක යන්ත්‍රයෙන් සහ ආරම්භයේදී දර්ශක නාම වලට සමාන ප්‍රතිස්ථාපන කරන්න.

උදාහරණය 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

ප්රතිඵලය

ඔව්, සමහර විට විසඳුම පරිපූර්ණ නොවන අතර නිසැකවම සෑම කෙනෙකුටම විශ්වීය නොවේ, මන්ද බොහෝ ඒවා ඇත "දෘඪ කේතය". නමුත් එය මත පදනම්ව, සෑම කෙනෙකුටම තමන්ගේම රූපයක් ගොඩනඟා එය ඔවුන්ගේ පුද්ගලික කෘතිමාගාරයේ තැබිය හැකිය, එය සිදු වන පරිදි, ඔබට ඩොකර්හි ස්ප්ලන්ක් ෆෝවර්ඩර් අවශ්‍ය නම්.

ආශ්රිත:

ලිපියෙන් විසඳුම
සමහර ක්‍රියාකාරීත්වයන් නැවත භාවිතා කිරීමට අපව පෙලඹවූ outcoldman වෙතින් විසඳුමක්
වල. Universal Forwarder පිහිටුවීම සඳහා ලියකියවිලි

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න