2012-11-06 18 views
6

का उपयोग कर संभवतः एक अनुरोधित चर का उपयोग करने के लिए सेकंड में कुल अनुरोध समय लिखना, मैं सेकंड में अनुरोध अवधि को शामिल करने के लिए अपने nginx एक्सेस लॉग प्रारूप को संशोधित करने का प्रयास कर रहा हूं।किसी अनुरोधित चर

मैं दो संभव चर देख मैं इस्तेमाल कर सकते हैं:

1) $request_time

2) $upstream_response_time

हालांकि

इनके दोनों माइक्रोसेकंड में व्यक्त कर रहे हैं, और मैं इस मूल्य में प्रदान करने की जरूरत है सेकंड। अभिव्यक्ति के रूप में आउटपुट निर्दिष्ट करने का कोई तरीका है (यानी $request_time * 1000) या इसे किसी अन्य तरीके से पूरा करें?

धन्यवाद

+6

असल में, दोनों पहले से ही सेकंड में हैं (मिलीसेकंद रिज़ॉल्यूशन के साथ, यानी '$ request_time' '1.234' जैसा दिखेगा)। ध्यान दें कि '$ upstream_response_time' प्रारूप अधिक जटिल है क्योंकि इसमें [एकाधिक अपस्ट्रीम सर्वर] (http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables) के लिए समय हो सकता है। –

उत्तर

10

वेबसर्वर एक कैलकुलेटर या सांख्यिकीय कार्यक्रम नहीं है। यह लॉगिंग फ़ंक्शन कच्चे डेटा को प्रदान करना है जिसके साथ आप अपना विश्लेषण कर सकते हैं। यदि आप विश्लेषण प्रोग्राम माइक्रोसॉन्ड को सेकेंड में परिवर्तित करने में असमर्थ हैं तो आपको अन्य सॉफ़्टवेयर के लिए खरीदारी करना चाहिए। किसी भी मामले में, यह आपके लिए यूनिट रूपांतरण करने के लिए प्रोग्राम के लॉगिंग फ़ंक्शन की अपेक्षा करने के लिए अवास्तविक है। लॉगिंग का लक्ष्य प्रारूपित नहीं करना है, फिर भी यह रिकॉर्ड करना है कि उसने अपनी मुख्य कार्यक्षमता के प्रदर्शन को प्रभावित किए बिना क्या किया है।

0

यदि आप लॉगस्टैश (ईएलके स्टैक) जैसे रिपोर्टर का उपयोग करते हैं तो आप लॉग को पार्स करते समय कुछ गणना कर सकते हैं। Nginx:

grok { 
     match => { 
     "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:verb} %{URIPATHPARAM:logMessage} HTTP/%{NUMBER:httpversion}\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:\"(?:%{URI:referrer}|-)\"|%{QS:referrer}) %{QS:agent} rt=%{NUMBER:duration_sec} cid=%{GREEDYDATA:correlationId}" 
     } 
} 
mutate { convert => [ "duration_sec", "float" ] } 
ruby { code => "event['duration_ms'] = event['duration_sec'].to_f * 1000" } 

आशा है कि इससे मदद मिलती है, मेरे लॉगस्टैश फ़िल्टर में दूसरे को मिलीसेकंड में परिवर्तित करने का मेरा उदाहरण यहां दिया गया है।

संबंधित मुद्दे