Това е втората част от многосерийния Как да наблюдавате PostgreSQL, работещ вътре в Docker контейнер. В част 1 представих преглед на докер контейнерите, политиките и работата в мрежа. В тази част ще продължим с конфигурацията на docker и накрая ще активираме наблюдение чрез ClusterControl.
PostgreSQL е стара школа база данни с отворен код, чиято популярност все още нараства, широко използвана и приета в повечето облачни среди днес.
Когато се използва вътре в контейнер, той може лесно да се конфигурира и управлява от Docker, като се използват различни тагове за създаването и се изпраща до всеки компютър в света с инсталиран Docker, но това е всичко за Docker.
Сега ще обсъдим PostgreSQL и за начало нека изброим техните шест основни процеса, изпълняващи се едновременно в контейнер от потребителя на ОС, наречен „postgres“, който е различен от потребителя на „postgres“ в базата данни, този е супер потребител.
Не забравяйте, че синята стрелка в изображенията показва команди, въведени в контейнер.
$ ps auxww
Основни процеси на PostgreSQL Първият процес в списъка е PostgreSQL сървърът, а останалите се стартират от него. Техните задължения са основно да анализират какво се случва в сървъра, като подпроцеси, извършващи въвеждане на статистически данни, писане на регистрационни файлове и подобни неща.
Ще използваме ClusterControl, за да наблюдаваме активността вътре в този контейнер с PostgreSQL сървъра и за да направим това, ще трябва да имаме инсталиран SSH, за да ги свържем безопасно.
Secure Shell Server (SSH)
За събиране на информация за контейнера PostgreSQL няма нищо по-добро от SSH. Той дава отдалечен достъп за един IP адрес до друг и това е всичко, от което ClusterControl се нуждае, за да изпълни задачата.
SSH трябва да бъде изтеглен от хранилището и за да го направим, трябва да сме вътре в контейнера.
$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Инсталиране на SSH в контейнера "postgres-2" След инсталирането ще редактираме конфигурацията, ще стартираме услугата, ще настроим парола за root потребителя и накрая ще напуснем контейнера:
$ 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
Конфигуриране на SSH в контейнера "postgres-2", част 1/2 Мониторинг с ClusterControl
ClusterControl има система за задълбочена интеграция, която може да наблюдава всички процеси на PostgreSQL в реално време, като също така идва с библиотека от съветници, за да запази данните защитени, да проследява ефективността на базата данни и, разбира се, да предоставя сигнали, когато се случат аномалии.
С конфигуриран SSH, ClusterControl може да наблюдава хардуерната активност на ОС и да дава информация както за базата данни, така и за външния слой.
Ще стартираме, като стартираме нов контейнер и ще го публикуваме на порта 5000 на нашия компютър, след което ще имаме достъп до системата през нашия браузър.
$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Изпълнение на контейнера "s9s-ccontrol" за Severalnines ClusterControl След като бъде разгърната, остава само SSH конфигурацията и имаме добри новини, тъй като сме в потребителски дефинирана мостова мрежа, можем да използваме DNS!
$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Конфигуриране на SSH в контейнера "postgres-2", част 2/2 След като въведете „yes“ и посочите паролата, предоставена по-рано, е възможно да получите достъп до контейнера „postgres-2“ като root чрез SSH:
$ ssh postgres-2
Успешна проверка на SSH връзката Този нов цвят, светло син, ще се използва по-долу за представяне на дейността в базата данни. В примера по-горе имаме достъп до контейнера „postgres-2“ от „s9s-ccontrol“, но той все още е root потребител. Запазете вниманието и критиките си с мен.
Така че следващата стъпка е да отидете в браузъра и да получите достъп до http://localhost:5000/clustercontrol/users/welcome/ и регистрирайте акаунт или ако вече имате такъв, посетете http://localhost:5000/clustercontrol/users/login .
След това „Импортиране на съществуващ сървър/клъстер“ и въведете по-ранната конфигурация. Разделът „PostgreSQL &TimescaleDB“ трябва да бъде избран. В полето “SSH User” за тази демонстрация просто въведете “root”. След това накрая въведете „Име на клъстера“ и може да бъде всяко име, което искате, е просто кой ще съдържа колкото се може повече необходими PostgreSQL контейнери, които искате да импортирате и наблюдавате.
Импортиране на базата данни "postgres-2", част 1/2Сега е време да въведете информацията за PostgreSQL контейнера, потребителя „postgres“, парола „5af45Q4ae3Xa3Ff4“ и желаните контейнери. Изключително важно е да запомните, че услугата SSH трябва да е активна вътре в контейнера PostgreSQL.
Импортиране на контейнера "postgres-2", част 2/2След като натиснете бутона „Импортиране“, ClusterControl ще започне да управлява PostgreSQL контейнера „postgres-2“ вътре в клъстера, наречен „PostgreSQL“, и ще информира кога процесът на импортиране приключи.
Регистрирайте се за процеса на импортиране на контейнера "postgres-2"След като приключите, системата ще бъде показана под раздела Клъстери, нашият най-скоро създаден клъстер и различни опции, разделени в секции
Първата ни стъпка за визуализация ще бъде в опцията Преглед.
PostgreSQL клъстерът е импортиран успешноКакто можете да си представите, нашата база данни е празна и тук нямаме хаос за нашето забавление, но графиката все още работи, като е ангажирана в малък мащаб, съдържащ статистически данни за SQL и процесите на базата данни.
Показване на статистически данни за SQL и активността на базата данниСимулация на сценарий в реалния свят
За да предприема някои действия, създадох CSV файл с помощта на Python, изследвайки хранилището на GitHub на Socratica, който предоставя невероятни курсове в YouTube и те правят тези файлове достъпни безплатно.
В обобщение, създаденият CSV файл има 9 милиона, 999 хиляди и 999 записа за лица, всеки от които съдържа ID, собствено име, фамилия и рожден ден. Размерът на файла е 324 MB:
$ du -s -h persons.csv
Проверка на размера на 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 файла в контейнера и въвеждане в базата данни Добре, така че сега сме в базата данни, като супер потребител „postgres“, моля, обърнете внимание на различните цветове в стрелките.
Сега трябва да създадем базата данни, таблицата и да я попълним с данните, съдържащи се в 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;
Свързване с новата база данни и импортиране на CSV файла Този процес отнема няколко минути, за да завърши.
Добре, сега нека да въведем някои заявки:
Запитвания в базата данни "severalnines"Ако погледнете ClusterControl сега, се случи известно движение в статистическите данни за хардуера:
Показване на статистически данни за CPU вътре в ClusterControlЦяла секция за наблюдение на заявките е снабдена с лесен за използване потребителски интерфейс:
Показване на статистически данни за заявките в ClusterControlСтатистическите данни за базата данни PostgreSQL служат на най-добрите администратори на база данни, за да изпълнят целия си потенциал при основните си задължения, а ClusterControl е цялостна система за анализиране на всяка дейност, която се случва в реално време, предоставяща информация въз основа на всички данни, събрани от процесите на базата данни.
С ClusterControl DBA също може лесно да разшири уменията си, като използва пълен набор от инструменти за създаване на резервни копия локално или в облака, репликации, балансьори на натоварване, интеграции с услуги, LDAP, ChatOps, Prometheus и много други.
Заключение
Чрез тази статия ние конфигурирахме PostgreSQL вътре в Docker и се интегрирахме с ClusterControl, използвайки User-Defined Bridge Network и SSH, симулирахме сценарий, попълващ базата данни с CSV файл и след това направихме цялостна бърза проверка в потребителския интерфейс на ClusterControl .