इसलिए मेरी कंपनी ने मुझे हमारे रिपॉजिटरी के लिए हमारे लॉगस्टैश संस्करण को 6.6.2 से 7.13.3 में अपग्रेड कर दिया है।

अपग्रेड के साथ कुछ अन्य त्रुटियों को ठीक करने के बाद, ऐसा लगता है कि कॉन्फ़िगरेशन फ़ाइल में रूबी सिंटैक्स को बदलना अंतिम टुकड़ा है।

हालाँकि, मैं भाषा से बहुत परिचित नहीं हूँ और मुझे यकीन नहीं है कि वाक्य रचना अब काम क्यों नहीं करती है।

फ़ाइल से प्राप्त होने वाली सिंटैक्स त्रुटियों में से एक का उदाहरण यहां दिया गया है।

[2021-07-21T16:10:22,524][ERROR][logstash.javapipeline    ][main] Pipeline error {
  :pipeline_id=>"main",
  :exception=>#<RegexpError: unmatched range specifier in char-class: /(?<ucd_environment_name1>(?<=release_ucd_environment_name:)[\w-.]*)/m>,
  :backtrace=>[
    "org/jruby/RubyRegexp.java:965:in `initialize'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/vendor/bundle/jruby/2.5.0/gems/jls-grok-0.11.5/lib/grok-pure.rb:127:in `compile'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/vendor/bundle/jruby/2.5.0/gems/logstash-filter-grok-4.4.0/lib/logstash/filters/grok.rb:282:in `block in register'",
    "org/jruby/RubyArray.java:1809:in `each'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/vendor/bundle/jruby/2.5.0/gems/logstash-filter-grok-4.4.0/lib/logstash/filters/grok.rb:276:in `block in register'",
    "org/jruby/RubyHash.java:1415:in `each'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/vendor/bundle/jruby/2.5.0/gems/logstash-filter-grok-4.4.0/lib/logstash/filters/grok.rb:271:in `register'",
    "org/logstash/config/ir/compiler/AbstractFilterDelegatorExt.java:75:in `register'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:228:in `block in register_plugins'",
    "org/jruby/RubyArray.java:1809:in `each'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:227:in `register_plugins'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:586:in `maybe_setup_out_plugins'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:240:in `start_workers'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:185:in `run'",
    "/Users/808451090/Desktop/app/logstash-7.13.3/logstash-core/lib/logstash/java_pipeline.rb:137:in `block in start'"
  ],
  "pipeline.sources"=>["/Users/808451090/Desktop/app/logstash-7.13.3/devops-jenkins/jenkins.conf"],
  :thread=>"#<Thread:0x4fbac51b run>"
}

यह त्रुटि संदर्भ रेखा:

grok {
    match => { "message_string" => "(?<ucd_environment_name1>(?<=release_ucd_environment_name:)[\w-.]*)" }
  }

ऐसी अन्य पंक्तियाँ हैं जहाँ यह त्रुटि होती है, लेकिन उन सभी में इस पंक्ति के समान सिंटैक्स होता है, इसलिए मुझे यकीन है कि मैं उन लोगों पर भी वही परिवर्तन लागू कर सकता हूँ।

अगर कोई मुझे इंगित कर सकता है कि मैं इस लाइन को उसी अभिव्यक्ति की जांच के लिए कैसे बदल सकता हूं कि यह लॉगस्टैश संस्करण वाक्य रचनात्मक रूप से स्वीकार करता है।

0
Tom Smith 27 जुलाई 2021, 18:00

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि है

चार-वर्ग में बेजोड़ श्रेणी विनिर्देशक

चरित्र परिभाषाओं में, आप वर्णों की श्रेणियों को परिभाषित कर सकते हैं जैसे कि [a-z]। वहां एक शाब्दिक डैश वर्ण का उपयोग करते समय, आपको या तो इससे बचने के लिए सावधान रहना होगा या यह सुनिश्चित करना होगा कि यह स्पष्ट रूप से एक सीमा के बजाय एक वर्ण को परिभाषित करता है।

आपके उदाहरण में, आप यह सुनिश्चित करने के लिए अपने रेगेक्स में डैश से बच सकते हैं कि डैश को एक संभावित वर्ण के रूप में माना जाता है:

grok {
  match => { "message_string" => "(?<ucd_environment_name1>(?<=release_ucd_environment_name:)[\w\-.]*)" }
}
0
Holger Just 27 जुलाई 2021, 18:13
लेकिन ए के साथ। चरित्र वर्ग में यह कुछ भी मेल खाता है। चाहिए. भी बच जाओ? यह बताना असंभव है कि मूल लेखक का इरादा क्या था।
 – 
Badger
27 जुलाई 2021, 18:55
ऐसा लगता है कि इसने वास्तव में इसे ठीक कर दिया! धन्यवाद। मुझे लगता है कि पुराने लॉगस्टैश संस्करण ने "-" को एक सीमा के रूप में नहीं माना? किसी भी तरह, यह अभी चल रहा है
 – 
Tom Smith
27 जुलाई 2021, 21:19
एक वर्ण वर्ग में एक . हमेशा एक शाब्दिक बिंदु वर्ण से मेल खाता है। किसी भी चरित्र से मेल खाने का इसका "विशेष" अर्थ केवल चरित्र वर्गों के बाहर ही लागू होता है।
 – 
Holger Just
27 जुलाई 2021, 22:38
रेगेक्स पहले अमान्य था। यह हो सकता है कि लॉगस्टैश 6.6 के साथ भेजा गया जेआरबी संस्करण हाल के संस्करण की तुलना में यहां अधिक क्षमाशील था।
 – 
Holger Just
27 जुलाई 2021, 22:41