በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ከ GROK ጋር ያልተዋቀረ መረጃን ማዋቀር

Elastic Stack (ELK) እየተጠቀሙ ከሆነ እና ብጁ Logstash ምዝግብ ማስታወሻዎችን ወደ Elasticsearch ለመቅረጽ ፍላጎት ካሎት ይህ ልጥፍ ለእርስዎ ነው።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

የELK ቁልል ለሦስት ክፍት ምንጭ ፕሮጀክቶች ምህጻረ ቃል ነው፡ Elasticsearch፣ Logstash እና Kibana። አንድ ላይ የምዝግብ ማስታወሻ አስተዳደር መድረክ ይመሰርታሉ።

  • Elasticsearch የፍለጋ እና የትንታኔ ስርዓት ነው።
  • Logstash ከበርካታ ምንጮች የተገኘውን መረጃ በአንድ ጊዜ የሚቀበል፣ የሚቀይረው እና ከዚያም ወደ "stash" እንደ Elasticsearch የሚልክ የአገልጋይ ወገን ዳታ ማቀነባበሪያ ቧንቧ ነው።
  • ኪያና ተጠቃሚዎች በElasticsearch ውስጥ ገበታዎችን እና ግራፎችን በመጠቀም መረጃን እንዲያዩ ያስችላቸዋል።

Beats በኋላ ታየ እና ቀላል ዳታ ላኪ ነው። የቢትስ መግቢያ የኤልክ ቁልል ወደ ላስቲክ ቁልል ለውጦታል፣ነገር ግን ነጥቡ ያ አይደለም።

ይህ መጣጥፍ ስለ ግሮክ ነው፣ እሱም በሎግስታሽ ውስጥ ምዝግብ ማስታወሻዎችዎን ወደ ስቶሽ ከመላካቸው በፊት ሊለውጠው የሚችል ባህሪ ነው። ለኛ ዓላማዎች፣ ከሎግስታሽ እስከ ኢላስቲክ ፍለጋ ድረስ ስላለው መረጃ ስለማስኬድ ብቻ እናገራለሁ።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ግሮክ በሎግስታሽ ውስጥ ያልተዋቀረ መረጃን ወደ የተዋቀረ እና ሊጠየቅ ወደሚችል ነገር ለመተንተን የሚያገለግል ማጣሪያ ነው። እሱ በመደበኛ አገላለጽ (regex) ላይ ተቀምጧል እና በሎግ ፋይሎች ውስጥ ሕብረቁምፊዎችን ለማዛመድ የጽሑፍ ቅጦችን ይጠቀማል።

በሚቀጥሉት ክፍሎች እንደምናየው፣ ግሩክን መጠቀም ውጤታማ የሆነ የምዝግብ ማስታወሻ አያያዝን በተመለከተ ረጅም መንገድ ይሄዳል።

ያለ ግሮክ፣ የምዝግብ ማስታወሻህ ያልተዋቀረ ነው።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ያለ ግሮክ፣ ምዝግብ ማስታወሻዎች ከሎግስታሽ ወደ Elasticsearch ሲላኩ እና በኪባና ሲሰጡ፣ በመልዕክቱ ዋጋ ላይ ብቻ ይታያሉ።

በዚህ ሁኔታ ውስጥ ትርጉም ያለው መረጃ መጠየቅ ከባድ ነው ምክንያቱም ሁሉም የምዝግብ ማስታወሻዎች በአንድ ቁልፍ ውስጥ ስለሚቀመጡ። የምዝግብ ማስታወሻዎቹ በተሻለ ሁኔታ የተደራጁ ከሆነ ጥሩ ነበር።

ያልተዋቀረ መረጃ ከምዝግብ ማስታወሻዎች

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

የጥሬ መረጃውን ጠለቅ ብለው ከተመለከቱት በእውነቱ የተለያዩ ክፍሎች ያሉት ሲሆን እያንዳንዳቸው በቦታ የተከፋፈሉ መሆናቸውን ያያሉ።

የበለጠ ልምድ ላላቸው ገንቢዎች፣ እያንዳንዱ ክፍሎቹ ምን ማለት እንደሆነ እና ከኤፒአይ ጥሪ የመጣው የምዝግብ ማስታወሻ ምን እንደሆነ መገመት ይችላሉ። የእያንዳንዱ ነገር አቀራረብ ከዚህ በታች ተቀምጧል.

የእኛ ውሂብ የተዋቀረ እይታ

  • የአካባቢ አስተናጋጅ == አካባቢ
  • == ዘዴ ያግኙ
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == የምላሽ_ሁኔታ
  • 46 ሚሴ == የምላሽ_ጊዜ
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

በተዋቀረ መረጃ ላይ እንደምናየው, ያልተዋቀሩ ምዝግብ ማስታወሻዎች ትዕዛዝ አለ. ቀጣዩ እርምጃ ጥሬውን መረጃ በፕሮግራም ማካሄድ ነው። ግሮክ የሚያበራበት ቦታ ነው።

Grok አብነቶች

አብሮገነብ Grok አብነቶች

Logstash ያልተዋቀረ ውሂብን ለማዋቀር ከ100 በላይ አብሮገነብ አብነቶች ጋር አብሮ ይመጣል። እንደ apache, linux, haproxy, aws እና የመሳሰሉት ለአጠቃላይ ሲሳይሎጎች ሲቻል በእርግጠኝነት ይህንን መጠቀም አለብዎት።

ነገር ግን፣ ከላይ ባለው ምሳሌ ላይ እንደ ብጁ ምዝግብ ማስታወሻዎች ሲኖርዎት ምን ይከሰታል? የራስዎን የ Grok አብነት መገንባት አለብዎት።

Grok ብጁ አብነቶች

የራስዎን የ Grok አብነት ለመገንባት መሞከር አለብዎት። ተ ጠ ቀ ም ኩ Grok አራሚ и Grok ቅጦች.

የ Grok አብነቶች አገባብ እንደሚከተለው መሆኑን ልብ ይበሉ። %{SYNTAX:SEMANTIC}

ለማድረግ የሞከርኩት የመጀመሪያው ነገር ወደ ትሩ መሄድ ነው። ያግኙ በግሮክ አራሚ ውስጥ. ይህ መሳሪያ የ Grok ስርዓተ-ጥለትን በራስ-ሰር ማመንጨት ቢችል ጥሩ ነበር ብዬ አስቤ ነበር፣ ነገር ግን ሁለት ግጥሚያዎችን ብቻ ስላገኘው በጣም ጠቃሚ አልነበረም።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ይህን ግኝት ተጠቅሜ በ Elastic Github ገጽ ላይ የሚገኘውን አገባብ በመጠቀም በግሮክ አራሚ ላይ የራሴን አብነት መገንባት ጀመርኩ።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

በተለያዩ አገባቦች ከተጫወትኩ በኋላ በመጨረሻ የምዝግብ ማስታወሻውን በፈለኩት መንገድ ማዋቀር ቻልኩ።

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ወደ Grok አራሚ አገናኝ https://grokdebug.herokuapp.com/

ዋናው ጽሑፍ፡-

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

ንድፍ

%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}

መጨረሻ ላይ ምን ሆነ

{
  "environment": [
    [
      "localhost"
    ]
  ],
  "method": [
    [
      "GET"
    ]
  ],
  "url": [
    [
      "/v2/applink/5c2f4bb3e9fda1234edc64d"
    ]
  ],
  "response_status": [
    [
      "400"
    ]
  ],
  "BASE10NUM": [
    [
      "400"
    ]
  ],
  "response_time": [
    [
      "46ms"
    ]
  ],
  "user_id": [
    [
      "5bc6e716b5d6cb35fc9687c0"
    ]
  ]
}

በ Grok አብነት እና በካርታ የተደገፈ ውሂብ በእጃቸው፣ የመጨረሻው እርምጃ ወደ Logstash ማከል ነው።

Logstash.conf ውቅር ፋይል ያዘምኑ

የ ELK ቁልል በጫኑበት አገልጋይ ላይ ወደ Logstash ውቅር ይሂዱ፡

sudo vi /etc/logstash/conf.d/logstash.conf

ለውጦችህን ለጥፍ።

input { 
  file {
    path => "/your_logs/*.log"
  }
}
filter{
  grok {
    match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
  }
}
output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
  }
}

ለውጦቹን ካስቀመጡ በኋላ Logstashን እንደገና ያስጀምሩ እና አሁንም እየሰራ መሆኑን ለማረጋገጥ ሁኔታውን ያረጋግጡ።

sudo service logstash restart
sudo service logstash status

በመጨረሻም ለውጦቹ ተግባራዊ መሆናቸውን ለማረጋገጥ፣ በኪባና ውስጥ ለሎግስታሽ የ Elasticsearch መረጃ ጠቋሚ ማዘመንዎን እርግጠኛ ይሁኑ!

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

በግሮክ፣ የምዝግብ ማስታወሻህ የተዋቀረ ነው!

በLogStash ውስጥ GROKን በመጠቀም ያልተደራጀ መረጃን ከሎግ ወደ ELK Stack ለመቀየር ጠቃሚ ምክሮች እና ዘዴዎች

ከላይ በምስሉ ላይ እንደምናየው፣ ግሮክ የምዝግብ ማስታወሻ ውሂብን ወደ Elasticsearch በራስ ሰር ካርታ ማድረግ ይችላል። ይህ የምዝግብ ማስታወሻዎችን ለማስተዳደር እና መረጃን በፍጥነት ለመጠየቅ ቀላል ያደርገዋል። ለማረም የምዝግብ ማስታወሻ ፋይሎችን ከማውራት ይልቅ፣ የሚፈልጉትን እንደ አካባቢ ወይም ዩአርኤል በቀላሉ ማጣራት ይችላሉ።

የ Grok መግለጫዎችን ይሞክሩ! ይህንን ለማድረግ ሌላ መንገድ ካሎት ወይም ከዚህ በላይ ባሉት ምሳሌዎች ላይ ምንም አይነት ችግር ካጋጠመዎት እኔን ለማሳወቅ ከዚህ በታች ያለውን አስተያየት ይተዉ ።

ስላነበቡ እናመሰግናለን - እና እባክዎን እዚህ መካከለኛ ላይ ለተጨማሪ አስደሳች የሶፍትዌር ምህንድስና መጣጥፎች ተከተሉኝ!

መርጃዎች

https://www.elastic.co/blog/do-you-grok-grok
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
https://grokdebug.herokuapp.com/

PS ምንጭ አገናኝ

የቴሌግራም ቻናል በ Elasticsearch

ምንጭ: hab.com

አስተያየት ያክሉ