Истифодаи амалии ELK. Насб кардани logstash

Муқаддима

Ҳангоми ҷойгиркунии системаи дигар, мо ба зарурати коркарди миқдори зиёди гузоришҳои гуногун дучор шудем. ELK ҳамчун асбоб интихоб карда шуд. Ин мақола таҷрибаи мо дар ташкили ин стекро муҳокима хоҳад кард.

Мо дар назди худ максад надо-рем, ки тамоми имкониятхои онро тавсиф кунем, вале мехохем, ки диккати махсусро ба халли масъалахои амалй чалб кунем. Ин аз он сабаб аст, ки гарчанде ки миқдори хеле зиёди ҳуҷҷатҳо ва тасвирҳои омода мавҷуд аст, домҳо хеле зиёданд, ҳадди аққал мо онҳоро пайдо кардем.

Мо стекро тавассути docker-compose ҷойгир кардем. Ғайр аз он, мо як docker-compose.yml-и хуб навишташуда доштем, ки ба мо имкон дод, ки стекро қариб бе мушкилот боло бардорем. Ва ба назари мо чунин менамуд, ки ғалаба аллакай наздик аст, ҳоло мо онро каме тағир медиҳем, то ба ниёзҳои худ мувофиқат кунем ва ҳамин тавр.

Мутаассифона, кӯшиши танзим кардани система барои қабул ва коркарди гузоришҳо аз замимаи мо фавран муваффақ нашуд. Аз ин рӯ, мо қарор додем, ки ҳар як ҷузъро алоҳида омӯхта, сипас ба робитаҳои онҳо баргардем.

Ҳамин тавр, мо бо logstash оғоз кардем.

Муҳити зист, ҷойгиркунӣ, иҷро кардани Logstash дар як контейнер

Барои ҷойгиркунӣ мо docker-compose-ро истифода мебарем; таҷрибаҳои дар ин ҷо тавсифшуда дар MacOS ва Ubuntu 18.0.4 гузаронида шуданд.

Тасвири logstash, ки дар docker-compose.yml аслии мо сабт шудааст, docker.elastic.co/logstash/logstash:6.3.2 аст.

Мо онро барои таҷрибаҳо истифода хоҳем бурд.

Мо docker-compose.yml-и алоҳида навиштем, то logstash-ро иҷро кунем. Албатта, метавон тасвирро аз сатри фармон оғоз кард, аммо мо як масъалаи мушаххасро ҳал мекардем, ки дар он ҳама чизро аз docker-compose иҷро мекунем.

Ба таври мухтасар дар бораи файлҳои конфигуратсия

Тавре ки аз тавсиф бармеояд, logstash метавонад ё барои як канал иҷро карда шавад, дар ин ҳолат ба он файли *.conf ё барои якчанд канал лозим аст, ки дар ин ҳолат файли pipelines.yml-ро гузаронад, ки дар навбати худ. , ба файлҳои .conf барои ҳар як канал пайванд хоҳад кард.
Мо рохи дуюмро пеш гирифтем. Он ба назари мо универсалтар ва васеътар менамуд. Аз ин рӯ, мо pipelines.yml-ро сохтем ва феҳристи қубурҳо сохтем, ки дар он файлҳои .conf-ро барои ҳар як канал ҷойгир мекунем.

Дар дохили контейнер дигар файли конфигуратсия мавҷуд аст - logstash.yml. Мо ба он даст намерасонем, мо онро тавре истифода мебарем.

Ҳамин тавр, сохтори феҳристи мо:

Истифодаи амалии ELK. Насб кардани logstash

Барои гирифтани маълумоти воридотӣ, ҳоло мо тахмин мезанем, ки ин tcp дар бандари 5046 аст ва барои баромад мо stdout-ро истифода мебарем.

Дар ин ҷо як конфигуратсияи оддӣ барои оғози аввал аст. Зеро вазифаи аввала ба кор андохтан аст.

Ҳамин тавр, мо ин docker-compose.yml дорем

version: '3'

networks:
  elk:

volumes:
  elasticsearch:
    driver: local

services:

  logstash:
    container_name: logstash_one_channel
    image: docker.elastic.co/logstash/logstash:6.3.2
    networks:
      	- elk
    ports:
      	- 5046:5046
    volumes:
      	- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
	- ./config/pipelines:/usr/share/logstash/config/pipelines:ro

Мо дар ин ҷо чӣ мебинем?

  1. Шабакаҳо ва ҳаҷмҳо аз аслии docker-compose.yml гирифта шудаанд (онест, ки дар он тамоми стек оғоз мешавад) ва ман фикр мекунам, ки онҳо ба тасвири умумии ин ҷо чандон таъсир намерасонанд.
  2. Мо як хидмат(ҳо)-ро аз тасвири docker.elastic.co/logstash/logstash:6.3.2 эҷод мекунем ва онро logstash_one_channel номгузорӣ мекунем.
  3. Мо бандари 5046-ро дар дохили контейнер ба ҳамон бандари дохилӣ мефиристем.
  4. Мо файли конфигуратсияи қубури ./config/pipelines.yml-ро ба файли /usr/share/logstash/config/pipelines.yml дар дохили контейнер харита мекунем, ки дар он ҷо logstash онро гирифта, танҳо барои хондан месозад.
  5. Мо феҳристи ./config/pipelines-ро, ки дар он файлҳо бо танзимоти канал дорем, ба феҳристи /usr/share/logstash/config/pipelines ҷойгир мекунем ва инчунин онро танҳо барои хондан месозем.

Истифодаи амалии ELK. Насб кардани logstash

Файли Pipelines.yml

- pipeline.id: HABR
  pipeline.workers: 1
  pipeline.batch.size: 1
  path.config: "./config/pipelines/habr_pipeline.conf"

Як канал бо идентификатори HABR ва роҳ ба файли конфигуратсияи он дар ин ҷо тавсиф шудааст.

Ва ниҳоят файли "./config/pipelines/habr_pipeline.conf"

input {
  tcp {
    port => "5046"
   }
  }
filter {
  mutate {
    add_field => [ "habra_field", "Hello Habr" ]
    }
  }
output {
  stdout {
      
    }
  }

Биёед ҳоло ба тавсифи он дохил нашавем, биёед кӯшиш кунем, ки онро иҷро кунем:

docker-compose up

Мо чиро мебинем?

Контейнер оғоз ёфт. Мо метавонем кори онро тафтиш кунем:

echo '13123123123123123123123213123213' | nc localhost 5046

Ва мо посухро дар консоли контейнер мебинем:

Истифодаи амалии ELK. Насб кардани logstash

Аммо дар баробари ин мо низ мебинем:

logstash_one_channel | [2019-04-29T11:28:59,790][ХАТО][logstash.licensechecker.licensereader] Гирифтани маълумоти иҷозатнома аз сервери литсензия {:message=>“Elasticsearch дастрас нест: [http://elasticsearch:9200/][Manticore ::ResolutionFailure] elasticsearch", ...

logstash_one_channel | [2019-04-29T11:28:59,894][INFO][logstash.pipeline ] Қубур бомуваффақият оғоз шуд {:pipeline_id=>".monitoring-logstash", :thread=>"# "}

logstash_one_channel | [2019-04-29T11:28:59,988][INFO ][logstash.agent ] Қубурҳои коркунанда {:count=>2, :running_pipelines=>[:HABR, :".monitoring-logstash"], :non_running_pipelines=>[ ]}
logstash_one_channel | [2019-04-29T11:29:00,015][ХАТО][logstash.inputs.metrics] X-Pack дар Logstash насб шудааст, аммо на дар Elasticsearch. Лутфан, X-Pack-ро дар Elasticsearch насб кунед, то хусусияти мониторингро истифода баред. Дигар хусусиятҳо метавонанд дастрас бошанд.
logstash_one_channel | [2019-04-29T11:29:00,526][INFO ][logstash.agent ] Нуқтаи ниҳоии Logstash API бомуваффақият оғоз шуд {:port=>9600}
logstash_one_channel | [2019-04-29T11:29:04,478][INFO][logstash.outputs.elasticsearch] Санҷиши саломатӣ барои дидани кор кардани пайвасти Elasticsearch {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,487][ҲУШДОРЕД ][logstash.outputs.elasticsearch] Кӯшиш кард, ки пайвастшавиро бо намунаи мурдаи ES эҳё кунад, аммо хатогӣ гирифт. {:url=>“эластикиро ҷустуҷӯ кунед:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch дастнорас: [http://elasticsearch:9200/:][ManticoreF:] elasticsearch"}
logstash_one_channel | [2019-04-29T11:29:04,704][INFO][logstash.licensechecker.licensereader] Тафтиши саломатӣ барои дидани кор кардани пайвасти Elasticsearch {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,710][ҲУШДОРЕД ][logstash.licensechecker.licensereader] Кӯшиш кард, ки пайвастшавиро ба инстансияи мурдаи ES эҳё кунад, аммо хатогӣ гирифт. {:url=>“эластикиро ҷустуҷӯ кунед:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch дастнорас: [http://elasticsearch:9200/:][ManticoreF:] elasticsearch"}

Ва журнали мо ҳама вақт хазанда мешавад.

Дар ин ҷо ман бо ранги сабз паёмеро, ки қубур бомуваффақият ба кор даромадааст, бо ранги сурх хабари хато ва бо ранги зард паёмро дар бораи кӯшиши тамос таъкид кардам. эластикиро ҷустуҷӯ кунед: 9200.
Ин аз он сабаб рӯй медиҳад, ки logstash.conf, ки ба тасвир дохил карда шудааст, дорои санҷиши мавҷудияти elasticsearch мебошад. Дар ниҳоят, logstash чунин мешуморад, ки он ҳамчун як қисми стеки Elk кор мекунад, аммо мо онро ҷудо кардем.

Кор кардан мумкин аст, аммо ин қулай нест.

Ҳалли он аст, ки ин чек тавассути тағирёбандаи муҳити зист XPACK_MONITORING_ENABLED хомӯш карда шавад.

Биёед ба docker-compose.yml тағирот ворид кунем ва онро дубора иҷро кунем:

version: '3'

networks:
  elk:

volumes:
  elasticsearch:
    driver: local

services:

  logstash:
    container_name: logstash_one_channel
    image: docker.elastic.co/logstash/logstash:6.3.2
    networks:
      - elk
    environment:
      XPACK_MONITORING_ENABLED: "false"
    ports:
      - 5046:5046
   volumes:
      - ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
      - ./config/pipelines:/usr/share/logstash/config/pipelines:ro

Акнун, ҳама чиз хуб аст. Контейнер барои таҷрибаҳо омода аст.

Мо метавонем дар консоли оянда боз нависед:

echo '13123123123123123123123213123213' | nc localhost 5046

Ва бубинед:

logstash_one_channel | {
logstash_one_channel |         "message" => "13123123123123123123123213123213",
logstash_one_channel |      "@timestamp" => 2019-04-29T11:43:44.582Z,
logstash_one_channel |        "@version" => "1",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |            "host" => "gateway",
logstash_one_channel |            "port" => 49418
logstash_one_channel | }

Кор дар як канал

Ҳамин тавр мо оғоз кардем. Акнун шумо метавонед воқеан вақт ҷудо кунед, то худи logstash-ро танзим кунед. Биёед ҳоло ба файли pipelines.yml даст нарасонем, биёед бубинем, ки бо кор бо як канал чӣ ба даст оварда метавонем.

Ман бояд бигӯям, ки принсипи умумии кор бо файли конфигуратсияи канал дар дастури расмӣ дар ин ҷо хуб тавсиф шудааст дар ин ҷо
Агар шумо хоҳед, ки ба забони русӣ хонед, мо инро истифода мебарем мақола(аммо синтаксиси дархост дар он ҷо кӯҳна аст, мо бояд инро ба назар гирем).

Биёед аз бахши Вуруд пайдарпай равем. Мо аллакай кори TCP-ро дидаем. Дар ин ҷо боз чӣ ҷолиб буда метавонад?

Паёмҳоро бо истифода аз тапиши дил санҷед

Чунин як имконияти ҷолиб барои тавлиди паёмҳои санҷишии автоматӣ вуҷуд дорад.
Барои ин ба шумо лозим аст, ки плагини дилро дар бахши вуруд фаъол созед.

input {
  heartbeat {
    message => "HeartBeat!"
   }
  } 

Онро фурӯзон кунед, дар як дақиқа як маротиба қабул карданро оғоз кунед

logstash_one_channel | {
logstash_one_channel |      "@timestamp" => 2019-04-29T13:52:04.567Z,
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |         "message" => "HeartBeat!",
logstash_one_channel |        "@version" => "1",
logstash_one_channel |            "host" => "a0667e5c57ec"
logstash_one_channel | }

Агар мо хоҳем, ки зуд-зуд қабул кунем, мо бояд параметри фосиларо илова кунем.
Ҳамин тавр мо ҳар 10 сония паём мегирем.

input {
  heartbeat {
    message => "HeartBeat!"
    interval => 10
   }
  }

Гирифтани маълумот аз файл

Мо инчунин тасмим гирифтем, ки ҳолати файлро бубинем. Агар он бо файл хуб кор кунад, пас шояд ягон агент лозим набошад, ҳадди аққал барои истифодаи маҳаллӣ.

Тибқи тавсиф, режими корӣ бояд ба tail -f монанд бошад, яъне. сатрҳои навро мехонад ё ҳамчун вариант, тамоми файлро мехонад.

Пас он чизе ки мо мехоҳем ба даст орем:

  1. Мо мехоҳем сатрҳоеро қабул кунем, ки ба як файли сабт замима шудаанд.
  2. Мо мехоҳем маълумотеро, ки ба якчанд файлҳои сабт навишта шудааст, гирем ва дар ҳоле ки тавонем он чизеро, ки аз куҷо гирифта мешавад, ҷудо кунем.
  3. Мо мехоҳем боварӣ ҳосил кунем, ки вақте ки logstash аз нав оғоз мешавад, он ин маълумотро дигар қабул намекунад.
  4. Мо мехоҳем тафтиш кунем, ки агар logstash хомӯш карда шавад ва маълумот ба файлҳо навишта шавад, пас вақте ки мо онро иҷро мекунем, мо ин маълумотро мегирем.

Барои гузаронидани таҷриба, биёед ба docker-compose.yml сатри дигар илова кунем ва директорияеро, ки мо файлҳоро дар он ҷойгир мекунем, кушоем.

version: '3'

networks:
  elk:

volumes:
  elasticsearch:
    driver: local

services:

  logstash:
    container_name: logstash_one_channel
    image: docker.elastic.co/logstash/logstash:6.3.2
    networks:
      - elk
    environment:
      XPACK_MONITORING_ENABLED: "false"
    ports:
      - 5046:5046
   volumes:
      - ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
      - ./config/pipelines:/usr/share/logstash/config/pipelines:ro
      - ./logs:/usr/share/logstash/input

Ва қисмати вурудро дар habr_pipeline.conf тағир диҳед

input {
  file {
    path => "/usr/share/logstash/input/*.log"
   }
  }

Биёед оғоз кунем:

docker-compose up

Барои эҷод ва навиштани файлҳои журнал мо фармонро истифода мебарем:


echo '1' >> logs/number1.log

{
logstash_one_channel |            "host" => "ac2d4e3ef70f",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |      "@timestamp" => 2019-04-29T14:28:53.876Z,
logstash_one_channel |        "@version" => "1",
logstash_one_channel |         "message" => "1",
logstash_one_channel |            "path" => "/usr/share/logstash/input/number1.log"
logstash_one_channel | }

Бале, он кор мекунад!

Дар айни замон, мо мебинем, ки мо майдони роҳро ба таври худкор илова кардем. Ин маънои онро дорад, ки дар оянда мо метавонем сабтҳоро аз рӯи он филтр кунем.

Биёед бори дигар кӯшиш кунем:

echo '2' >> logs/number1.log

{
logstash_one_channel |            "host" => "ac2d4e3ef70f",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |      "@timestamp" => 2019-04-29T14:28:59.906Z,
logstash_one_channel |        "@version" => "1",
logstash_one_channel |         "message" => "2",
logstash_one_channel |            "path" => "/usr/share/logstash/input/number1.log"
logstash_one_channel | }

Ва акнун ба файли дигар:

 echo '1' >> logs/number2.log

{
logstash_one_channel |            "host" => "ac2d4e3ef70f",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |      "@timestamp" => 2019-04-29T14:29:26.061Z,
logstash_one_channel |        "@version" => "1",
logstash_one_channel |         "message" => "1",
logstash_one_channel |            "path" => "/usr/share/logstash/input/number2.log"
logstash_one_channel | }

Аҷоиб! Файл гирифта шуд, роҳ дуруст муайян карда шуд, ҳама чиз хуб аст.

Logstash-ро қатъ кунед ва аз нав оғоз кунед. Биёед интизор шавем. Хомуш. Онхое. Мо ин сабтҳоро дигар намегирем.

Ва ҳоло озмоиши далертарин.

Logstash-ро насб кунед ва иҷро кунед:

echo '3' >> logs/number2.log
echo '4' >> logs/number1.log

Logstash-ро дубора иҷро кунед ва бубинед:

logstash_one_channel | {
logstash_one_channel |            "host" => "ac2d4e3ef70f",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |         "message" => "3",
logstash_one_channel |        "@version" => "1",
logstash_one_channel |            "path" => "/usr/share/logstash/input/number2.log",
logstash_one_channel |      "@timestamp" => 2019-04-29T14:48:50.589Z
logstash_one_channel | }
logstash_one_channel | {
logstash_one_channel |            "host" => "ac2d4e3ef70f",
logstash_one_channel |     "habra_field" => "Hello Habr",
logstash_one_channel |         "message" => "4",
logstash_one_channel |        "@version" => "1",
logstash_one_channel |            "path" => "/usr/share/logstash/input/number1.log",
logstash_one_channel |      "@timestamp" => 2019-04-29T14:48:50.856Z
logstash_one_channel | }

Ура! Ҳама чиз гирифта шуд.

Аммо мо бояд шуморо дар бораи чизҳои зерин огоҳ кунем. Агар контейнери logstash нест карда шавад (docker stop logstash_one_channel && docker rm logstash_one_channel), пас ҳеҷ чиз гирифта намешавад. Мавқеи файле, ки то он хонда шудааст, дар дохили контейнер нигоҳ дошта мешуд. Агар шумо онро аз сифр иҷро кунед, он танҳо сатрҳои навро қабул мекунад.

Хондани файлҳои мавҷуда

Фарз мекунем, ки мо бори аввал logstash-ро оғоз мекунем, аммо мо аллакай гузоришҳо дорем ва мо мехоҳем онҳоро коркард кунем.
Агар мо logstash-ро бо бахши вурудоти дар боло истифодашуда иҷро кунем, мо ҳеҷ чиз ба даст намеорем. Танҳо хатҳои нав тавассути logstash коркард карда мешаванд.

Барои он ки сатрҳо аз файлҳои мавҷуда кашида шаванд, шумо бояд ба бахши вуруд хати иловагӣ илова кунед:

input {
  file {
    start_position => "beginning"
    path => "/usr/share/logstash/input/*.log"
   }
  }

Гузашта аз ин, як нозуки вуҷуд дорад: ин танҳо ба файлҳои нав таъсир мерасонад, ки logstash ҳанӯз надидааст. Барои ҳамон файлҳое, ки аллакай дар майдони назари logstash буданд, он аллакай андозаи онҳоро дар хотир дошт ва ҳоло танҳо дар онҳо сабтҳои нав мегирад.

Биёед дар ин ҷо таваққуф кунем ва қисмати вурудро омӯзем. Ҳанӯз имконоти зиёде мавҷуданд, аммо ин барои мо барои таҷрибаҳои минбаъда кофӣ аст.

Масир ва табдили маълумот

Биёед кӯшиш кунем, ки мушкилоти зеринро ҳал кунем, фарз мекунем, ки мо аз як канал паёмҳо дорем, баъзеи онҳо иттилоотӣ ва баъзе паёмҳои хатогӣ мебошанд. Онҳо аз рӯи тег фарқ мекунанд. Баъзеҳо INFO мебошанд, дигарон ХАТО.

Мо бояд онҳоро дар баромад ҷудо кунем. Онхое. Мо дар як канал паёмҳои иттилоотӣ менависем ва дар канали дигар.

Барои ин, аз бахши вуруд ба филтр ва баромад гузаред.

Бо истифода аз бахши филтр, мо паёми воридшударо таҳлил мекунем ва аз он хэш (ҷуфтҳои калид-арзиш) мегирем, ки мо аллакай бо он кор карда метавонем, яъне. мувофики шароит ба кисмхо чудо кунанд. Ва дар бахши баромад мо паёмҳоро интихоб мекунем ва ҳар якеро ба канали худ мефиристем.

Таҳлили паём бо grok

Барои таҳлили сатрҳои матнӣ ва гирифтани маҷмӯи майдонҳо аз онҳо, дар бахши филтр плагини махсус мавҷуд аст - grok.

Бе он ки дар назди худ мақсад гузоштам, ки тавсифи муфассали онро дар ин ҷо (барои ин ман ба он муроҷиат мекунам ҳуҷҷатҳои расмӣ), Ман мисоли оддии худро медиҳам.

Барои ин, шумо бояд дар бораи формати сатрҳои вуруд қарор қабул кунед. Ман онҳоро чунин дорам:

1 Паёми INFO1
2 Паёми ERROR2

Онхое. Аввал идентификатор меояд, баъд INFO/ERROR, баъд калимаи бе фосила меояд.
Ин мушкил нест, аммо барои фаҳмидани принсипи кор кофӣ аст.

Ҳамин тавр, дар бахши филтри плагини grok, мо бояд намунаи таҳлили сатрҳои худро муайян кунем.

Ин чунин хоҳад буд:

filter {
  grok {
    match => { "message" => ["%{INT:message_id} %{LOGLEVEL:message_type} %{WORD:message_text}"] }
   }
  } 

Аслан ин ифодаи муқаррарӣ аст. Намунаҳои тайёр истифода мешаванд, ба монанди INT, LOGLEVEL, WORD. Тавсифи онҳо, инчунин намунаҳои дигарро дар ин ҷо пайдо кардан мумкин аст дар ин ҷо

Акнун, аз ин филтр гузаштан, сатри мо ба хэш аз се майдон табдил меёбад: message_id, message_type, message_text.

Онҳо дар қисмати баромад нишон дода мешаванд.

Масири паёмҳо ба бахши баромад бо истифода аз фармони if

Дар бахши баромад, тавре ки мо дар ёд дорем, мо паёмҳоро ба ду ҷараён тақсим карданӣ будем. Баъзеҳо - ки iNFO мебошанд, ба консол бароварда мешаванд ва бо хатогиҳо мо ба файл мебарорем.

Чӣ тавр мо ин паёмҳоро ҷудо мекунем? Ҳолати мушкилот аллакай роҳи ҳалли худро пешниҳод мекунад - дар ниҳоят, мо аллакай майдони махсуси message_type дорем, ки танҳо ду арзишро гирифта метавонад: INFO ва ERROR. Маҳз дар ҳамин асос мо бо истифода аз изҳороти if интихоб мекунем.

if [message_type] == "ERROR" {
        # Здесь выводим в файл
       } else
     {
      # Здесь выводим в stdout
    }

Тавсифи кор бо майдонҳо ва операторҳоро дар ин бахш пайдо кардан мумкин аст дастури расмӣ.

Акнун, дар бораи худи хулосаи воқеӣ.

Натиҷаи консол, ҳама чиз дар ин ҷо равшан аст - stdout {}

Аммо баромад ба файл - дар хотир доред, ки мо ҳамаи инро аз як контейнер иҷро карда истодаем ва барои он ки файле, ки дар он натиҷа менависем, аз берун дастрас бошад, мо бояд ин директорияро дар docker-compose.yml кушоем.

Њамагї:

Қисми баромади файли мо чунин менамояд:


output {
  if [message_type] == "ERROR" {
    file {
          path => "/usr/share/logstash/output/test.log"
          codec => line { format => "custom format: %{message}"}
         }
    } else
     {stdout {
             }
     }
  }

Дар docker-compose.yml мо ҳаҷми дигарро барои баромад илова мекунем:

version: '3'

networks:
  elk:

volumes:
  elasticsearch:
    driver: local

services:

  logstash:
    container_name: logstash_one_channel
    image: docker.elastic.co/logstash/logstash:6.3.2
    networks:
      - elk
    environment:
      XPACK_MONITORING_ENABLED: "false"
    ports:
      - 5046:5046
   volumes:
      - ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
      - ./config/pipelines:/usr/share/logstash/config/pipelines:ro
      - ./logs:/usr/share/logstash/input
      - ./output:/usr/share/logstash/output

Мо онро ба кор меандозем, онро санҷида, тақсимро ба ду ҷараён мебинем.

Манбаъ: will.com

Илова Эзоҳ