Cur i bhfeidhm praiticiúil ELK. Logstash a shocrú

Réamhrá

Agus córas eile á chur i bhfeidhm againn, bhí orainn líon mór logaí éagsúla a phróiseáil. Roghnaíodh ELK mar an uirlis. Pléifidh an t-alt seo ár dtaithí maidir leis an gcruach seo a bhunú.

Ní shocraímid sprioc chun cur síos a dhéanamh ar a chumais uile, ach ba mhaith linn díriú go sonrach ar fhadhbanna praiticiúla a réiteach. Tá sé seo mar gheall ar an bhfíric, cé go bhfuil méid measartha mór doiciméadú agus íomhánna réamhdhéanta ann, go bhfuil go leor deacrachtaí ann, ar a laghad fuaireamar iad.

D'imscaramar an chruach trí dhugadóir. Thairis sin, bhí docker-compose.yml dea-scríofa againn, rud a thug deis dúinn an stack a ardú beagnach gan fadhbanna. Agus ba chosúil dúinne go raibh an bua gar cheana féin, anois déanfaimid é a mhionathrú chun freastal ar ár riachtanais agus sin é.

Ar an drochuair, níor éirigh láithreach leis an iarracht an córas a chumrú chun logaí a fháil agus a phróiseáil ónár bhfeidhmchlár. Dá bhrí sin, shocraigh muid gur fiú staidéar a dhéanamh ar gach comhpháirt ar leithligh, agus ansin filleadh ar a naisc.

Mar sin, thosaigh muid le logstash.

Comhshaol, imscaradh, ag rith Logstash i gcoimeádán

Le haghaidh imscaradh bainimid úsáid as docker-compose; rinneadh na turgnaimh a bhfuil cur síos orthu anseo ar MacOS agus Ubuntu 18.0.4.

Is é an íomhá logstash a cláraíodh inár docker-compose.yml bunaidh ná docker.elastic.co/logstash/logstash:6.3.2

Úsáidfimid é le haghaidh turgnaimh.

Scríobhamar docker-compose.yml ar leith chun logstash a rith. Ar ndóigh, bhíothas in ann an íomhá a sheoladh ón líne ordaithe, ach bhíomar ag réiteach fadhb shonrach, áit a ndéanaimid gach rud ó docker-compose.

Go hachomair faoi chomhaid cumraíochta

Mar seo a leanas ón gcur síos, is féidir logstash a reáchtáil le haghaidh cainéal amháin, agus sa chás sin caithfidh sé pas a fháil sa chomhad *.conf, nó le haghaidh roinnt bealaí, agus sa chás sin caithfidh sé pas a fháil sa chomhad píblínte.yml, a bheidh, ina dhiaidh sin. , nascfaidh sé leis na comhaid .conf do gach cainéal.
Thógamar an dara cosán. Dhealraigh sé dúinn níos uilíoch agus Inscálaithe. Mar sin, chruthaigh muid pipelines.yml, agus rinneamar eolaire píblínte ina gcuirfimid comhaid .conf do gach cainéal.

Taobh istigh den choimeádán tá comhad cumraíochta eile - logstash.yml. Ní dhéanaimid teagmháil leis, úsáidimid é mar atá.

Mar sin, ár struchtúr eolaire:

Cur i bhfeidhm praiticiúil ELK. Logstash a shocrú

Chun sonraí ionchuir a fháil, glacaimid leis faoi láthair gurb é seo tcp ar phort 5046, agus le haghaidh aschuir úsáidfimid stdout.

Seo cumraíocht shimplí don chéad seoladh. Toisc go bhfuil an tasc tosaigh a sheoladh.

Mar sin, tá 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

Cad a fheiceann muid anseo?

  1. Tógadh líonraí agus méideanna ón docker-compose.yml bunaidh (an ceann ina seoltar an stack iomlán) agus is dóigh liom nach gcuireann siad isteach go mór ar an bpictiúr iomlán anseo.
  2. Cruthaímid seirbhís(í) logstash amháin ón íomhá docker.elastic.co/logstash/logstash:6.3.2 agus ainmnímid logstash_one_channel air.
  3. Cuirimid calafort 5046 ar aghaidh taobh istigh den choimeádán, chuig an gcalafort inmheánach céanna.
  4. Déanaimid ár gcomhad cumraíochta píobáin a mhapáil ./config/pipelines.yml chuig an gcomhad /usr/share/logstash/config/pipelines.yml taobh istigh den choimeádán, áit a roghnóidh logstash suas é agus é a dhéanamh inléite amháin, ar eagla na heagla.
  5. Déanaimid an t-eolaire ./config/pipelines a mhapáil, áit a bhfuil comhaid againn le socruithe cainéal, isteach san eolaire /usr/share/logstash/config/pipelines agus déanaimid é inléite amháin.

Cur i bhfeidhm praiticiúil ELK. Logstash a shocrú

Pipelines.yml comhad

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

Déantar cur síos anseo ar chainéal amháin a bhfuil an t-aitheantóir HABR air agus an cosán chuig a chomhad cumraíochta.

Agus ar deireadh an comhad “./config/pipelines/habr_pipeline.conf”

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

Ná cuirimis isteach ina chur síos faoi láthair, déanaimis iarracht é a rith:

docker-compose up

Cad a fheiceann muid?

Tá an coimeádán tosaithe. Is féidir linn a oibríocht a sheiceáil:

echo '13123123123123123123123213123213' | nc localhost 5046

Agus feicimid an freagra sa chonsól coimeádán:

Cur i bhfeidhm praiticiúil ELK. Logstash a shocrú

Ach ag an am céanna, feicimid freisin:

logstash_one_channel | [2019-04-29T11:28:59,790][ERROR][logstash.licensechecker.licensereader] Ní féidir faisnéis ceadúnais a aisghabháil ó fhreastalaí ceadúnais {:message=> “Elasticsearch Dosroichte: [http://elasticsearch:9200/][Manticore ::ResolutionFailure] elasticsearch", ...

logstash_one_channel | [2019-04-29T11:28:59,894][INFO ][logstash.pipeline ] D'éirigh leis an bpíblíne a thosaigh {:pipeline_id=>".monitoring-logstash", :thread=>" # "}

logstash_one_channel | [2019-04-29T11:28:59,988][INFO ][logstash.agent ] Píblínte ag rith {:count=>2, :running_pipelines=>[:HABR, :.monitoring-logstash"], :non_running_pipelines=>[ ]}
logstash_one_channel | [2019-04-29T11:29:00,015][ERROR][logstash.inputs.metrics] Tá X-Pack suiteáilte ar Logstash ach ní ar Elasticsearch. Suiteáil X-Pack ar Elasticsearch chun an ghné monatóireachta a úsáid. Seans go mbeidh gnéithe eile ar fáil.
logstash_one_channel | [2019-04-29T11:29:00,526][INFO ][logstash.agent ] D’éirigh le túsphointe Logstash API {:port=>9600}
logstash_one_channel | [2019-04-29T11:29:04,478][INFO ][logstash.outputs.elasticsearch] Seiceáil sláinte á rith féachaint an bhfuil nasc Elasticsearch ag obair {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,487][WARN ][logstash.outputs.elasticsearch] Rinneadh iarracht nasc le mar shampla ES marbh a aiséirí, ach fuarthas earráid. {:url=>"leaisteachas:9200/", :error_type=>LogStash::Aschuir::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=> "Elasticsearch Do-sroichte: [http://elasticsearch:9200/][Manticore::ResolutionFailure] cuardaigh leaisteacha"}
logstash_one_channel | [2019-04-29T11:29:04,704][INFO][logstash.licensechecker.licensereader] Seiceáil sláinte á rith féachaint an bhfuil nasc Elasticsearch ag obair {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,710][WARN ][logstash.licensechecker.licensereader] Rinneadh iarracht nasc le cás ES marbh a aiséirí, ach fuarthas earráid. {:url=>"leaisteachas:9200/", :error_type=>LogStash::Aschuir::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=> "Elasticsearch Do-sroichte: [http://elasticsearch:9200/][Manticore::ResolutionFailure] cuardaigh leaisteacha"}

Agus tá ár logáil ag creep suas an t-am ar fad.

Anseo aibhsigh mé le glas an teachtaireacht a sheol an phíblíne go rathúil, i ndath dearg an teachtaireacht earráide agus i buí an teachtaireacht faoi iarracht teagmháil a dhéanamh leaisteachas: 9200.
Tarlaíonn sé seo toisc go bhfuil seic ar infhaighteacht elasticsearch ar logstash.conf, atá san áireamh san íomhá. Tar éis an tsaoil, glacann logstash go n-oibríonn sé mar chuid den chruach Elk, ach scartha muid é.

Is féidir oibriú, ach níl sé áisiúil.

Is é an réiteach atá ann ná an tseiceáil seo a dhíchumasú tríd an athróg timpeallachta XPACK_MONITORING_ENABLED.

Déanaimis athrú ar docker-compose.yml agus rith arís é:

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

Anois, tá gach rud go breá. Tá an coimeádán réidh le haghaidh turgnaimh.

Is féidir linn clóscríobh arís sa chéad chonsól eile:

echo '13123123123123123123123213123213' | nc localhost 5046

Agus féach:

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 laistigh de chainéal amháin

Mar sin sheol muid. Anois is féidir leat an t-am a ghlacadh chun logstash féin a chumrú. Ná déanaimis teagmháil leis an gcomhad pipelines.yml do anois, a ligean ar a fheiceáil cad is féidir linn a fháil ag obair le cainéal amháin.

Caithfidh mé a rá go bhfuil cur síos maith ar an bprionsabal ginearálta maidir le bheith ag obair leis an gcomhad cumraíochta cainéal sa lámhleabhar oifigiúil, anseo anseo
Más mian leat léamh i Rúisis, d'úsáideamar an ceann seo alt(ach tá sean-chomhréir na gceisteanna, caithfimid é seo a chur san áireamh).

Rachaimid go seicheamhach ón rannán Ionchur. Tá obair ar TCP feicthe againn cheana féin. Cad eile a d’fhéadfadh a bheith suimiúil anseo?

Tástáil teachtaireachtaí ag baint úsáide as buille croí

Tá deis chomh suimiúil ann teachtaireachtaí tástála uathoibríocha a ghiniúint.
Chun seo a dhéanamh, ní mór duit an breiseán pónaire croí a chumasú sa rannán ionchuir.

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

Cas air, tosú ag fáil uair sa nóiméad

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

Más mian linn a fháil níos minice, ní mór dúinn a chur leis an paraiméadar eatramh.
Seo mar a gheobhaimid teachtaireacht gach 10 soicind.

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

Sonraí a aisghabháil ó chomhad

Shocraigh muid freisin breathnú ar an modh comhaid. Má oibríonn sé go breá leis an gcomhad, ansin b'fhéidir nach bhfuil gníomhaire ag teastáil, ar a laghad le haghaidh úsáid áitiúil.

De réir na tuairisce, ba cheart go mbeadh an modh oibriúcháin cosúil le eireaball -f, i.e. léann línte nua nó, mar rogha, léann an comhad iomlán.

Mar sin cad ba mhaith linn a fháil:

  1. Ba mhaith linn línte a fháil atá i gceangal le logchomhad amháin.
  2. Ba mhaith linn sonraí a fháil atá scríofa ar roinnt comhaid logála, agus sinn in ann an méid a fhaightear a scaradh óna chéile.
  3. Ba mhaith linn a chinntiú nuair a atosófar logstash, nach bhfaighidh sé na sonraí seo arís.
  4. Ba mhaith linn a sheiceáil má tá logstash múchta, agus má leanann sonraí á scríobh chuig comhaid, ansin nuair a rithfimid é, gheobhaidh muid na sonraí seo.

Chun an turgnamh a dhéanamh, cuirimis líne eile le docker-compose.yml, ag oscailt an eolaire inar chuireamar na comhaid.

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 athraigh an t-alt ionchuir i habr_pipeline.conf

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

Tosaímid:

docker-compose up

Chun comhaid loga a chruthú agus a scríobh úsáidfimid an t-ordú:


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

Sea, oibríonn sé!

Ag an am céanna, feicimid go bhfuil réimse an chosáin curtha leis againn go huathoibríoch. Ciallaíonn sé seo go mbeidh muid in ann taifid a scagadh leis amach anseo.

Déanaimis iarracht arís:

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 anois chuig comhad 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 | }

Go hiontach! Roghnaíodh an comhad, sonraíodh an cosán i gceart, tá gach rud go breá.

Stop logstash agus tosú arís. A ligean ar fanacht. Ciúnas. Iad siúd. Ní fhaighimid na taifid seo arís.

Agus anois an turgnamh is dána.

Suiteáil logstash agus rith:

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

Rith logstash arís agus féach:

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! Bhí gach rud a phiocadh suas.

Ach ní mór dúinn rabhadh a thabhairt duit faoi na nithe seo a leanas. Má scriostar an coimeádán le logstash (stad an duga logstash_one_channel && docker rm logstash_one_channel), ansin ní dhéanfar aon rud a phiocadh suas. Stóráladh suíomh an chomhaid suas go dtí ar léadh é laistigh den choimeádán. Má ritheann tú ón tús é, ní ghlacfaidh sé ach le línte nua.

Comhaid atá ann cheana a léamh

Ligean le rá go bhfuil muid ag seoladh logstash don chéad uair, ach tá logs againn cheana féin agus ba mhaith linn iad a phróiseáil.
Má rithimid logstash leis an rannán ionchuir a d'úsáid muid thuas, ní bhfaighidh muid rud ar bith. Ní dhéanfar ach línte nua a phróiseáil trí logstash.

Ionas gur féidir línte ó chomhaid atá ann cheana a tharraingt suas, ba cheart duit líne bhreise a chur leis an rannán ionchuir:

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

Thairis sin, tá nuance ann: ní chuireann sé seo isteach ach ar chomhaid nua nach bhfuil feicthe ag logstash fós. Maidir leis na comhaid chéanna a bhí cheana féin i réimse radhairc logstash, tá cuimhne aige cheana féin ar a méid agus ní ghlacfaidh sé anois ach iontrálacha nua iontu.

Stopfaimid anseo agus déanaimis staidéar ar an gcuid ionchuir. Tá go leor roghanna ann fós, ach is leor sin dúinn le haghaidh tuilleadh turgnaimh faoi láthair.

Ródú agus Claochlú Sonraí

Déanaimis iarracht an fhadhb seo a leanas a réiteach, déanaimis a rá go bhfuil teachtaireachtaí againn ó chainéal amháin, tá cuid acu faisnéiseach, agus is teachtaireachtaí earráide cuid acu. Difriúil siad de réir chlib. Is INFO cuid acu, is EARRÁID iad cuid eile.

Ní mór dúinn iad a scaradh ag an slí amach. Iad siúd. Scríobhaimid teachtaireachtaí faisnéise i gcainéal amháin, agus teachtaireachtaí earráide i gcainéal eile.

Chun seo a dhéanamh, bog ón rannóg ionchuir go dtí an scagaire agus an t-aschur.

Ag baint úsáide as an gcuid scagaire, déanfaimid an teachtaireacht isteach a pharsáil, ag fáil hash (péirí eochairluacha) uaidh, ar féidir linn oibriú leis cheana féin, i.e. disassemble de réir coinníollacha. Agus sa rannóg aschuir, roghnóimid teachtaireachtaí agus seolfaimid gach ceann dá chainéal féin.

Teachtaireacht á parsáil le grok

D'fhonn teaghráin téacs a pharsáil agus sraith réimsí a fháil uathu, tá breiseán speisialta sa rannóg scagaire - grok.

Gan an sprioc a leagan síos dom féin cur síos mionsonraithe a thabhairt air anseo (déanaim tagairt dó seo doiciméadú oifigiúil), tabharfaidh mé mo shampla simplí.

Chun seo a dhéanamh, ní mór duit cinneadh a dhéanamh ar fhormáid na teaghráin ionchuir. Tá siad mar seo agam:

1 teachtaireacht EOLAIS1
2 teachtaireacht earráide2

Iad siúd. Tagann an t-aitheantóir ar dtús, ansin INFO/EARRÁID, ansin focal éigin gan spásanna.
Níl sé deacair, ach is leor prionsabal na hoibríochta a thuiscint.

Mar sin, sa chuid scagaire den breiseán grok, ní mór dúinn patrún a shainiú chun ár teaghráin a pharsáil.

Beidh sé cuma mar seo:

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

Go bunúsach is léiriú rialta é. Úsáidtear patrúin réamhdhéanta, mar shampla INT, LOGLEVEL, WORD. Tá a gcur síos, chomh maith le patrúin eile, le fáil anseo anseo

Anois, ag dul tríd an scagaire seo, beidh ár teaghrán a iompú isteach i hash de thrí réimse: message_id, message_type, message_text.

Taispeánfar iad sa rannóg aschuir.

Teachtaireachtaí a ródú chuig an rannóg aschuir ag baint úsáide as an ordú if

Sa chuid aschuir, mar is cuimhin linn, bhíomar chun na teachtaireachtaí a roinnt ina dhá shruth. Aschuirfear cuid acu - atá iNFO, chuig an consól, agus le hearráidí, déanfaimid aschur chuig comhad.

Conas a scaraimid na teachtaireachtaí seo? Molann riocht na faidhbe réiteach cheana féin - tar éis an tsaoil, tá réimse message_type tiomnaithe againn cheana féin, nach féidir ach dhá luach a ghlacadh: INFO agus ERROR. Is ar an mbonn seo a dhéanfaimid rogha ag baint úsáide as an ráiteas if.

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

Tá cur síos ar oibriú le réimsí agus oibreoirí le fáil sa chuid seo lámhleabhar oifigiúil.

Anois, mar gheall ar an chonclúid iarbhír féin.

Aschur consól, tá gach rud soiléir anseo - stdout {}

Ach an t-aschur chuig comhad - cuimhnigh go bhfuil muid ag rith seo go léir ó choimeádán agus d'fhonn an comhad ina scríobhann muid an toradh a bheith inrochtana ón taobh amuigh, ní mór dúinn a oscailt eolaire seo i docker-compose.yml.

Iomlán:

Breathnaíonn an chuid aschuir dár gcomhad mar seo:


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

In docker-compose.yml cuirimid imleabhar eile le haghaidh aschuir:

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

Seolann muid é, bain triail as, agus feicimid roinnt ina dhá shruth.

Foinse: will.com

Add a comment