Tha sinn nar caraidean le ELK agus Exchange. Pàirt 2

Tha sinn nar caraidean le ELK agus Exchange. Pàirt 2

Bidh mi a’ leantainn air adhart leis an sgeulachd agam mu mar a nì mi caraidean Exchange agus ELK (a’ tòiseachadh an seo). Leig leam do chuimhneachadh gu bheil am measgachadh seo comasach air àireamh mhòr de logaichean a ghiullachd gun stad. An turas seo bruidhnidh sinn mu mar a gheibh thu Exchange ag obair le co-phàirtean Logstash agus Kibana.

Tha Logstash anns a ’chruach ELK air a chleachdadh gus logaichean a phròiseasadh gu tùrail agus gan ullachadh airson an suidheachadh ann an Elastic ann an cruth sgrìobhainnean, air a bheil e goireasach diofar sheallaidhean a thogail ann an Kibana.

suidheachadh

Tha e air a dhèanamh suas de dhà ìre:

  • A’ stàladh agus a’ rèiteachadh a’ phacaid OpenJDK.
  • A 'stàladh agus a' rèiteachadh a 'phacaid Logstash.

A’ stàladh agus a’ rèiteachadh a’ phacaid OpenJDK

Feumar am pasgan OpenJDK a luchdachadh sìos agus a dhì-phapadh ann an eòlaire sònraichte. An uairsin feumaidh an t-slighe chun eòlaire seo a dhol a-steach do na caochladairean $env:Path agus $env:JAVA_HOME de shiostam-obrachaidh Windows:

Tha sinn nar caraidean le ELK agus Exchange. Pàirt 2

Tha sinn nar caraidean le ELK agus Exchange. Pàirt 2

Feuch an toir sinn sùil air an tionndadh Java:

PS C:> java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

A 'stàladh agus a' rèiteachadh a 'phacaid Logstash

Luchdaich sìos am faidhle tasglann leis an sgaoileadh Logstash bho seo. Feumaidh an tasglann a bhith air a dhì-phapadh gu freumh an diosg. Unpack gu pasgan C:Program Files Chan fhiach e, diùlt Logstash tòiseachadh gu h-àbhaisteach. An uairsin feumaidh tu a dhol a-steach don fhaidhle jvm.options rèiteachadh le uallach airson RAM a riarachadh airson pròiseas Java. Tha mi a 'moladh leth de RAM an fhrithealaiche a shònrachadh. Ma tha 16 GB de RAM air bòrd, is iad na h-iuchraichean bunaiteach:

-Xms1g
-Xmx1g

feumar a chur na àite:

-Xms8g
-Xmx8g

A bharrachd air an sin, tha e ciallach beachd a thoirt seachad air an loidhne -XX:+UseConcMarkSweepGC. Tuilleadh mu dheidhinn seo an seo. Is e an ath cheum rèiteachadh bunaiteach a chruthachadh anns an fhaidhle logstash.conf:

input {
 stdin{}
}
 
filter {
}
 
output {
 stdout {
 codec => "rubydebug"
 }
}

Leis an rèiteachadh seo, bidh Logstash a’ leughadh dàta bhon chonsail, ga thoirt tro chriathrag falamh, agus ga chuir air ais chun chonsail. Le bhith a’ cleachdadh an rèiteachaidh seo nì sin deuchainn air comasachd Logstash. Gus seo a dhèanamh, ruithidh sinn e ann am modh eadar-ghnìomhach:

PS C:...bin> .logstash.bat -f .logstash.conf
...
[2019-12-19T11:15:27,769][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[2019-12-19T11:15:27,847][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-12-19T11:15:28,113][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

Chaidh Logstash a chuir air bhog gu soirbheachail air port 9600.

An ceum stàlaidh mu dheireadh: cuir Logstash air bhog mar sheirbheis Windows. Faodar seo a dhèanamh, mar eisimpleir, a 'cleachdadh a' phacaid NSSM:

PS C:...bin> .nssm.exe install logstash
Service "logstash" installed successfully!

fulangas lochd

Tha sàbhailteachd logaichean nuair a thèid an gluasad bhon t-seirbheisiche stòr air a dhèanamh cinnteach leis an uidheamachd Persistent Queues.

Mar a tha e ag obair

Is e cruth ciudha rè giullachd logaichean: cuir a-steach → ciudha → sìoltachan + toradh.

Bidh am plugan cuir a-steach a’ faighinn dàta bho stòr log, ga sgrìobhadh gu ciudha, agus a’ cur dearbhadh gun deach an dàta fhaighinn chun stòr.

Bidh teachdaireachdan bhon ciudha air an giullachd le Logstash, air an toirt seachad tron ​​​​chriathrag agus am plugan toraidh. Nuair a gheibh e dearbhadh bhon toradh gun deach an loga a chuir a-steach, bheir Logstash air falbh an log pròiseasaichte bhon ciudha. Ma stadas Logstash, bidh a h-uile teachdaireachd is teachdaireachd nach deach a phròiseasadh air an son nach d’ fhuaireadh dearbhadh fhathast anns a’ chiudha, agus leanaidh Logstash gan làimhseachadh an ath thuras a thòisicheas e.

adjustment

Faodar atharrachadh le iuchraichean san fhaidhle C:Logstashconfiglogstash.yml:

  • queue.type: (luachan comasach - persisted и memory (default)).
  • path.queue: (slighe chun phasgan le faidhlichean ciudha, a tha air an stòradh ann an C:Logstashqueue gu bunaiteach).
  • queue.page_capacity: (meud duilleag ciudha as àirde, is e an luach bunaiteach 64mb).
  • queue.drain: (fìor / meallta - a’ comasachadh / a’ cuir à comas stad a chuir air giollachd ciudha mus dùin e Logstash sìos. Chan eil mi a’ moladh a chomasachadh, oir bheir seo buaidh dhìreach air astar dùnadh an fhrithealaiche).
  • queue.max_events: (an àireamh as motha de thachartasan sa chiudha, is e 0 bunaiteach (gun chrìoch)).
  • queue.max_bytes: (meud ciudha as àirde ann am bytes, bunaiteach - 1024mb (1gb)).

Ma tha e air a rèiteachadh queue.max_events и queue.max_bytes, an uairsin cha tèid gabhail ri teachdaireachdan a-steach don ciudha nuair a ruigear luach gin de na roghainnean sin. Ionnsaich tuilleadh mu dheidhinn Ciudha Seasmhach an seo.

Eisimpleir den phàirt de logstash.yml le uallach airson a’ chiudha a stèidheachadh:

queue.type: persisted
queue.max_bytes: 10gb

adjustment

Mar as trice tha trì pàirtean ann an rèiteachadh Logstash, le uallach airson diofar ìrean de ghiullachd logaichean a tha a’ tighinn a-steach: faighinn (roinn cuir a-steach), parsadh (roinn sìoltachain) agus cur gu Elastic (roinn toraidh). Gu h-ìosal bheir sinn sùil nas mionaidiche air gach fear dhiubh.

Input

Bidh sinn a’ faighinn an t-sruth a tha a’ tighinn a-steach le logaichean amh bho riochdairean filebeat. Is e am plugan seo a tha sinn a’ comharrachadh anns an roinn cuir a-steach:

input {
  beats {
    port => 5044
  }
}

Às deidh an rèiteachadh seo, bidh Logstash a ’tòiseachadh ag èisteachd ri port 5044, agus nuair a gheibh thu logaichean, gan pròiseasadh a rèir roghainnean na h-earrainn sìoltachain. Ma tha feum air, faodaidh tu an sianal a phasgadh airson logaichean fhaighinn bho filebit ann an SSL. Leugh tuilleadh mu roghainnean plugan beats an seo.

Filter

Tha a h-uile log teacsa a tha inntinneach airson a ghiullachd a bhios Exchange a’ gineadh ann an cruth csv leis na raointean a tha air am mìneachadh anns an fhaidhle log fhèin. Airson clàran csv a pharsadh, tha Logstash a’ tabhann trì plugins dhuinn: dissect, csv agus grok. Is e a 'chiad fhear as motha gu luath, ach a’ dèiligeadh ri parsadh a-mhàin na logaichean as sìmplidh.
Mar eisimpleir, roinnidh e an clàr a leanas na dhà (mar thoradh air cromag a-staigh san raon), agus is e sin as coireach gun tèid an loga a pharsadh gu ceàrr:

…,"MDB:GUID1, Mailbox:GUID2, Event:526545791, MessageClass:IPM.Note, CreationTime:2020-05-15T12:01:56.457Z, ClientType:MOMT, SubmissionAssistant:MailboxTransportSubmissionEmailAssistant",…

Faodar a chleachdadh nuair a bhios tu a’ parsadh logaichean, mar eisimpleir, IIS. Anns a ’chùis seo, is dòcha gum bi an roinn sìoltachain a’ coimhead mar seo:

filter {
  if "IIS" in [tags] {
    dissect {
      mapping => {
        "message" => "%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}"
      }
      remove_field => ["message"]
      add_field => { "application" => "exchange" }
    }
  }
} 

Leigidh rèiteachadh Logstash leat a chleachdadh aithrisean cumhach, gus nach urrainn dhuinn ach logaichean a chaidh an tagadh leis an taga filebeat a chuir chun plugan dissect IIS. Taobh a-staigh a 'phlug bidh sinn a' maidseadh luachan an raoin leis na h-ainmean aca, cuir às don raon tùsail message, anns an robh inntrig bhon loga, agus is urrainn dhuinn raon àbhaisteach a chuir ris anns am bi, mar eisimpleir, ainm an tagraidh às am bi sinn a’ cruinneachadh logaichean.

A thaobh tracadh logaichean, tha e nas fheàrr am plugan csv a chleachdadh; faodaidh e raointean iom-fhillte a phròiseasadh gu ceart:

filter {
  if "Tracking" in [tags] {
    csv {
      columns => ["date-time","client-ip","client-hostname","server-ip","server-hostname","source-context","connector-id","source","event-id","internal-message-id","message-id","network-message-id","recipient-address","recipient-status","total-bytes","recipient-count","related-recipient-address","reference","message-subject","sender-address","return-path","message-info","directionality","tenant-id","original-client-ip","original-server-ip","custom-data","transport-traffic-type","log-id","schema-version"]
      remove_field => ["message", "tenant-id", "schema-version"]
      add_field => { "application" => "exchange" }
    }
}

Taobh a-staigh a 'phlug bidh sinn a' maidseadh luachan an raoin leis na h-ainmean aca, cuir às don raon tùsail message (agus cuideachd raointean tenant-id и schema-version), anns an robh inntrig bhon loga, agus is urrainn dhuinn raon àbhaisteach a chuir ris, anns am bi, mar eisimpleir, ainm an tagraidh às am bi sinn a’ cruinneachadh logaichean.

Aig an t-slighe a-mach bhon ìre sìolaidh, gheibh sinn sgrìobhainnean sa chiad tuairmse, deiseil airson an sealladh ann an Kibana. Bidh sinn ag ionndrainn na leanas:

  • Bidh raointean àireamhach air an aithneachadh mar theacsa, a chuireas casg air gnìomhachd orra. Is e sin, na raointean time-taken IIS log, a bharrachd air raointean recipient-count и total-bites Log a Thracadh.
  • Bidh an ùine a chaidh an loga a phròiseasadh a’ gabhail a-steach stampa-ama àbhaisteach na sgrìobhainn, chan e an ùine a chaidh a sgrìobhadh air taobh an fhrithealaiche.
  • achadh recipient-address Bidh e coltach ri aon làrach togail, nach leig le mion-sgrùdadh a bhith a’ cunntadh luchd-faighinn litrichean.

Tha an t-àm ann beagan draoidheachd a chuir ris a’ phròiseas giollachd logaichean.

Ag atharrachadh raointean àireamhach

Tha roghainn aig plugan dissect convert_datatype, a dh’fhaodar a chleachdadh gus raon teacsa a thionndadh gu cruth didseatach. Mar eisimpleir, mar seo:

dissect {
  …
  convert_datatype => { "time-taken" => "int" }
  …
}

Is fhiach cuimhneachadh nach eil an dòigh seo freagarrach ach ma bhios sreang gu cinnteach san raon. Chan eil an roghainn a 'pròiseas luachan Null bho raointean agus a' tilgeil eisgeachd.

Airson tracadh logaichean, tha e nas fheàrr gun a bhith a 'cleachdadh an aon dòigh iompachadh, bhon a tha na h-achaidhean recipient-count и total-bites faodaidh e bhith falamh. Gus na raointean sin a thionndadh tha e nas fheàrr plugan a chleachdadh mutadh:

mutate {
  convert => [ "total-bytes", "integer" ]
  convert => [ "recipient-count", "integer" ]
}

A’ roinneadh receiver_address a-steach do luchd-faighinn fa-leth

Faodar an duilgheadas seo fhuasgladh cuideachd leis a’ plugan mutate:

mutate {
  split => ["recipient_address", ";"]
}

Ag atharrachadh an clàr-ama

Ann an cùis logaichean tracadh, tha an duilgheadas air fhuasgladh gu math furasta leis a ’plugan ceann-latha, a chuidicheas tu gus sgrìobhadh san raon timestamp ceann-latha agus uair anns a’ chruth a tha a dhìth bhon raon date-time:

date {
  match => [ "date-time", "ISO8601" ]
  timezone => "Europe/Moscow"
  remove_field => [ "date-time" ]
}

A thaobh logaichean IIS, feumaidh sinn dàta làraich a chur còmhla date и time a’ cleachdadh am plugan mutate, clàraich an raon ùine a dh’ fheumas sinn agus cuir a-steach an stampa ùine seo timestamp a’ cleachdadh am plugan ceann-latha:

mutate { 
  add_field => { "data-time" => "%{date} %{time}" }
  remove_field => [ "date", "time" ]
}
date { 
  match => [ "data-time", "YYYY-MM-dd HH:mm:ss" ]
  timezone => "UTC"
  remove_field => [ "data-time" ]
}

Species

Tha an roinn toraidh air a chleachdadh gus logaichean giullaichte a chuir chun ghlacadair log. Ma thèid a chuir gu dìreach gu Elastic, thèid plugan a chleachdadh lorg elastaig, a shònraicheas seòladh an fhrithealaiche agus teamplaid ainm clàr-amais airson an sgrìobhainn a chaidh a chruthachadh a chuir:

output {
  elasticsearch {
    hosts => ["127.0.0.1:9200", "127.0.0.2:9200"]
    manage_template => false
    index => "Exchange-%{+YYYY.MM.dd}"
  }
}

An rèiteachadh deireannach

Bidh an rèiteachadh mu dheireadh a’ coimhead mar seo:

input {
  beats {
    port => 5044
  }
}
 
filter {
  if "IIS" in [tags] {
    dissect {
      mapping => {
        "message" => "%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}"
      }
      remove_field => ["message"]
      add_field => { "application" => "exchange" }
      convert_datatype => { "time-taken" => "int" }
    }
    mutate { 
      add_field => { "data-time" => "%{date} %{time}" }
      remove_field => [ "date", "time" ]
    }
    date { 
      match => [ "data-time", "YYYY-MM-dd HH:mm:ss" ]
      timezone => "UTC"
      remove_field => [ "data-time" ]
    }
  }
  if "Tracking" in [tags] {
    csv {
      columns => ["date-time","client-ip","client-hostname","server-ip","server-hostname","source-context","connector-id","source","event-id","internal-message-id","message-id","network-message-id","recipient-address","recipient-status","total-bytes","recipient-count","related-recipient-address","reference","message-subject","sender-address","return-path","message-info","directionality","tenant-id","original-client-ip","original-server-ip","custom-data","transport-traffic-type","log-id","schema-version"]
      remove_field => ["message", "tenant-id", "schema-version"]
      add_field => { "application" => "exchange" }
    }
    mutate {
      convert => [ "total-bytes", "integer" ]
      convert => [ "recipient-count", "integer" ]
      split => ["recipient_address", ";"]
    }
    date {
      match => [ "date-time", "ISO8601" ]
      timezone => "Europe/Moscow"
      remove_field => [ "date-time" ]
    }
  }
}
 
output {
  elasticsearch {
    hosts => ["127.0.0.1:9200", "127.0.0.2:9200"]
    manage_template => false
    index => "Exchange-%{+YYYY.MM.dd}"
  }
}

Ceanglaichean feumail:

Source: www.habr.com

Cuir beachd ann