Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Ro-ràdh

Fhad ‘s a bha sinn a’ cleachdadh siostam eile, bha sinn an aghaidh an fheum air àireamh mhòr de dhiofar logaichean a phròiseasadh. Chaidh ELK a thaghadh mar an ionnstramaid. Bruidhnidh an artaigil seo mun eòlas againn ann a bhith a’ stèidheachadh a’ chruach seo.

Chan eil sinn a 'suidheachadh amas airson cunntas a thoirt air a h-uile comas, ach tha sinn airson fòcas a chur air fuasgladh cheistean practaigeach. Tha seo air sgàth gu bheil tòrr dhuilgheadasan ann le tòrr sgrìobhainnean agus ìomhaighean deiseil, co-dhiù lorg sinn iad.

Chuir sinn an stac tro docker-compose. A bharrachd air an sin, bha docker-compose.yml air a dheagh sgrìobhadh a leig leinn an stac a thogail gun cha mhòr duilgheadas sam bith. Agus bha e coltach dhuinn gu robh buaidh mar-thà dlùth, a-nis togaidh sinn beagan e gus freagairt air na feumalachdan againn agus sin e.

Gu mì-fhortanach, cha do shoirbhich le oidhirp air an t-siostam a ghleusadh gus logaichean fhaighinn agus a phròiseasadh bhon tagradh againn dìreach far an ialtag. Mar sin, cho-dhùin sinn gum b 'fhiach sgrùdadh a dhèanamh air gach pàirt fa leth, agus an uair sin tilleadh gu na ceanglaichean aca.

Mar sin tòisichidh sinn le logstash.

Àrainneachd, cleachdadh, a 'ruith Logstash ann an container

Airson cleachdadh, 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 an ìomhaigh logstash a bh’ againn anns an docker-compose.yml tùsail againn docker.elastic.co/logstash/logstash:6.3.2

Cleachdaidh sinn e airson deuchainnean.

Gus logstash a ruith, sgrìobh sinn docker-compose.yml air leth. Gu dearbh, bha e comasach an ìomhaigh a chuir air bhog bhon loidhne-àithne, ach às deidh a h-uile càil, dh ’fhuasgail sinn gnìomh sònraichte, far a bheil a h-uile càil bho docker-compose air a chuir air bhog dhuinn.

Beagan mu fhaidhlichean rèiteachaidh

Mar a leanas bhon tuairisgeul, faodar logstash a ruith mar aon seanal, sa chùis seo, feumaidh e am faidhle *.conf a ghluasad no airson grunn shianalan, agus sa chùis sin feumaidh e am faidhle pipelines.yml a ghluasad, a tha, ann an tionndadh , bheir e iomradh air faidhlichean .conf airson gach sianal.
Ghabh sinn an dàrna slighe. Bha e coltach dhuinne nas ioma-chruthach agus scalable. Mar sin, chruthaich sinn pipelines.yml, agus rinn sinn eòlaire pìoban anns an cuir sinn faidhlichean .conf airson gach sianal.

Taobh a-staigh an t-soithich tha faidhle rèiteachaidh eile - logstash.yml. Cha bhith sinn a’ suathadh ris, bidh sinn ga chleachdadh mar a tha.

Mar sin is e structar an eòlaire againn:

Cleachdadh practaigeach ELK. A 'suidheachadh logstash

Aig an àm seo, tha sinn a’ gabhail ris gur e seo tcp air port 5046 gus dàta cuir a-steach fhaighinn, agus cleachdaidh sinn stdout airson toradh.

Seo rèiteachadh cho sìmplidh airson a 'chiad ruith. Leis gur e a’ chiad obair a chuir 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 leabhraichean a thoirt bhon docker-compose.yml tùsail (am fear far a bheil an stac gu lèir air a chuir air bhog) agus tha mi a 'smaoineachadh nach eil iad a' toirt buaidh mhòr air an dealbh iomlan an seo.
  2. Bidh sinn a’ cruthachadh aon seirbheis (seirbheisean) logstash, bhon ìomhaigh docker.elastic.co/logstash/logstash:6.3.2 agus thoir an t-ainm logstash_one_channel dha.
  3. Tha sinn a’ cur air adhart port 5046 taobh a-staigh an t-soithich, chun aon phort a-staigh.
  4. Bidh sinn a’ mapadh ar faidhle rèiteachaidh pìoba ./config/pipelines.yml chun fhaidhle /usr/share/logstash/config/pipelines.yml taobh a-staigh an t-soithich, far am bi logstash ga thogail agus ga dhèanamh ri leughadh a-mhàin, gun fhios nach bi.
  5. Bidh sinn a’ mapadh an eòlaire ./config/pipelines, far a bheil na faidhlichean rèiteachaidh pìoba againn, chun an eòlaire / usr/share/logstash/config/pipelines agus cuideachd ga dhèanamh ri leughadh a-mhàin.

Cleachdadh practaigeach ELK. A 'suidheachadh logstash

pìobaireachd.yml faidhle

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

Tha e a’ toirt cunntas air aon seanal leis an aithnichear HABR agus an t-slighe chun fhaidhle rèiteachaidh aige.

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

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

Cha tèid sinn a-steach don tuairisgeul aige airson a-nis, feuchaidh sinn ri ruith:

docker-compose up

Dè a chì sinn?

Tha an soitheach air tòiseachadh. Faodaidh sinn sgrùdadh a dhèanamh air an obair aige:

echo '13123123123123123123123213123213' | nc localhost 5046

Agus chì sinn am freagairt anns a’ chonsail container:

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 cead fhaighinn air ais bho fhrithealaiche a' cheadachais {:message=> "Elasticsearch do-ruigsinneach: [http://elasticsearch:9200/][Manticore ::ResolutionFailure]elasticsearch", ...

logstash_one_channel | [2019-04-29T11:28:59,894][INFO ][logstash.pipeline ] Thòisich an loidhne-phìoban 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 chuir a-steach air Logstash ach chan ann air Elasticsearch. Feuch an stàlaich thu X-Pack air Elasticsearch gus am feart sgrùdaidh a chleachdadh. Is dòcha 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::Toraidhean::ElasticSearch::HttpClient ::Pool ::HostUnreachableError, :error=> "Elasticsearch do-ruigsinneach: [http://elasticsearch:9200/][Manticore::ResolutionFailure] rannsachadh elastic"}
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::Toraidhean::ElasticSearch::HttpClient ::Pool ::HostUnreachableError, :error=> "Elasticsearch do-ruigsinneach: [http://elasticsearch:9200/][Manticore::ResolutionFailure] rannsachadh elastic"}

Agus bidh an log againn a 'fàs suas fad na h-ùine.

An seo chomharraich mi ann an uaine an teachdaireachd gun do thòisich an loidhne-phìoban gu soirbheachail, ann an dearg an teachdaireachd mhearachd agus ann am buidhe an teachdaireachd mu bhith a’ feuchainn ri fios a chuir lorg elastaig: 9200.
Tha seo a 'tachairt air sgàth' s gu bheil an logstash.conf a tha air a ghabhail a-steach san ìomhaigh, tha sgrùdadh ann airson cothrom air elasticsearch. Às deidh na h-uile, tha logstash a 'gabhail ris gu bheil e ag obair mar phàirt de chruach Elk, agus dhealaich sinn e.

Faodaidh tu obrachadh, ach chan eil e goireasach.

Is e am fuasgladh an t-seic seo a chur à comas tro chaochladair àrainneachd XPACK_MONITORING_ENABLED.

Dèanamaid atharrachadh gu docker-compose.yml agus ruith 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

A-nis, tha a h-uile dad gu math. Tha an soitheach deiseil airson deuchainnean.

Faodaidh sinn a bhith a’ taipeadh a-rithist sa chonsail ri thaobh:

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

Obraich taobh a-staigh aon sianal

Mar sin, thòisich sinn. A-nis faodaidh tu an ùine a ghabhail airson logstash a rèiteachadh gu dìreach. Nach suathadh sinn am faidhle pipelines.yml airson a-nis, chì sinn dè a gheibh sinn le bhith ag obair le aon seanal.

Feumaidh mi a ràdh gu bheil am prionnsapal coitcheann a bhith ag obair le faidhle rèiteachaidh an t-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-theacs na ceiste sean an sin, feumaidh tu seo a thoirt fa-near).

Rachamaid ann an sreath bhon roinn Input. Tha sinn mu thràth air an obair air tcp fhaicinn. Dè eile a dh'fhaodas a bhith inntinneach an seo?

Dèan deuchainn air teachdaireachdan a’ cleachdadh buille cridhe

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

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

Bidh sinn ga tionndadh, bidh sinn a 'tòiseachadh a' faighinn 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 | }

Tha sinn airson faighinn nas trice, feumaidh sinn am paramadair eadar-ama a chuir ris.
Seo mar a gheibh sinn teachdaireachd a h-uile 10 diog.

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

A 'faighinn dàta bho fhaidhle

Cho-dhùin sinn cuideachd coimhead air modh an fhaidhle. Ma dh ’obraicheas e gu math leis an fhaidhle, tha e comasach nach eil feum air àidseant, uill, co-dhiù airson cleachdadh ionadail.

A rèir an tuairisgeul, bu chòir am modh obrachaidh a bhith coltach ri earball -f, i.e. a’ leughadh loidhnichean ùra no, gu roghnach, a’ leughadh am faidhle gu lèir.

Mar sin na tha sinn airson faighinn:

  1. Tha sinn airson loidhnichean fhaighinn a tha ceangailte ri aon fhaidhle log.
  2. Tha sinn airson dàta fhaighinn a tha sgrìobhte gu grunn fhaidhlichean log, agus sinn comasach air na chaidh fhaighinn a sgaradh bho càite.
  3. Tha sinn airson dèanamh cinnteach nuair a thèid logstash ath-thòiseachadh, nach fhaigh e an dàta seo tuilleadh.
  4. Tha sinn airson dèanamh cinnteach ma tha logstash ciorramach, agus ma tha dàta fhathast air a sgrìobhadh gu faidhlichean, an uairsin nuair a bhios sinn ga ruith, gheibh sinn an dàta seo.

Gus an deuchainn a dhèanamh, leig dhuinn loidhne eile a chuir 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 atharraich an roinn cuir a-steach ann an habr_pipeline.conf

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

Tòisichidh sinn:

docker-compose up

Gus faidhlichean log 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 | }

Tha, tha e ag obair!

Aig an aon àm, chì sinn gu bheil sinn air an raon slighe a chuir ris gu fèin-ghluasadach. Mar sin san àm ri teachd, bidh e comasach dhuinn clàran a shìoladh leis.

Feuch 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 gu 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 gu math.

Stad logstash agus ath-thòiseachadh. Fuirichidh sinn. Sàmhchair. An fheadhainn sin. Chan fhaigh sinn na clàran seo tuilleadh.

Agus a-nis an deuchainn as dàna.

Cuiridh sinn logstash agus cuiridh sinn an gnìomh:

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

Ruith logstash a-rithist agus faic:

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

Hooray! Chaidh a h-uile càil a thogail.

Ach, feumar rabhadh a thoirt mu na leanas. Ma thèid an soitheach logstash a thoirt air falbh (stad docker logstash_one_channel && docker rm logstash_one_channel), cha tèid dad a thogail. Bha suidheachadh an fhaidhle suas chun an deach a leughadh air a stòradh taobh a-staigh an t-soithich. Ma thòisicheas tu bhon fhìor thoiseach, cha ghabh e ach ri loidhnichean ùra.

Leughadh faidhlichean a tha ann mar-thà

Canaidh sinn gu bheil sinn a’ ruith logstash airson a’ chiad uair, ach tha logaichean againn mu thràth agus bu mhath leinn an làimhseachadh.
Ma ruitheas sinn logstash leis an earrann cuir a-steach a chleachd sinn gu h-àrd, chan fhaigh sinn dad. Cha tèid ach loidhnichean ùra a phròiseasadh le logstash.

Gus loidhnichean a tharraing bho na faidhlichean a th’ ann mar-thà, cuir loidhne a bharrachd ris an roinn cuir a-steach:

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

A bharrachd air an sin, tha nuance ann, chan eil seo a’ toirt buaidh ach air faidhlichean ùra nach fhaca logstash fhathast. Airson na h-aon fhaidhlichean a bha mar-thà ann an raon sealladh logstash, tha e air cuimhne a chumail air am meud agus a-nis cha toir e ach clàran ùra annta.

Nach stad sinn air seo le bhith a’ sgrùdadh an earrann cuir a-steach. Tha tòrr a bharrachd roghainnean ann, ach airson a-nis, tha gu leòr againn airson tuilleadh dheuchainnean.

Routing agus cruth-atharrachadh dàta

Feuchaidh sinn ri fuasgladh fhaighinn air an duilgheadas a leanas, canaidh sinn gu bheil teachdaireachdan againn bho aon seanal, tha cuid dhiubh fiosrachail, agus tha cuid dhiubh nan teachdaireachdan mearachd. Tha iad eadar-dhealaichte ann an tagaichean. Tha cuid dhiubh INFO, cuid eile MEARACHD.

Feumaidh sinn an sgaradh aig an t-slighe a-mach. An fheadhainn sin. Bidh sinn a’ sgrìobhadh teachdaireachdan fiosrachaidh ann an aon seanail, agus teachdaireachdan mearachd ann an seanail eile.

Gus seo a dhèanamh, rachaibh bhon roinn cuir a-steach gu criathrag agus toradh.

A’ cleachdadh na h-earrainn sìoltachain, rannsaichidh sinn an teachdaireachd a tha a’ tighinn a-steach, a’ faighinn hash (paidhrichean prìomh luach) bhuaithe, leis an urrainn dhuinn obrachadh mar-thà, i.e. parsadh a rèir nan suidheachaidhean. Agus anns an roinn toraidh, taghaidh sinn teachdaireachdan agus cuiridh sinn gach fear chun t-seanail aige fhèin.

A' parsadh teachdaireachd le grok

Gus teudan teacsa a pharsadh agus seata de raointean fhaighinn bhuapa, tha plugan sònraichte anns an roinn sìoltachain - grok.

Gun a bhith a’ suidheachadh an amas dhomh cunntas mionaideach a thoirt air an seo (airson seo tha mi a’ toirt iomradh sgrìobhainnean oifigeil), Bheir mi mo eisimpleir shìmplidh.

Gus seo a dhèanamh, feumaidh tu co-dhùnadh a dhèanamh air cruth nan loidhnichean cuir a-steach. Tha iad agam mar seo:

1 teachdaireachd INFO1
2 MEARACHD teachdaireachd2

An fheadhainn sin. Comharraiche an toiseach, an uairsin INFO/ERROR, an uairsin facal gun bheàrn.
Chan eil e doirbh, ach gu leòr airson tuigsinn prionnsabal obrachadh.

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

Seallaidh e mar seo:

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

Gu bunaiteach, is e abairt àbhaisteach a th’ ann. Thathas a’ cleachdadh phàtranan deiseil, leithid INT, LOGLEVEL, WORD. Chithear an tuairisgeul 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.

Bidh iad air an taisbeanadh anns an roinn toraidh.

A’ seòladh teachdaireachdan anns an roinn toraidh leis an àithne if

Anns an earrann toraidh, mar a tha sinn a 'cuimhneachadh, bha sinn a' dol a roinn na teachdaireachdan gu dà shruth. Cuid - a tha ann an iNFO, cuiridh sinn a-mach chun consol, agus le mearachdan, cuiridh sinn a-mach gu faidhle.

Ciamar as urrainn dhuinn na teachdaireachdan sin a cho-roinn? Tha suidheachadh na duilgheadas mu thràth a’ moladh fuasgladh - às deidh a h-uile càil, tha raon teachdaireachd_type sònraichte againn mu thràth, nach urrainn ach dà luach INFO agus ERROR a ghabhail. Is ann air an sin a nì sinn roghainn a’ cleachdadh an aithris if.

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

Gheibhear tuairisgeul air an obair le raointean agus gnìomhaichean anns an earrainn seo leabhar-làimhe oifigeil.

A-nis, mun cho-dhùnadh fhèin.

Toradh tòcan, tha a h-uile dad soilleir an seo - stdout {}

Ach an toradh don fhaidhle - cuimhnich gu bheil sinn a ’ruith seo uile bhon ghobhar agus gus am bi am faidhle anns a bheil sinn a’ sgrìobhadh an toradh ruigsinneach bhon taobh a-muigh, feumaidh sinn an eòlaire seo fhosgladh ann an docker-compose.yml.

Iomlan:

Tha an earrann toraidh den fhaidhle againn a’ coimhead mar seo:


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

Cuir aon leabhar 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 a 'tòiseachadh, bidh sinn a' feuchainn, chì sinn an sgaradh ann an dà shruth.

Source: www.habr.com

Cuir beachd ann