सामग्री पर जाएं
खोज सिंटैक्स

खोज सिंटैक्स

Markdown के रूप में देखें

लॉग, ट्रेस, मेट्रिक्स और अपवाद एक्सप्लोरर के ऊपर वाला खोज बॉक्स एक ही क्वेरी भाषा समझता है। क्वेरी स्पेस से अलग किए गए फ़िल्टरों की एक सूची है, और हर फ़िल्टर का मेल खाना ज़रूरी है — फ़िल्टरों के बीच कोई अंतर्निहित OR नहीं होता। खोजते समय इस पेज को संदर्भ के रूप में इस्तेमाल करें।

क्वेरी कैसे पढ़ी जाती है

severity:error @platform.team:a* -@http.method:GET timeout

इसका अर्थ है: त्रुटि स्तर के लॉग, जिनका platform.team एट्रिब्यूट a से शुरू होता है, जिनका http.method एट्रिब्यूट GET नहीं है, और जिनके संदेश में timeout आता है।

पदप्रकारमेल खाता है
severity:errorफ़ील्डलॉग की गंभीरता Error है।
@platform.team:a*एट्रिब्यूटplatform.team एट्रिब्यूट a से शुरू होता है।
-@http.method:GETबाहर रखा गया एट्रिब्यूटhttp.method एट्रिब्यूट GET के अलावा कुछ भी है।
timeoutमुक्त टेक्स्टसंदेश में timeout है।

स्पेस से अलग हर पद अपने आप में पढ़ा जाता है, फिर उन सभी को AND से जोड़ा जाता है:

flowchart TB term["खोज बॉक्स में एक पद"] --> neg{"- से शुरू होता है"} neg -->|"हां"| invert["जो मेल खाए उसे बाहर रखें"] neg -->|"नहीं"| at{"@ से शुरू होता है"} invert --> at at -->|"हां"| attr["एट्रिब्यूट फ़िल्टर"] at -->|"नहीं"| colon{"key:value है"} colon -->|"नहीं"| text["मुक्त टेक्स्ट"] colon -->|"हां"| known{"ज्ञात फ़ील्ड"} known -->|"हां"| field["फ़ील्ड फ़िल्टर"] known -->|"नहीं"| attr attr --> all["सभी पदों का मेल खाना ज़रूरी"] field --> all text --> all

क्वेरी का हर पद कैसे पढ़ा जाता है

फ़िल्टर के दो प्रकार

रूपकिस पर फ़िल्टर करता हैउदाहरण
field:valueसिग्नल का एक बिल्ट-इन फ़ील्डseverity:error
@attribute:valueपंक्ति पर एक OpenTelemetry एट्रिब्यूट@http.status_code:500
अकेले शब्दसंदेश (लॉग), स्पैन का नाम (ट्रेस), मेट्रिक का नाम (मेट्रिक्स) या अपवाद संदेश (अपवाद)connection refused

ऐसा अकेला key:value जिसकी कुंजी कोई ज्ञात फ़ील्ड नहीं है, एट्रिब्यूट माना जाता है, इसलिए k8s.pod:api-0 और @k8s.pod:api-0 का अर्थ एक ही है। आगे @ लगाने का अर्थ हमेशा "एट्रिब्यूट में देखें" होता है, एक अपवाद के साथ: अपवाद एक्सप्लोरर में @type:, @service:, @env: और @class: अब भी उन्हीं फ़ील्ड पर फ़िल्टर करते हैं।

जिस टेक्स्ट में संयोग से कोलन आ जाता है, वह टेक्स्ट ही रहता है — https://example.com और 12:30 शब्दों की तरह खोजे जाते हैं, फ़िल्टर के रूप में नहीं पढ़े जाते।

मानों का मिलान

इस तालिका की हर चीज़ किसी भी एट्रिब्यूट और ज़्यादातर बिल्ट-इन फ़ील्ड पर काम करती है; सिग्नल के अनुसार फ़ील्ड उन फ़ील्ड को बताता है जो मान को ज़्यादा सरल तरीके से पढ़ते हैं।

आप लिखते हैंयह मेल खाता है
@k:abcठीक abc
@k:a*a से शुरू होने वाला कुछ भी — abc, alpha
@k:*cc पर ख़त्म होने वाला कुछ भी
@k:a*ca से शुरू और c पर ख़त्म
@k:a?c? ठीक एक अक्षर है — abc, axc, लेकिन ac नहीं
@k:*एट्रिब्यूट मौजूद है और खाली नहीं है
@k:~abcकहीं भी abc शामिल है
@k:!abcabc के अलावा कुछ भी
@k:>100100 से अधिक। >=, <, <= भी
@k:(a OR b)दोनों में से कोई भी मान। @k:[a, b] भी यही है
@k:(a* OR b*)दोनों में से कोई भी पैटर्न

वाइल्डकार्ड और "शामिल है" मिलान केस को अनदेखा करते हैं; सटीक मिलान ऐसा नहीं करता, क्योंकि उसकी तुलना मान से ठीक उसी रूप में होती है जिसमें वह संग्रहीत हुआ था।

स्पेस वाले मान

मान को डबल कोट में रखें:

name:"SELECT wp_options"
@k8s.container.name:"my container"

कोट स्पेस को सुरक्षित रखते हैं, वाइल्डकार्ड को नहीं — @k:"a b*" अब भी a b से शुरू होने वाली किसी भी चीज़ से मेल खाता है।

शाब्दिक *, ? और दूसरे विराम चिह्न

बैकस्लैश अगले अक्षर को शाब्दिक बना देता है:

आप लिखते हैंयह मेल खाता है
@k:a\*bठीक a*b
@k:\~abcठीक ~abc
@k:\>5ठीक >5

% या _ वाले मानों को एस्केप करने की ज़रूरत नहीं — वे हमेशा शाब्दिक होते हैं।

बाहर रखना

आगे लगा - किसी भी फ़िल्टर को उलट देता है, ऊपर वाले फ़िल्टर भी:

आप लिखते हैंयह मेल खाता है
-severity:debugdebug के अलावा सब कुछ
-@platform.team:a*कोई भी पंक्ति जिसका platform.team a से शुरू नहीं होता, उन पंक्तियों सहित जिनमें platform.team है ही नहीं
-@k:*एट्रिब्यूट मौजूद नहीं है या खाली है
-@k:(a OR b)दोनों में से कोई भी मान नहीं
-@k:>100100 या उससे कम
-@k:~abcabc शामिल नहीं है

ट्रेस एक्सप्लोरर में - केवल एट्रिब्यूट को बाहर रखता है। -status:error को स्पैन नामों में खोजे जाने वाले टेक्स्ट के रूप में पढ़ा जाता है, और कुछ नहीं मिलता; इसके बजाय वे मान मांगें जो आप चाहते हैं, जैसे status:(ok OR unset)।

सिग्नल के अनुसार फ़ील्ड

फ़ील्ड नाम केस-संवेदी नहीं हैं: statusMessage: और statusmessage: एक ही फ़ील्ड हैं।

लॉग

फ़ील्डउपनामनोट
severitylevelfatal, error, warning (या warn), info (या information), debug, trace, unspecified — किसी भी केस में
serviceसेवा का नाम, पूरा लिखा हुआ, किसी भी केस में
traceट्रेस ID
spanस्पैन ID
messagemsg, log, bodyलॉग पंक्ति। अकेले शब्द भी इसी में खोजते हैं

ट्रेस

ट्रेस फ़ील्ड एक सादा मान या status:(ok OR unset) जैसी "इनमें से कोई भी" सूची लेते हैं, और duration में > और < भी चलते हैं। वाइल्डकार्ड, ~, ! और आगे लगा - यहां केवल एट्रिब्यूट पर काम करते हैं।

फ़ील्डनोट
serviceसेवा का नाम
nameस्पैन का नाम। एक मान इसके किसी भी हिस्से से मेल खाता है। अकेले शब्द भी इसी में खोजते हैं
statusok, error, unset (unset = कोई त्रुटि स्थिति सेट नहीं है, जो OpenTelemetry का डिफ़ॉल्ट है)
kindserver, client, producer, consumer, internal
durationमिलीसेकंड: duration:>500, duration:<200 या एक सटीक मान
statusMessageस्टेटस संदेश का टेक्स्ट। एक मान इसके किसी भी हिस्से से मेल खाता है
hasExceptiontrue या false
trace, spanID

मेट्रिक्स

फ़ील्डनोट
nameमेट्रिक का नाम। सादा मान इसके किसी भी हिस्से से मेल खाता है, इसलिए name:http.server से http.server.request.duration मिल जाता है। अकेले शब्द भी इसी में खोजते हैं
serviceसेवा का नाम। सादा मान इसके किसी भी हिस्से से मेल खाता है

अपवाद

फ़ील्डउपनामनोट
typeexceptionTypeअपवाद का प्रकार, जैसे type:TypeError
envenvironmentपरिवेश, deployment.environment रिसोर्स एट्रिब्यूट से
serviceसेवा का नाम। सादा मान इसके किसी भी हिस्से से मेल खाता है
classerrorClassत्रुटि किसकी गलती है: code-fault, user-error, expected-denial, infrastructure या unknown

अकेले शब्द अपवाद संदेश में खोजते हैं।

Security Events एक्सप्लोरर भी यही भाषा इस्तेमाल करता है, अपने खुद के फ़ील्ड के साथ, जैसे severity, tactic और user — देखें सुरक्षा इवेंट।

फ़िल्टर जोड़ना

फ़िल्टर AND से जुड़ते हैं। उनके बीच AND लिखा जा सकता है, इससे कुछ नहीं बदलता:

severity:error service:api          # both must hold
severity:error AND service:api      # identical

फ़िल्टरों के बीच कोई OR या NOT नहीं होता: वहां लिखे OR और NOT छोड़ दिए जाते हैं, इसलिए NOT severity:debug का अर्थ वही है जो severity:debug का। आगे - लगाकर बाहर रखें (-severity:debug), और एक ही कुंजी के दो मानों में से किसी एक से मिलान के लिए "इनमें से कोई भी" रूप का उपयोग करें:

@http.method:(GET OR POST)

एक ही कुंजी पर दो फ़िल्टर AND से जुड़ते हैं, और रेंज या दोनों सिरों वाला पैटर्न इसी तरह लिखा जाता है:

@http.status_code:>=500 @http.status_code:<=599
@k:a* @k:*z

चिप और खोज बॉक्स

किसी key:value पद पर Enter दबाने से वह लागू हो जाता है, आम तौर पर नतीजों के ऊपर एक चिप के रूप में। चिप मान को ठीक वैसा ही रखती है जैसा लिखा गया था, इसलिए वाइल्डकार्ड वाइल्डकार्ड ही रहता है। जिस पद को चिप नहीं रख सकती, जैसे बाहर रखा गया -key:value, वह खोज बॉक्स में रहता है और वहीं से फ़िल्टर करता है। फ़ेसेट साइडबार में किसी मान पर क्लिक करने से उसी तरह की चिप जुड़ती है, जिसका मान एस्केप किया हुआ होता है — संयोग से * वाला संग्रहीत मान उसी शाब्दिक मान के लिए फ़िल्टर करता है, पैटर्न के रूप में नहीं।

चिप सहेजे गए व्यू और पेज URL का हिस्सा होती हैं, इसलिए फ़िल्टर रीफ़्रेश, बुकमार्क और साझा किए गए लिंक के बाद भी बना रहता है।

जानने योग्य बातें

  • वाइल्डकार्ड, "शामिल है" और प्रीफ़िक्स/सफ़िक्स फ़िल्टर के लिए एट्रिब्यूट कुंजियों का मिलान केस को अनदेखा करके होता है, इसलिए आपको याद रखने की ज़रूरत नहीं कि वह requestId के रूप में इंजेस्ट हुआ था या requestid के रूप में।
  • -@k:... फ़िल्टर उन पंक्तियों से भी मेल खाता है जिनमें वह एट्रिब्यूट कभी था ही नहीं — जिस पंक्ति में platform.team है ही नहीं, वह स्वाभाविक रूप से a से शुरू नहीं होती।
  • संख्यात्मक तुलनाएं टेक्स्ट के रूप में संग्रहीत एट्रिब्यूट मानों पर काम करती हैं; जो मान संख्या नहीं है, वह कभी किसी तुलना को पूरा नहीं करता।
  • लॉग और ट्रेस पर, कोई सटीक मान, जैसे @http.route:/orders, @k:(a OR b) या फ़ेसेट साइडबार में क्लिक किया गया मान, एक इंडेक्स में देखा जाता है, इसलिए ऐसे मान की खोज जो कुछ ही पंक्तियों में होता है, लंबी समय सीमाओं पर भी तेज़ रहती है। वाइल्डकार्ड, "शामिल है", बाहर रखना और तुलनाएं सीमा की हर लॉग पंक्ति या स्पैन पढ़ती हैं: इनमें से कोई खोज धीमी हो तो कोई सटीक मान जोड़ें या छोटी सीमा चुनें।
  • 45 सेकंड से ज़्यादा चलने वाली खोज रोक दी जाती है। एक्सप्लोरर उसी जगह यह बताता है जहाँ परिणाम होते, आपकी खोज और फ़िल्टर जैसे थे वैसे ही रखता है और फिर से प्रयास करें देता है; चार्ट और फ़िल्टर की गिनती भी समय खत्म होने पर अपनी जगह यही बताते हैं। खोज पूरी कराने के लिए छोटी सीमा चुनें या कोई सटीक मान जोड़ें।
  • @key: टाइप करके रुकते ही खोज बॉक्स दिखाई जा रही सीमा से उस एट्रिब्यूट के मान सुझाता है। सुझाव उस सीमा के एक नमूने से आते हैं, इसलिए कम इस्तेमाल होने वाला मान शायद सूची में न हो: उसे टाइप करें और Enter दबाएँ।

अगले कदम