यह बहु-श्रृंखला का दूसरा भाग है कि कैसे एक डॉकटर कंटेनर के अंदर चल रहे PostgreSQL की निगरानी करें। भाग 1 में, मैंने डॉकटर कंटेनरों, नीतियों और नेटवर्किंग का अवलोकन प्रस्तुत किया। इस भाग में हम docker कॉन्फ़िगरेशन के साथ जारी रखेंगे और अंत में ClusterControl के माध्यम से निगरानी सक्षम करेंगे।
PostgreSQL एक पुराना स्कूल, ओपन-सोर्स डेटाबेस है जिसकी लोकप्रियता अभी भी बढ़ रही है, जिसे आज के अधिकांश क्लाउड वातावरण में व्यापक रूप से उपयोग और स्वीकार किया जा रहा है।
जब इसे एक कंटेनर के अंदर इस्तेमाल किया जाता है तो इसे डॉकर द्वारा आसानी से कॉन्फ़िगर और प्रबंधित किया जा सकता है, निर्माण के लिए अलग-अलग टैग का उपयोग करके और डॉकर स्थापित दुनिया के किसी भी कंप्यूटर पर भेज दिया जाता है, लेकिन यह सब डॉकर के बारे में है।
अब हम पोस्टग्रेएसक्यूएल के बारे में चर्चा करेंगे, और शुरू करने के लिए, ओएस उपयोगकर्ता द्वारा "पोस्टग्रेज" नामक कंटेनर के अंदर एक साथ चलने वाली उनकी छह मुख्य प्रक्रियाओं को सूचीबद्ध करते हैं, जो डेटाबेस के अंदर "पोस्टग्रेज" उपयोगकर्ता से अलग है, वह एक एक सुपर उपयोगकर्ता है।
याद रखें कि छवियों में नीला तीर एक कंटेनर के अंदर दर्ज किए गए आदेशों को प्रदर्शित कर रहा है।
$ ps auxww

सूची में पहली प्रक्रिया PostgreSQL सर्वर है, और अन्य उसके द्वारा शुरू किए गए हैं। उनका कर्तव्य मूल रूप से विश्लेषण करना है कि सर्वर में क्या हो रहा है, उप-प्रक्रियाएं जो सांख्यिकी इनपुट, लेखन लॉग और इस प्रकार की चीजों का प्रदर्शन करती हैं।
हम PostgreSQL सर्वर वाले इस कंटेनर के अंदर गतिविधि की निगरानी के लिए ClusterControl का उपयोग करेंगे, और ऐसा करने के लिए हमें उन्हें सुरक्षित रूप से कनेक्ट करने के लिए SSH स्थापित करने की आवश्यकता होगी।
सुरक्षित शेल सर्वर (SSH)
PostgreSQL कंटेनर के बारे में जानकारी एकत्र करने के लिए SSH से बेहतर कुछ नहीं है। यह एक आईपी पते के लिए दूसरे को रिमोट एक्सेस देता है, और यह सभी क्लस्टर कंट्रोल को काम करने की जरूरत है।
SSH को रिपॉजिटरी से डाउनलोड करने की जरूरत है, और ऐसा करने के लिए हमें कंटेनर के अंदर होना चाहिए।
$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client

इंस्टॉल करने के बाद हम कॉन्फ़िगरेशन संपादित करेंगे, सेवा शुरू करेंगे, रूट उपयोगकर्ता के लिए पासवर्ड सेट करेंगे, और अंत में कंटेनर छोड़ देंगे:
$ sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ service ssh start
$ passwd
$ exit

ClusterControl के साथ निगरानी
ClusterControl में एक गहन एकीकरण प्रणाली है जो वास्तविक समय में PostgreSQL की सभी प्रक्रियाओं की निगरानी करने में सक्षम है, साथ ही डेटा को सुरक्षित रखने, डेटाबेस के प्रदर्शन को ट्रैक करने और विसंगतियों के होने पर अलर्ट प्रदान करने के लिए सलाहकारों की एक लाइब्रेरी के साथ भी आ रही है।पी>
SSH कॉन्फ़िगर होने के साथ, ClusterControl OS हार्डवेयर गतिविधि की निगरानी कर सकता है और डेटाबेस और बाहरी परत दोनों के बारे में जानकारी दे सकता है।
हम एक नया कंटेनर चलाएंगे, और इसे अपने कंप्यूटर के पोर्ट 5000 पर प्रकाशित करेंगे, फिर हम अपने ब्राउज़र के माध्यम से सिस्टम तक पहुंच पाएंगे।
$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol

एक बार तैनात करने के बाद, केवल एसएसएच कॉन्फ़िगरेशन रहता है, और हमारे पास अच्छी खबर है, क्योंकि हम उपयोगकर्ता-परिभाषित ब्रिज नेटवर्क में हैं, हम डीएनएस का उपयोग कर सकते हैं!
$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2

"हां" दर्ज करने के बाद और पहले प्रदान किया गया पासवर्ड निर्दिष्ट करें, एसएसएच का उपयोग करके "पोस्टग्रेस -2" कंटेनर को रूट के रूप में एक्सेस करना संभव है:
$ ssh postgres-2

यह नया रंग, हल्का नीला, डेटाबेस के अंदर गतिविधि का प्रतिनिधित्व करने के लिए निम्नलिखित में उपयोग किया जाएगा। ऊपर के उदाहरण में हमने "s9s-ccontrol" से "postgres-2" कंटेनर को एक्सेस किया है, लेकिन यह अभी भी रूट यूजर है। अपना ध्यान और आलोचना मेरे पास रखें।
तो अगला कदम ब्राउज़र में जाकर http://localhost:5000/clustercontrol/users/welcome/ तक पहुंचना है। और एक खाता पंजीकृत करें, या यदि आपके पास पहले से एक है, तो http://localhost:5000/clustercontrol/users/login पर जाएं। ।
फिर "मौजूदा सर्वर/क्लस्टर आयात करें" और पहले के कॉन्फ़िगरेशन को दर्ज करें। टैब "PostgreSQL और TimescaleDB" का चयन किया जाना चाहिए। इस प्रदर्शन के लिए "एसएसएच उपयोगकर्ता" क्षेत्र में बस "रूट" टाइप करें। फिर अंत में "क्लस्टर नाम" दर्ज करें, और यह कोई भी नाम हो सकता है जो आप चाहते हैं, बस इतना आवश्यक पोस्टग्रेएसक्यूएल कंटेनर कौन रखेगा जिसे आप आयात और मॉनिटर करना चाहते हैं।

अब PostgreSQL कंटेनर, उपयोगकर्ता "पोस्टग्रेज", पासवर्ड "5af45Q4ae3Xa3Ff4" और वांछित कंटेनरों के बारे में जानकारी दर्ज करने का समय आ गया है। यह याद रखना अत्यंत महत्वपूर्ण है कि SSH सेवा PostgreSQL कंटेनर के अंदर सक्रिय होनी चाहिए।

"आयात" बटन दबाने के बाद, ClusterControl "PostgreSQL" नामक क्लस्टर के अंदर PostgreSQL कंटेनर "postgres-2" को प्रबंधित करना शुरू कर देगा, और यह सूचित करेगा कि आयात की प्रक्रिया कब की जाती है।

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

जैसा कि आप कल्पना कर सकते हैं, हमारा डेटाबेस खाली है और हमारे मनोरंजन के लिए यहां कोई अराजकता नहीं है, लेकिन ग्राफिक अभी भी एसक्यूएल और डेटाबेस प्रक्रियाओं के बारे में आंकड़ों वाले छोटे पैमाने पर काम कर रहा है।

वास्तविक विश्व परिदृश्य सिमुलेशन
कुछ कार्रवाई करने के लिए, मैंने सुकरातिका के गिटहब भंडार की खोज करते हुए पायथन का उपयोग करके एक सीएसवी फ़ाइल बनाई है, जो यूट्यूब पर अद्भुत पाठ्यक्रम प्रदान करता है, और वे उन फाइलों को मुफ्त में उपलब्ध कराते हैं।
संक्षेप में, बनाई गई CSV फ़ाइल में व्यक्तियों के बारे में 9 मिलियन, 999 हज़ार और 999 रिकॉर्ड हैं, जिनमें से प्रत्येक में ID, प्रथम नाम, उपनाम और जन्मदिन है। फ़ाइल का आकार 324 एमबी है:
$ du -s -h persons.csv

हम इस CSV फ़ाइल को PostgreSQL कंटेनर में कॉपी करेंगे, फिर इसे फिर से कॉपी करेंगे लेकिन इस बार डेटाबेस में, और अंत में ClusterControl में आँकड़ों की जाँच करेंगे।
$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql

ठीक है, तो अब हम डेटाबेस में हैं, सुपर उपयोगकर्ता "पोस्टग्रेज" के रूप में, कृपया तीरों में विभिन्न रंगों पर ध्यान दें।
अब, हमें डेटाबेस, तालिका बनानी होगी, और इसे CSV फ़ाइल में निहित डेटा से भरना होगा, और अंत में जांचना होगा कि क्या सब कुछ ठीक काम कर रहा है।
$ CREATE DATABASE severalnines;
$ \c severalnines;
$ CREATE TABLE persons (id SERIAL NOT NULL, first_name VARCHAR(50), last_name VARCHAR(50), birthday DATE, CONSTRAINT persons_pkey PRIMARY KEY (id));
$ COPY persons (id, first_name, last_name, birthday) FROM '/persons.csv' DELIMITER ',' CSV HEADER;

इस प्रक्रिया को पूरा होने में कुछ मिनट लगते हैं।
ठीक है, तो चलिए अब कुछ प्रश्न दर्ज करते हैं:

यदि आप अभी ClusterControl को देखें, तो हार्डवेयर के आँकड़ों में कुछ हलचल हुई:

प्रश्नों की निगरानी के लिए एक संपूर्ण खंड यूआई के उपयोग में आसानी के साथ प्रदान किया गया है:

PostgreSQL डेटाबेस के बारे में आंकड़े अपने मुख्य कर्तव्यों पर अपनी पूरी क्षमता का प्रदर्शन करने के लिए सर्वश्रेष्ठ DBA की सेवा करते हैं, और ClusterControl डेटाबेस प्रक्रियाओं से एकत्र किए गए सभी डेटा के आधार पर जानकारी देते हुए, वास्तविक समय पर होने वाली हर गतिविधि का विश्लेषण करने के लिए एक पूर्ण प्रणाली है।
क्लस्टरकंट्रोल के साथ डीबीए स्थानीय रूप से या क्लाउड में बैकअप बनाने, प्रतिकृतियां, लोड बैलेंसर्स, सेवाओं के साथ एकीकरण, एलडीएपी, चैटऑप्स, प्रोमेथियस और बहुत कुछ बनाने के लिए टूल के एक पूर्ण सेट का उपयोग करके आसानी से अपने कौशल का विस्तार कर सकता है।
निष्कर्ष
इस लेख के माध्यम से, हम Docker के अंदर PostgreSQL को कॉन्फ़िगर कर रहे हैं, और उपयोगकर्ता-परिभाषित ब्रिज नेटवर्क और SSH का उपयोग करके ClusterControl के साथ एकीकृत कर रहे हैं, एक CSV फ़ाइल के साथ डेटाबेस को पॉप्युलेट करने वाले परिदृश्य का अनुकरण कर रहे हैं, और फिर ClusterControl उपयोगकर्ता इंटरफ़ेस में एक समग्र त्वरित जाँच कर रहे हैं। ।