Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ

Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ

ስፕሉክ በጣም ከሚታወቁ የንግድ ምዝግብ ማስታወሻዎች ስብስብ እና ትንተና ምርቶች ውስጥ አንዱ ነው። አሁን እንኳን, በሩሲያ ውስጥ ሽያጮች በማይሠሩበት ጊዜ, ለዚህ ምርት መመሪያዎችን / እንዴት እንደሚጽፉ ይህ ምክንያት አይደለም.

ዓላማየአስተናጋጅ ማሽን ውቅረትን ሳይቀይሩ በ Splunk ውስጥ የስርዓት ምዝግብ ማስታወሻዎችን ከዶከር ኖዶች ይሰብስቡ

ዶከር ሲጠቀሙ ትንሽ እንግዳ በሚመስለው በኦፊሴላዊው አቀራረብ መጀመር እፈልጋለሁ።
ወደ 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 *********

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

በጣም ጥሩ. ምስሉ ቅርስ እንኳን አልያዘም። ይህም ማለት በጀመርክ ቁጥር ማህደሩን በሁለትዮሽ ለማውረድ፣ ለማራገፍ እና ለማዋቀር ጊዜ ይወስዳል።
ስለ ዶከር-መንገድ እና ስለዚያ ሁሉስ?

አልፈልግም፣አመሰግናለሁ. የተለየ መንገድ እንሄዳለን። እነዚህን ሁሉ ስራዎች በስብሰባ ደረጃ ብናከናውንስ? ከዚያ እንሂድ!

በጣም ረጅም ላለመዘግየት፣ የመጨረሻውን ምስል ወዲያውኑ አሳይሃለሁ፡-

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

ስለዚህ በውስጡ የያዘው

የመጀመሪያ_ጅምር.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

splunkclouuf.spl - ይህ የስፕሉክ ዩኒቨርሳል አስተላላፊ የማረጋገጫ ፋይል ነው፣ እሱም ከድር በይነገጽ ሊወርድ ይችላል።

ለማውረድ የት ጠቅ እንደሚደረግ (በምስሎች ውስጥ)Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ

Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ
ይህ ሊፈታ የሚችል መደበኛ ማህደር ነው። ከውስጥ ሰርተፊኬቶች እና ከSplunkCloud እና ጋር ለመገናኘት የይለፍ ቃል አሉ። ውጤቶች.conf ከግቤት ምሳሌዎች ዝርዝር ጋር. የ Splunk ጭነትዎን እንደገና እስኪጭኑ ድረስ ወይም መጫኑ በቦታው ላይ ከሆነ የግቤት መስቀለኛ መንገድ እስኪጨምሩ ድረስ ይህ ፋይል ጠቃሚ ይሆናል። ስለዚህ, በመያዣው ውስጥ መጨመር ምንም ስህተት የለውም.

እና የመጨረሻው ነገር እንደገና መጀመር ነው. አዎ፣ ለውጦቹን ተግባራዊ ለማድረግ፣ እንደገና ማስጀመር ያስፈልግዎታል።

በእኛ ግብዓቶች.conf ወደ Splunk መላክ የምንፈልገውን ምዝግብ ማስታወሻዎች እንጨምራለን. ለምሳሌ በአሻንጉሊት በኩል አወቃቀሮችን ካሰራጩ ይህን ፋይል ወደ ምስሉ ማከል አስፈላጊ አይደለም. ብቸኛው ነገር Forwarder ዴሞን ሲጀምር ውቅሮቹን ማየቱ ነው, አለበለዚያ ያስፈልገዋል ./splunk እንደገና መጀመር.

ምን ዓይነት ዶከር ስታቲስቲክስ ስክሪፕቶች ናቸው? Github ላይ የቆየ መፍትሄ አለ ከ በጣም ቀዝቃዛ ሰውስክሪፕቶቹ ከዚያ ተወስደዋል እና ከአሁኑ የዶከር ስሪቶች (ce-17.*) እና ስፕሉክ (7.*).

በተገኘው መረጃ, የሚከተሉትን መገንባት ይችላሉ

ዳሽቦርዶች: (ሁለት ስዕሎች)Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ

Splunk Universal Forwarder በዶከር ውስጥ እንደ የስርዓት ምዝግብ ማስታወሻ ሰብሳቢ
የጭረት ምንጭ ኮድ በአንቀጹ መጨረሻ ላይ በተሰጠው አገናኝ ውስጥ ነው። እባክዎን 2 የተመረጡ መስኮች እንዳሉ ልብ ይበሉ: 1 - የመረጃ ጠቋሚ ምርጫ (በጭምብል የሚፈለግ), የአስተናጋጅ / የመያዣ ምርጫ. በምትጠቀሟቸው ስሞች ላይ በመመስረት የመረጃ ጠቋሚውን ጭምብል ማዘመን ያስፈልግህ ይሆናል።

በማጠቃለያው, ትኩረትዎን ወደ ተግባሩ ለመሳብ እፈልጋለሁ ጀምር() в

መግቢያ ነጥብ.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
}

በእኔ ሁኔታ, ለእያንዳንዱ አካባቢ እና ለእያንዳንዱ ግለሰብ አካል, በእቃ መያዣ ውስጥ ወይም በአስተናጋጅ ማሽን ውስጥ ማመልከቻ, የተለየ ኢንዴክስ እንጠቀማለን. በዚህ መንገድ, ጉልህ የሆነ የውሂብ ክምችት ሲኖር የፍለጋው ፍጥነት አይጎዳውም. ኢንዴክሶችን ለመሰየም ቀላል ህግ ጥቅም ላይ ይውላል፡- _. ስለዚህ, መያዣው ዓለም አቀፋዊ እንዲሆን, ዲሞን እራሱ ከመጀመሩ በፊት, እንተካለን ተሸሽቷል- ለአካባቢው ስም ምልክት። የአካባቢ ስም ተለዋዋጭ በአካባቢ ተለዋዋጮች በኩል ይተላለፋል። አስቂኝ ይመስላል።

በተጨማሪም በሆነ ምክንያት Splunk በዶክተር መለኪያው ላይ ተጽዕኖ እንደማይኖረው ልብ ሊባል የሚገባው ጉዳይ ነው የአስተናጋጅ ስም. አሁንም በግትርነት የእቃውን መታወቂያ የያዘ ሎግ በአስተናጋጅ መስክ ይልካል። እንደ መፍትሄ, መጫን ይችላሉ / 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

ውጤቱ

አዎን, ምናልባት መፍትሄው ተስማሚ አይደለም እና በእርግጠኝነት ለሁሉም ሰው የሚሆን አይደለም, ምክንያቱም ብዙዎቹ አሉ "ሃርድ ኮድ". ነገር ግን በእሱ ላይ በመመስረት, እያንዳንዱ ሰው የራሱን ምስል መገንባት እና በግል ቅርስ ውስጥ ማስቀመጥ ይችላል, እንደ ሁኔታው ​​ከሆነ, በዶከር ውስጥ Splunk Forwarder ካስፈለገዎት.

ማጣቀሻዎች

ከጽሑፉ መፍትሄ
አንዳንድ ተግባራትን እንደገና እንድንጠቀም ያነሳሳን ከኮልድማን የተሰጠ መፍትሄ
የ. ሁለንተናዊ አስተላላፊን ለማዘጋጀት ሰነዶች

ምንጭ: hab.com

አስተያየት ያክሉ