Đây là phần thứ hai của loạt bài Cách theo dõi PostgreSQL Chạy bên trong Docker Container. Trong Phần 1, tôi đã trình bày tổng quan về bộ chứa docker, chính sách và mạng. Trong phần này, chúng ta sẽ tiếp tục với cấu hình docker và cuối cùng là kích hoạt tính năng giám sát qua ClusterControl.
PostgreSQL là một cơ sở dữ liệu mã nguồn mở lâu đời nhưng mức độ phổ biến vẫn đang tăng lên, được sử dụng rộng rãi và được chấp nhận trên hầu hết các môi trường đám mây ngày nay.
Khi được sử dụng bên trong vùng chứa, Docker có thể dễ dàng định cấu hình và quản lý nó, sử dụng các thẻ khác nhau để tạo và chuyển đến bất kỳ máy tính nào trên thế giới có cài đặt Docker, nhưng đây là tất cả về Docker.
Bây giờ chúng ta sẽ thảo luận về PostgreSQL và để bắt đầu, hãy liệt kê sáu quy trình chính của chúng chạy đồng thời bên trong một vùng chứa bởi người dùng OS có tên là “postgres”, một quy trình khác với người dùng “postgres” bên trong cơ sở dữ liệu, đó là là một siêu người dùng.
Hãy nhớ rằng mũi tên màu xanh lam trong các hình ảnh đang hiển thị các lệnh được nhập vào bên trong vùng chứa.
$ ps auxww
Các quy trình chính của PostgreSQL Quy trình đầu tiên trong danh sách là máy chủ PostgreSQL, và các quy trình khác do anh ta bắt đầu. Nhiệm vụ của họ về cơ bản là phân tích những gì đang diễn ra trong máy chủ, là các quy trình phụ thực hiện đầu vào thống kê, ghi nhật ký và những thứ này.
Chúng tôi sẽ sử dụng ClusterControl để giám sát hoạt động bên trong vùng chứa này có máy chủ PostgreSQL và để làm như vậy, chúng tôi sẽ cần cài đặt SSH để kết nối chúng một cách an toàn.
Máy chủ bảo mật (SSH)
Để thu thập thông tin về vùng chứa PostgreSQL, không gì tốt hơn là SSH. Nó cấp quyền truy cập từ xa cho một địa chỉ IP này đến một địa chỉ IP khác và đây là tất cả những gì ClusterControl cần để thực hiện công việc.
SSH cần được tải xuống từ kho lưu trữ và để làm như vậy, chúng ta phải ở bên trong vùng chứa.
$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Cài đặt SSH trong vùng chứa "postgres-2" Sau khi cài đặt, chúng tôi sẽ chỉnh sửa cấu hình, khởi động dịch vụ, thiết lập mật khẩu cho người dùng gốc và cuối cùng là rời khỏi vùng chứa:
$ 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
Định cấu hình SSH trong vùng chứa "postgres-2", phần 1/2 Giám sát với ClusterControl
ClusterControl có một hệ thống tích hợp chuyên sâu có thể giám sát tất cả các quy trình của PostgreSQL trong thời gian thực, cũng đi kèm với thư viện Cố vấn để giữ cho dữ liệu an toàn, theo dõi hiệu suất cơ sở dữ liệu và tất nhiên là cung cấp cảnh báo khi xảy ra bất thường.
Với SSH được định cấu hình, ClusterControl có thể giám sát hoạt động phần cứng của hệ điều hành và cung cấp thông tin chi tiết về cả cơ sở dữ liệu và lớp bên ngoài.
Chúng tôi sẽ chạy một vùng chứa mới và xuất bản nó lên cổng 5000 trên máy tính của chúng tôi, sau đó chúng tôi sẽ có thể truy cập hệ thống thông qua trình duyệt của mình.
$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Chạy vùng chứa "s9s-ccontrol" cho vàinines ClusterControl Sau khi được triển khai, chỉ còn lại cấu hình SSH và chúng tôi có tin tốt là vì chúng tôi nằm trong Mạng cầu nối do người dùng xác định, chúng tôi có thể sử dụng DNS!
$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Định cấu hình SSH trong vùng chứa "postgres-2", phần 2/2 Sau khi nhập “có” và chỉ định mật khẩu đã cung cấp trước đó, bạn có thể truy cập vùng chứa “postgres-2” với tư cách là người chủ bằng cách sử dụng SSH:
$ ssh postgres-2
Kiểm tra kết nối SSH thành công Màu mới này, màu xanh lam nhạt, sẽ được sử dụng trong phần sau để thể hiện hoạt động bên trong cơ sở dữ liệu. Trong ví dụ trên, chúng tôi đã truy cập vùng chứa “postgres-2” từ “s9s-ccontrol”, nhưng đó vẫn là người dùng gốc. Hãy giữ sự chú ý và những lời chỉ trích của bạn với tôi.
Vì vậy, bước tiếp theo là vào trình duyệt và truy cập http:// localhost:5000 / clustercontrol / users / welcome / và đăng ký tài khoản hoặc nếu bạn đã có tài khoản, hãy truy cập http:// localhost:5000 / clustercontrol / users / login .
Sau đó “Nhập máy chủ / cụm hiện có” và nhập cấu hình trước đó. Tab “PostgreSQL &TimescaleDB” phải được chọn. Trong trường “Người dùng SSH” cho phần trình diễn này, chỉ cần nhập “root”. Sau đó, cuối cùng nhập “Tên cụm”, và nó có thể là bất kỳ tên nào bạn muốn, đơn giản là người sẽ chứa nhiều vùng chứa PostgreSQL cần thiết mà bạn muốn nhập và giám sát.
Nhập cơ sở dữ liệu "postgres-2", phần 1/2Bây giờ đã đến lúc nhập thông tin về vùng chứa PostgreSQL, Người dùng “postgres”, Mật khẩu “5af45Q4ae3Xa3Ff4” và các vùng chứa mong muốn. Điều cực kỳ quan trọng cần nhớ là dịch vụ SSH phải hoạt động bên trong vùng chứa PostgreSQL.
Nhập vùng chứa "postgres-2", phần 2/2Sau khi nhấn nút “Nhập”, ClusterControl sẽ bắt đầu quản lý vùng chứa PostgreSQL “postgres-2” bên trong Cụm có tên “PostgreSQL” và nó sẽ thông báo khi quá trình nhập hoàn tất.
Nhật ký về quá trình nhập vùng chứa "postgres-2"Sau khi hoàn tất, hệ thống sẽ được hiển thị trong tab Cụm, Cụm được tạo gần đây nhất của chúng tôi và các tùy chọn khác nhau được phân tách trong các phần
Bước hình dung đầu tiên của chúng tôi sẽ nằm trong tùy chọn Tổng quan.
Đã nhập thành công cụm PostgreSQLNhư bạn có thể tưởng tượng, cơ sở dữ liệu của chúng tôi trống và chúng tôi không có bất kỳ sự hỗn loạn nào ở đây để giải trí, nhưng đồ họa vẫn hoạt động khi tham gia vào một quy mô nhỏ có chứa số liệu thống kê về các quy trình SQL và Cơ sở dữ liệu.
Hiển thị thống kê về hoạt động của SQL và Cơ sở dữ liệuMô phỏng tình huống trong thế giới thực
Để thực hiện một số hành động, tôi đã tạo một tệp CSV bằng Python, khám phá kho lưu trữ GitHub của Socratica, người cung cấp các khóa học tuyệt vời trên YouTube và họ cung cấp các tệp đó miễn phí.
Tóm lại, tệp CSV được tạo có 9 triệu, 999 nghìn và 999 bản ghi về người, mỗi bản ghi chứa ID, tên, họ và ngày sinh. Kích thước của tệp là 324 MB:
$ du -s -h persons.csv
Kiểm tra kích thước của tệp CSV Chúng tôi sẽ sao chép tệp CSV này vào vùng chứa PostgreSQL, sau đó sao chép lại nhưng lần này vào cơ sở dữ liệu và cuối cùng kiểm tra thống kê trong 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
Chuyển tệp CSV vào vùng chứa và nhập vào cơ sở dữ liệu Được rồi, bây giờ chúng ta đang ở trong cơ sở dữ liệu, với tư cách là siêu người dùng “postgres”, hãy lưu ý các màu khác nhau trong các mũi tên.
Bây giờ, chúng ta phải tạo cơ sở dữ liệu, bảng và điền nó với dữ liệu có trong tệp CSV và cuối cùng kiểm tra xem mọi thứ có hoạt động tốt hay không.
$ 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;
Kết nối với cơ sở dữ liệu mới và nhập tệp CSV Quá trình này mất vài phút để hoàn thành.
Được rồi, bây giờ chúng ta hãy nhập một số truy vấn:
Truy vấn trong cơ sở dữ liệu "vàinines"Nếu bạn nhìn vào ClusterControl bây giờ, một số chuyển động trong số liệu thống kê về phần cứng đã xảy ra:
Hiển thị thống kê về CPU bên trong ClusterControlToàn bộ phần để theo dõi các truy vấn được cung cấp với giao diện người dùng dễ sử dụng:
Hiển thị thống kê về các Truy vấn bên trong ClusterControlThống kê về cơ sở dữ liệu PostgreSQL phục vụ các DBA tốt nhất thực hiện toàn bộ tiềm năng của họ cho các nhiệm vụ chính của họ và ClusterControl là một hệ thống hoàn chỉnh để phân tích mọi hoạt động diễn ra theo thời gian thực, cung cấp thông tin dựa trên tất cả dữ liệu được thu thập từ các quy trình cơ sở dữ liệu.
Với ClusterControl, DBA cũng có thể dễ dàng mở rộng kỹ năng của họ bằng cách sử dụng bộ công cụ đầy đủ để tạo Sao lưu cục bộ hoặc trong Đám mây, Bản sao, Bộ cân bằng tải, tích hợp với dịch vụ, LDAP, ChatOps, Prometheus, v.v.
Kết luận
Thông qua bài viết này, chúng tôi đã định cấu hình PostgreSQL bên trong Docker và tích hợp với ClusterControl bằng cách sử dụng Mạng cầu nối do người dùng xác định và SSH, mô phỏng một kịch bản đưa cơ sở dữ liệu vào tệp CSV và sau đó thực hiện kiểm tra nhanh tổng thể trong giao diện người dùng ClusterControl .