Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Ro-rĂ dh

Nuair a bha sinn a’ cur an siostam as ùire againn an sàs, thàinig oirnn a bhith feumach air àireamh mhòr de logaichean eadar-dhealaichte a phròiseasadh. Thagh sinn ELK mar an inneal. Bruidhnidh an t-artaigil seo air an eòlas againn a’ rèiteachadh a’ chruach seo.

Chan eil sinn ag amas air a h-uile comas a mhìneachadh, ach an àite sin bidh sinn a’ cur fòcas air fuasgladh fhaighinn air duilgheadasan practaigeach. Tha seo air sgàth, a dh’aindeoin an sgrìobhainneachd mhòir agus na h-ìomhaighean deiseil, gu bheil mòran chnapan-starra ann – co-dhiù, tha sinn air an lorg.

Chuir sinn an cruach an gnĂŹomh le Docker-compose. A bharrachd air sin, bha faidhle Docker-compose.yml againn a bha sgrĂŹobhte gu math, a leig leinn an cruach a chleachdadh gun duilgheadas sam bith. Agus bha sinn den bheachd gu robh sinn faisg air buaidh; dĂŹreach beagan atharrachaidhean gus freagairt air na feumalachdan againn, agus sin agad e.

Gu mì-fhortanach, cha do shoirbhich leis a’ chiad oidhirp againn an siostam a leasachadh gus logaichean fhaighinn agus a phròiseasadh bhon aplacaid againn. Mar sin, chuir sinn romhainn sgrùdadh a dhèanamh air gach pàirt air leth agus an uairsin tilleadh chun na ceanglaichean aca.

Mar sin, tòisichidh sinn le logstash.

Àrainneachd, cleachdadh, agus ruith Logstash ann an soitheach

Airson an cur an gnìomh, bidh sinn a’ cleachdadh docker-compose; chaidh na deuchainnean a tha air am mìneachadh an seo a dhèanamh air MacOS agus Ubuntu 18.0.4.

Is e docker.elastic.co/logstash/logstash:6.3.2 an Ïomhaigh logstash a chaidh a shònrachadh san docker-compose.yml thÚsail againn.

Cleachdaidh sinn e airson deuchainnean.

Gus Logstash a chur air bhog, sgrìobh sinn docker-compose.yml air leth. Gu dearbh, dh’ fhaodadh sinn an ìomhaigh a ruith bhon loidhne-àithne, ach bha sinn a’ fuasgladh duilgheadas sònraichte far a bheil a h-uile càil a’ ruith bho Docker-compose.

Goirid mu fhaidhlichean rèiteachaidh

Mar a tha an tuairisgeul ag ràdh, faodar logstash a ruith airson aon seanail, agus ma tha sin fìor feumar faidhle *.conf a thoirt dha, no airson iomadh seanail, agus ma tha sin fìor feumar faidhle pipelines.yml a thoirt dha, a bhios an uair sin a’ toirt iomradh air na faidhlichean .conf airson gach seanail.
Chaidh sinn leis an dàrna dòigh-obrach. Bha e coltach ri bhith nas uile-choitcheann agus nas sÚbailte. Mar sin, chruthaich sinn faidhle pipelines.yml agus eòlaire pipelines far an stòraich sinn na faidhlichean .conf airson gach seanail.

Tha faidhle rèiteachaidh eile taobh a-staigh a’ chontaineir—logstash.yml. Fàgaidh sinn e leis fhèin agus cleachdaidh sinn e mar a tha e.

Mar sin, structar ar clĂ ran-stiĂširidh:

Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Airson a-nis, gus dàta cuir-a-steach fhaighinn, gabhaidh sinn ris gur e TCP a th’ ann air port 5046, agus airson toradh cleachdaidh sinn stdout.

Seo rèiteachadh sìmplidh airson a’ chiad chur air bhog. Às dèidh a h-uile càil, ’s e a’ chiad obair a chur air bhog.

Mar sin, tha an docker-compose.yml seo againn.

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

Dè a chÏ sinn an seo?

  1. Chaidh lìonraidhean agus tomhas-lìonaidh a thoirt bhon docker-compose.yml thùsail (am fear far a bheil an cruach gu lèir air a chur air bhog) agus chan eil mi a’ smaoineachadh gu bheil mòran buaidh aca air an dealbh iomlan.
  2. Cruthaichidh sinn aon sheirbheis logstash bhon ĂŹomhaigh docker.elastic.co/logstash/logstash:6.3.2 agus bheir sinn logstash_one_channel mar ainm oirre.
  3. Bidh sinn a’ cur port 5046 air adhart taobh a-staigh a’ chontaineir, chun aon phort a-staigh.
  4. Bidh sinn a’ mapadh ar faidhle rèiteachaidh loidhne-phìoban ./config/pipelines.yml chun fhaidhle /usr/share/logstash/config/pipelines.yml taobh a-staigh a’ chontaineir, far an tog logstash e, agus ga dhèanamh ri leughadh a-mhàin, air eagal ’s gum bi.
  5. Bidh sinn a’ mapadh an eòlaire ./config/pipelines, far a bheil sinn a’ stòradh faidhlichean rèiteachaidh an t-seanail, chun eòlaire /usr/share/logstash/config/pipelines agus ga dhèanamh ri leughadh a-mhàin cuideachd.

Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Am faidhle pipelines.yml

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

An seo tha aon seanail leis an aithnichear HABR agus an t-slighe chun fhaidhle rèiteachaidh aige air a mhÏneachadh.

Agus mu dheireadh, am faidhle "./config/pipelines/habr_pipeline.conf"

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

Na tèid sinn a-steach don tuairisgeul aige an-dràsta, feuchaidh sinn ri ruith:

docker-compose up

Dè a chÏ sinn?

Tha an soitheach air tòiseachadh. Is urrainn dhuinn deuchainn a dhèanamh air mar a tha e ag obair:

echo '13123123123123123123123213123213' | nc localhost 5046

Agus chì sinn am freagairt ann an consol a’ chontaineir:

Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Ach aig an aon Ă m, chĂŹ sinn cuideachd:

logstash_one_channel | [2019-04-29T11:28:59,790][ERROR][logstash.licensechecker.licensereader] Cha ghabh fiosrachadh ceadachais fhaighinn bhon fhrithealaiche ceadachais {:message=>“Elasticsearch Gun Ruigsinneachd: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch”, ...

logstash_one_channel | [2019-04-29T11:28:59,894][INFO ][logstash.pipeline] Thòisich am pÏob-loidhne gu soirbheachail {:pipeline_id=>".monitoring-logstash", :thread=>"# }

logstash_one_channel | [2019-04-29T11:28:59,988][INFO ][logstash.agent] Pìoban a’ ruith {:count=>2, :running_pipelines=>[:HABR, :".monitoring-logstash"], :non_running_pipelines=>[]}
logstash_one_channel | [2019-04-29T11:29:00,015][ERROR][logstash.inputs.metrics] Tha X-Pack air a stàladh air Logstash ach chan ann air Elasticsearch. Feumaidh tu X-Pack a stàladh air Elasticsearch gus am feart sgrùdaidh a chleachdadh. Dh’fhaodadh gum bi feartan eile rim faighinn.
logstash_one_channel | [2019-04-29T11:29:00,526][INFO ][logstash.agent ] Thòisich sinn gu soirbheachail aig ceann-uidhe API Logstash {:port=>9600}
logstash_one_channel | [2019-04-29T11:29:04,478][INFO ][logstash.outputs.elasticsearch] A’ ruith sgrùdadh slàinte gus faicinn a bheil ceangal Elasticsearch ag obair {:healthcheck_url=>http://elasticsearch:9200/, :path=>"/"}
logstash_one_channel | [2019-04-29T11:29:04,487][WARN ][logstash.outputs.elasticsearch] Dh’fheuch mi ri ceangal ri eisimpleir ES marbh ath-bheothachadh, ach fhuair mi mearachd. {:url=>“lorg elastaig:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Chan eil Elasticsearch ri ruigsinn: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch"}
logstash_one_channel | [2019-04-29T11:29:04,704][INFO ][logstash.licensechecker.licensereader] A’ ruith sgrùdadh slàinte gus faicinn a bheil ceangal Elasticsearch ag obair {:healthcheck_url=>http://elasticsearch:9200/, :path=>"/"}
logstash_one_channel | [2019-04-29T11:29:04,710][WARN ][logstash.licensechecker.licensereader] Dh’fheuch mi ri ceangal ri eisimpleir ES marbh ath-bheothachadh, ach fhuair mi mearachd. {:url=>“lorg elastaig:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Chan eil Elasticsearch ri ruigsinn: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch"}

Agus tha an clàr againn a’ sìor dhol am meud.

An seo, tha mi air an teachdaireachd a chomharrachadh ann an uaine gun do thòisich am pÏob-loidhne gu soirbheachail, an teachdaireachd mearachd ann an dearg agus an teachdaireachd mu oidhirp air fios a chuir gu buidhe. lorg elastaig: 9200.
Tha seo a’ tachairt leis gu bheil sgrùdadh ann airson ruigsinneachd elasticsearch anns an fhaidhle logstash.conf a tha san ìomhaigh. Às dèidh a h-uile càil, tha logstash a’ gabhail ris gu bheil e a’ ruith mar phàirt de chruach Elk, a tha sinn air a sgaradh.

Tha e comasach obrachadh, ach chan eil e goireasach.

Is e am fuasgladh an sgrùdadh seo a dhì-cheadachadh tron ​​chaochladair àrainneachd XPACK_MONITORING_ENABLED.

Dèanamaid atharrachadh air docker-compose.yml agus ruithidh sinn a-rithist e:

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

Tha a h-uile rud ceart gu leòr a-nis. Tha an soitheach deiseil airson deuchainnean.

Is urrainn dhuinn taipeadh a-rithist san ath chonsĂłl:

echo '13123123123123123123123213123213' | nc localhost 5046

Agus faic:

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 | }

Ag obair taobh a-staigh aon sianal

Mar sin, tha sinn deiseil. A-nis is urrainn dhuinn beagan ùine a chaitheamh a’ rèiteachadh Logstash fhèin. Fàgaidh sinn am faidhle pipelines.yml leis fhèin an-dràsta; chì sinn dè as urrainn dhuinn a choileanadh le aon phìob-loidhne.

Bu chòir a ràdh gu bheil am prionnsapal coitcheann airson a bhith ag obair leis an fhaidhle rèiteachaidh seanail air a mhÏneachadh gu math anns an leabhar-làimhe oifigeil, an seo an seo
Ma tha thu airson leughadh ann an Ruisis, chleachd sinn am fear seo artaigil(ach tha co-chàradh a’ cheiste an sin sean, feumar seo a thoirt fa-near).

Gluaisidh sinn air adhart bhon earrann Cuir-a-steach ann an òrdugh. Tha sinn air faicinn mar a tha TCP ag obair mu thràth. Dè eile a dh’ fhaodadh a bhith inntinneach an seo?

Teachdaireachdan deuchainn a’ cleachdadh buille cridhe

Tha feart inntinneach ann airson teachdaireachdan deuchainn fèin-ghluasadach a ghineadh.
Gus seo a dhèanamh, feumaidh tu am plugan heartbean a thoirt a-steach don earrann cuir a-steach.

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

Bidh sinn ga thionndadh air agus a’ tòiseachadh ga fhaighinn aon uair sa mhionaid.

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 | }

Ma tha sinn airson faighinn nas trice, feumaidh sinn am paramadair eadar-ama a chur ris.
San dòigh seo gheibh sinn teachdaireachd a h-uile 10 diogan.

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

A’ faighinn dàta bho fhaidhle

Cho-dhùin sinn cuideachd sùil a thoirt air modh nam faidhlichean. Ma dh’obraicheas e gu ceart le faidhlichean, is dòcha nach bi feum air riochdaire sam bith, co-dhiù airson cleachdadh ionadail.

A rèir an tuairisgeul, bu chòir don mhodh obrachaidh a bhith coltach ri tail -f, i.e. bidh e a’ leughadh loidhnichean ùra no, mar roghainn, a’ leughadh am faidhle gu lèir.

Mar sin, na tha sinn airson fhaighinn:

  1. Tha sinn airson loidhnichean fhaighinn a tha ceangailte ri aon fhaidhle loga.
  2. Tha sinn airson dàta fhaighinn a tha sgrÏobhte gu grunn fhaidhlichean loga, agus aig an aon àm a bhith comasach air sgaradh a dhèanamh eadar na fhuaireadh agus càite.
  3. Tha sinn airson dearbhadh nach fhaigh logstash an dàta seo a-rithist nuair a thèid ath-thòiseachadh.
  4. Tha sinn airson dèanamh cinnteach ma tha Logstash à comas, ach ma tha dàta fhathast ga sgrÏobhadh gu faidhlichean, gum faigh sinn an dàta seo nuair a thòisicheas sinn e.

Gus an deuchainn a dhèanamh, cuir sinn loidhne eile ri docker-compose.yml, a’ fosgladh an eòlaire far an do chuir sinn na faidhlichean.

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

Agus atharraicheamaid an earrann cuir-a-steach ann an habr_pipeline.conf

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

Cuiridh sinn air bhog:

docker-compose up

Gus faidhlichean loga a chruthachadh agus a sgrĂŹobhadh, cleachdaidh sinn an Ă ithne:


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 | }

Seadh, tha e ag obair!

Chì sinn cuideachd gun deach an raon slighe a chur ris gu fèin-ghluasadach. Tha seo a’ ciallachadh gum bi e comasach dhuinn clàran a shìoladh leis san àm ri teachd.

Feuchaidh sinn a-rithist:

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 | }

Agus a-nis ann am faidhle eile:

 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 | }

Sgoinneil! Chaidh am faidhle a thogail, chaidh an t-slighe a shònrachadh gu ceart, tha a h-uile dad ceart gu leòr.

Stadamaid logstash agus tòisichidh sinn a-rithist e. Fuirichidh sinn. Sàmhchair. 'S e sin, chan fhaigh sinn na clàran seo a-rithist.

Agus a-nis an deuchainn as dĂ na.

StĂ laich logstash agus ruith:

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

Ruithidh sinn logstash a-rithist agus chĂŹ sinn:

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 | }

Hurra! Chaidh a h-uile cĂ il a thogail.

Ach, bu chòir dhomh rabhadh a thoirt dhut mun leanas. Ma thèid an soitheach Logstash a dhubhadh às (docker stop logstash_one_channel && docker rm logstash_one_channel), cha tèid dad a thogail. Chaidh an suidheachadh faidhle far an deach a leughadh a shàbhaladh taobh a-staigh an t-soithich. Ma thòisicheas tu e bhon fhÏor thoiseach, cha ghabh e ach loidhnichean Úra.

A’ leughadh fhaidhlichean a tha ann mar-thà

Abair gu bheil sinn a’ ruith logstash airson a’ chiad uair, ach gu bheil logaichean againn mu thràth agus bu mhath leinn an giullachd.
Ma ruitheas sinn logstash leis an aon earrann cuir-a-steach a chleachd sinn gu h-àrd, cha gheibh sinn dad. Cha tèid ach loidhnichean Úra a phròiseasadh le logstash.

Gus loidhnichean a tharraing bho fhaidhlichean a tha ann mar-thà, bu chòir dhut loidhne a bharrachd a chur ris an earrann cuir-a-steach:

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

Tha rabhadh ann: chan eil seo a’ buntainn ach ri faidhlichean ùra nach fhaca Logstash fhathast. Airson faidhlichean a chunnaic Logstash mu thràth, tha e a’ cuimhneachadh am meud mu thràth agus cha ghabh e a-steach ach clàran ùra annta a-nis.

Stadamaid an seo agus sgrÚdamaid an earrann cuir-a-steach. Tha mòran roghainnean eile ann, ach an-dràsta, tha seo gu leòr airson tuilleadh deuchainneachd.

Slighe dĂ ta agus cruth-atharrachadh

Feuchaidh sinn ri fuasgladh fhaighinn air an duilgheadas a leanas. Abair gu bheil teachdaireachdan againn a’ tighinn bho aon seanail, cuid dhiubh fiosrachaidh, agus cuid eile teachdaireachdan mearachd. Tha iad air an comharrachadh leis na tagaichean aca. Tha cuid dhiubh INFO, cuid eile ERROR.

Feumaidh sinn an sgaradh aig an toradh. ’S e sin, bidh sinn a’ sgrìobhadh teachdaireachdan fiosrachaidh gu aon seanail, agus teachdaireachdan mearachd gu seanail eile.

Gus seo a dhèanamh, gluaisidh sinn bhon roinn cuir-a-steach chun an sÏoltachain agus an toraidh.

A’ cleachdadh an earrainn sìoltachain, nì sinn mion-sgrùdadh air an teachdaireachd a tha a’ tighinn a-steach, a’ toirt a-mach a hash (paidhrichean luach-iuchair) gus an urrainn dhuinn a phròiseasadh, i.e., a mion-sgrùdadh a rèir ar cumhaichean. Agus san earrainn toraidh, taghaidh sinn teachdaireachdan agus cuiridh sinn gach fear chun t-sianal aige fhèin.

A’ parsadh teachdaireachd le grok

Gus sreangan teacsa a pharsadh agus seata de raointean fhaighinn bhuapa, tha plugan sònraichte aig an earrann sÏoltachain - grok.

Chan e mo rùn cunntas mionaideach a thoirt air an seo (airson seo tha mi a’ toirt iomradh air sgrìobhainnean oifigeil), bheir mi eisimpleir sìmplidh dhomh.

Gus seo a dhèanamh, feumaidh tu co-dhÚnadh dè an cruth a bhios air na sreangan cuir-a-steach. Seo mar a tha na sreangan agamsa:

1 teachdaireachd fiosrachaidh1
2 Teachdaireachd MEARACHD2

’S e sin, thig an comharraiche an toiseach, an uairsin INFO/ERROR, agus an uairsin facal air choreigin gun bheàrnan.
Chan eil e iom-fhillte, ach tha e gu leòr airson prionnsabal an obrachaidh a thuigsinn.

Mar sin, anns an earrann sìoltachain, anns a’ plugan grok, feumaidh sinn pàtran a mhìneachadh airson ar sreangan a pharsadh.

Bidh e coltach ri seo:

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

Gu bunaiteach, ’s e abairt cunbhalach a th’ ann. Bidh e a’ cleachdadh phàtranan deiseil leithid INT, LOGLEVEL, agus WORD. Gheibhear na tuairisgeulan aca, a bharrachd air pàtrain eile, an seo. an seo

A-nis, a’ dol tron ​​chriathrag seo, tionndaidhidh an sreang againn gu hash de thrì raointean: message_id, message_type, message_text.

Is iad sin na faidhlichean a thèid a thaisbeanadh anns an earrann toraidh.

A’ stiùireadh teachdaireachdan san earrann toraidh a’ cleachdadh an àithne ma

Anns an earrann toraidh, mar a chuimhnicheas sinn, bha sinn gu bhith a’ roinn nan teachdaireachdan ann an dà shruth. Thèid an fheadhainn anns a bheil iNFO a chur a-mach chun chonsail, agus thèid an fheadhainn anns a bheil mearachdan a chur a-mach gu faidhle.

Ciamar a sgaras sinn na teachdaireachdan seo? Tha an aithris duilgheadas mu thràth a’ moladh fuasgladh—tha raon sònraichte againn mu thràth airson message_type, nach gabh ach dà luach: INFO agus ERROR. Cleachdaidh sinn an raon seo gus an roghainn a dhèanamh a’ cleachdadh an aithris if.

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

Gheibhear tuairisgeul air mar a dh’obraicheas tu le raointean agus gnìomhaichean san earrann seo. leabhar-làimhe oifigeil.

A-nis, mu dheidhinn a’ cho-dhùnaidh fhèin.

Toradh console, tha a h-uile dad soilleir an seo - stdout {}

A thaobh toradh gu faidhle, cuimhnich gu bheil sinn a’ ruith seo uile bho shoitheach, agus gus dèanamh cinnteach gu bheil am faidhle dhan sgrìobh sinn an toradh ruigsinneach bhon taobh a-muigh, feumaidh sinn an eòlaire seo fhosgladh ann an docker-compose.yml.

Iomlan:

Tha earrann toraidh ar faidhle coltach ri seo:


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

Cuir tomhas-lĂŹonaidh eile ri docker-compose.yml airson toradh:

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

Bidh sinn ga chur air bhog, ga fheuchainn, agus a’ faicinn roinneadh ann an dà shruth.

Source: www.habr.com

Cuir beachd ann