PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Linux/Windows में PgBouncer लॉग्स को रोटेट कैसे करें?

विषय में गहराई से जाने से पहले, PgBouncer के बारे में एक संक्षिप्त रूपरेखा, यह PostgreSQL के लिए एक हल्का कनेक्शन पूलर है जो एक या अधिक डेटाबेस में बड़ी संख्या में क्लाइंट कनेक्शन बनाए रखने के लिए प्रसंस्करण समय और संसाधनों को नाटकीय रूप से कम करता है। आमतौर पर उपयोगकर्ता कनेक्शन की संख्या बढ़ाने के लिए उपयोग किया जाता है जिसे उच्च प्रदर्शन वातावरण में नियंत्रित किया जा सकता है। PgBouncer को इंस्टाल/कॉन्फ़िगर करने के बारे में अधिक जानकारी के लिए यहां दस्तावेज़ देखें।
अन्य टूल की तरह, PgBouncer में कनेक्शन, डिस्कनेक्शन, और पूलर_एरर्स को विभिन्न वर्बोसिटी स्तरों के साथ रिकॉर्ड करने के लिए एक  stderr/syslog लॉगिंग आर्किटेक्चर है। अभी तक, लॉगिंग का बड़ा हिस्सा एक ही फाइल "pgbouncer.log" में जाता है और अंतहीन रूप से बढ़ता है। कभी-कभी, लॉग फ़ाइल स्थान पर डिस्क स्थान की कमी के कारण सिस्टम को अनुत्तरदायी बनाने का संभावित जोखिम हो सकता है। वर्तमान में, PgBouncer लॉगिंग में उम्र या आकार के आधार पर लॉग को घुमाने के लिए कोई इन-बिल्ट कॉन्फ़िगरेशन नहीं है, इसलिए यह उपयोगकर्ताओं को वैकल्पिक तरीकों को चुनने के लिए मजबूर करता है। IMO, इसे संभालने के दो तरीके हैं :-

  1. PgBouncer को OS लॉग रोटेशन पर भरोसा करने के लिए "syslog" विधि में कॉन्फ़िगर करें या
  2. “pgbouncer.log” फ़ाइल पर OS उपयोगिताओं का उपयोग करके लॉग रोटेशन को कॉन्फ़िगर करें।

विधि 1:

PgBouncer में syslog को कॉन्फ़िगर करने के लिए यह बहुत सरल है, "syslog" को 1 (डिफ़ॉल्ट 0) पर सेट करें; ओएस लॉग में "syslog_ident" (डिफ़ॉल्ट 'pgbouncer') में लॉग लाइन शुरू करने के लिए एक नाम दें और "syslog_facility" (डिफ़ॉल्ट डेमॉन) में सुविधा विवरण निर्दिष्ट करें। मेरे OS लॉग (/var/log/messages) से एक नमूना आउटपुट:

5 अगस्त 16:54:27 राघव्ट पीजीबाउंसर [62549]:सी-0x1cdfe60:postgres/postgres@unix(62621):6432 लॉगिन प्रयास:db=postgres user=postgres tls=नहीं
अगस्त 5 16:54:27 राघवट पीजीबाउंसर[62549]:एस-0x1ce4b10:पोस्टग्रेज/पोस्टग्रेज@127.0.0.1:5432 सर्वर से नया कनेक्शन (127.0.0.1:38947 से)
अगस्त 5 16 :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 क्लोजिंग क्योंकि:क्लाइंट क्लोज रिक्वेस्ट (आयु =0)

नोट:यदि "syslog" सक्षम है, तो "लॉगफाइल" पैरामीटर पर टिप्पणी करें या रिक्त करें, अन्यथा यह अतिरिक्त लॉगिंग होगा।

विधि 2:

Logrotate OS उपयोगिता में से एक है जिसमें एक ऑपरेटिंग सिस्टम की डिस्क स्थान आवश्यकता को कम करने के लिए लॉग को व्यवस्थित रूप से घुमाने और संग्रह करने की क्षमता है। प्रत्येक लॉग फ़ाइल को दैनिक, साप्ताहिक, मासिक, या जब यह बहुत बड़ी हो जाती है, तब संभाला जा सकता है। एक डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल "/etc/logrotate.conf" लॉग रोटेशन आयु/आकार/अंतराल को परिभाषित करती है। इस टूल का उपयोग करके लॉग को कम डिस्क स्थान के साथ अधिक समय तक रखा जा सकता है। बहुत से लोगों ने उपयोगिता के उपयोग के बारे में स्पष्ट किया है जिसे आप इसे वैसे भी नेट पर खोज सकते हैं, इस प्रकार सीधे कार्यान्वयन चरण में कूद रहे हैं।
सबसे पहले, pgbouncer लॉग के लिए /etc/logrotate.d/ निर्देशिका में एक कॉन्फ़िगरेशन फ़ाइल बनाएं . मैंने इसे नीचे विवरण के साथ "/etc/logrotate.d/pgbouncer" नाम दिया है:

/var/log/pgbouncer/pgbouncer.log {
रोटेट 10
मिसिंगोक
साझा स्क्रिप्ट
सूचना
nocompress
आकार 10m
दैनिक
0640 पोस्टग्रेज पोस्टग्रेज बनाएं
पोस्ट्रोटेट
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||सत्य
एंडस्क्रिप्ट
}

कॉन्फ़िगरेशन फ़ाइल के बारे में, पहली पंक्ति pgbouncer लॉग फ़ाइल स्थान ("logfile" पैरामीटर मान pgbouncer.ini फ़ाइल में) इंगित करती है और इसके बाद वे पैरामीटर हैं जो रोटेशन थ्रेसहोल्ड पर काम करते हैं जैसे; कितनी लॉग फ़ाइलों को बनाए रखना है (घुमाएँ); कोई त्रुटि नहीं जारी करें और अगले लॉग (मिसिंगोक) पर जाएं; पूर्व/पोस्ट रोटेशन (पूर्व-रोटेट/पोस्टरोटेट) किस स्क्रिप्ट को निष्पादित किया जाना चाहिए; एक बार या कई बार पूर्व/पोस्ट स्क्रिप्ट (साझा स्क्रिप्ट) चलाएं; अगर लॉग खाली है तो उसे घुमाएं नहीं (सूचना दें); रोटेशन के बाद एक पुरानी लॉग फ़ाइल को gzip उपयोगिता (compress/nocompress) के साथ संपीड़ित किया जाना चाहिए; कितना आकार लॉग रोटेशन किया जाना चाहिए (आकार); किसी विशेष लॉग को कितनी बार घुमाना है (दैनिक); और नई लॉग फ़ाइल किस अनुमति के लिए होनी चाहिए (बनाएं)।

अब हम 10M आकार के साथ घुमाई गई नई लॉग फ़ाइलें देख सकते हैं। (हम "logrotate -f /etc/logrotate.conf" कमांड से भी रोटेशन को बाध्य कर सकते हैं)

[[email protected] pgbouncer]# ls -lrth
कुल 16K
-rw-r—–. 1 पोस्टग्रेज 10M जुलाई 27 15:30 pgbouncer.log-20160727
-rw-r—– को पोस्टग्रेट करता है। 1 पोस्टग्रेज पोस्टग्रेज 11K जुलाई 27 18:32 pgbouncer.log

यह सही था , अब इसे Windows परिवेश पर जांचें।

विंडोज़ पर:

मैं विंडोज़ यूटिलिटीज के बारे में बहुत कम जानता हूँ, फलस्वरूप मैंने कुछ गुगली की और एक विंडोज़ वर्जन यूटिलिटी मिली जिसका नाम “LogRotateWin” है। जो लॉगरोटेट के लिनक्स संस्करण की तरह ही काम करता है। अधिक विवरण के लिए स्थापना/कॉन्फ़िगरेशन/उपयोग पर उपलब्ध विस्तृत दस्तावेज़ देखें यहां।
आइए देखें कि यह कैसे काम करता है, पहले LogRotateWin का ".msi" संस्करण डाउनलोड करें जो साइट पर उपलब्ध है "logrotateSetup*.zip" फ़ाइल के रूप में। ".msi" फ़ाइल को निकालें और निष्पादित करें, यह उपयोगिता को "c:Program Files (x86)LogRotate" स्थान पर स्थापित करेगा। आप "c:Program Files (x86)LogRotateContent" के अंतर्गत डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल (logrotate.conf) पा सकते हैं।
इसके बाद, "c:Program Files (x86)LogRotateContentlogrotate.conf" फ़ाइल संपादित करें और पूरा पथ निर्दिष्ट करें एक ही रोटेशन पैरामीटर के साथ "pgbouncer.log" फ़ाइल का। विंडोज 10 पर परीक्षण की गई मेरी कॉन्फ़िगरेशन फ़ाइल की एक नमूना प्रति। (नोट:नीचे पैरामीटर मानों का उपयोग उपयोगिता का परीक्षण करने के लिए किया जाता है)

c:प्रोग्राम फ़ाइलें (x86)LogRotateContent>अधिक logrotate.conf
“c:Program Files (x86)PgBouncerlogpgbouncer.log” {
रोटेट 10
कॉपीट्रुनकेट
बनाएं
मिसिंगोक
साझा स्क्रिप्ट
nocompress
आकार 200k
दैनिक
}

सत्यापित करने के लिए, मैंने लॉग रोटेशन को "-f" विकल्प के साथ मजबूर किया है

c:कार्यक्रम फ़ाइलें (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate:बल विकल्प को सही पर सेट करें

ये रहा परिणाम:

C:प्रोग्राम फाइल्स (x86)PgBouncerlog>dir
डिस्क C में वॉल्यूम का कोई लेबल नहीं है।
वॉल्यूम सीरियल नंबर F226-9FFB है

सी की निर्देशिका:प्रोग्राम फ़ाइलें (x86)PgBouncerlog

08/08/2016 01:31 अपराह्न <डीआईआर> .
08/08/2016 01:31 अपराह्न <डीआईआर> ..
08/08/2016 01:31 अपराह्न 0 pgbouncer.log
08/08/2016 01:31 अपराह्न 6,626 pgbouncer.log.1
08/08/2016 01:31 अपराह्न 13,252 pgbouncer.log.2
3 फ़ाइलें 19,878 बाइट्स
2 डीआईआर (ओं) 26,905,051,136 बाइट्स मुफ्त

अच्छा सही !!!.
अधिकांश Linux वितरणों पर, logrotate cronjob के हिस्से के रूप में "logrotate.conf" का उपयोग करके प्रतिदिन चलता है, इसी तरह विंडोज़ पर, हम लॉग को प्रतिदिन घुमाने के लिए Windows कार्य शेड्यूलर में एक कार्य शेड्यूल कर सकते हैं। FYI करें, मैंने "LogRotateWin" उपयोगिता पर सिर्फ एक बुनियादी स्तर पर ज्यादा खोजबीन नहीं की है। अगर आपको कोई समस्या आती है, तो कृपया उसे  लॉगरोटेट जनरल डिस्कशन फ़ोरम . पर पोस्ट करें
पढ़ने के लिए धन्यवाद।
–राघव


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे Acosd () PostgreSQL में काम करता है

  2. PostgreSQL में किसी दिनांक में दिन जोड़ें

  3. क्या एक स्कीमा के साथ एकाधिक डेटाबेस का उपयोग करना बेहतर है, या एकाधिक स्कीमा वाले एक डेटाबेस का उपयोग करना बेहतर है?

  4. PostgreSQL में पेजिंग के लिए कर्सर का उपयोग करना

  5. Postgres . में LIKE और ~ के बीच अंतर