Khi bạn đã thiết lập và chạy cơ sở hạ tầng cơ sở dữ liệu của mình, bạn sẽ cần phải theo dõi những gì đang xảy ra. Giám sát là điều bắt buộc nếu bạn muốn chắc chắn rằng mọi thứ vẫn diễn ra tốt đẹp hoặc nếu bạn có thể cần phải thay đổi điều gì đó.
Đối với mỗi công nghệ cơ sở dữ liệu, có một số điều cần theo dõi. Một số trong số này dành riêng cho công cụ cơ sở dữ liệu hoặc nhà cung cấp hoặc thậm chí là phiên bản cụ thể mà bạn đang sử dụng.
Trong blog này, chúng tôi sẽ xem xét những gì bạn cần theo dõi trong môi trường PostgreSQL.
Những gì cần theo dõi trong PostgreSQL
Khi theo dõi một cụm hoặc nút cơ sở dữ liệu, có hai điều chính cần lưu ý:hệ điều hành và chính cơ sở dữ liệu. Bạn sẽ cần xác định những chỉ số nào bạn sẽ theo dõi từ cả hai phía và cách bạn sẽ thực hiện điều đó. Bạn cần phải luôn theo dõi số liệu trong ngữ cảnh hệ thống của mình và bạn nên tìm kiếm các thay đổi trên mẫu hành vi.
Trong hầu hết các trường hợp, bạn sẽ cần sử dụng một số công cụ (vì gần như không thể tìm thấy một công cụ để bao gồm tất cả các số liệu mong muốn.)
Hãy nhớ rằng khi một trong các chỉ số của bạn bị ảnh hưởng, chỉ số đó cũng có thể ảnh hưởng đến những chỉ số khác, khiến việc khắc phục sự cố trở nên phức tạp hơn. Có một hệ thống cảnh báo và giám sát tốt là điều quan trọng để làm cho nhiệm vụ này trở nên đơn giản nhất có thể.
Giám sát Hệ điều hành
Một điều quan trọng (phổ biến cho tất cả các công cụ cơ sở dữ liệu và thậm chí cho tất cả hệ thống) là để giám sát hành vi của Hệ điều hành. Dưới đây là một số điểm cần kiểm tra tại đây.
Sử dụng CPU
Phần trăm sử dụng CPU quá mức có thể là một vấn đề nếu đó không phải là hành vi bình thường. Trong trường hợp này, điều quan trọng là phải xác định quy trình / quy trình đang tạo ra vấn đề này. Nếu vấn đề là do quy trình cơ sở dữ liệu, bạn sẽ cần phải kiểm tra xem điều gì đang xảy ra bên trong cơ sở dữ liệu.
Bộ nhớ RAM hoặc Sử dụng SWAP
Nếu bạn thấy giá trị cao cho số liệu này và không có gì thay đổi trong hệ thống của mình, bạn có thể cần kiểm tra cấu hình cơ sở dữ liệu của mình. Các tham số như shared_buffers và work_mem có thể ảnh hưởng trực tiếp đến điều này vì chúng xác định dung lượng bộ nhớ có thể sử dụng cho cơ sở dữ liệu PostgreSQL.
Sử dụng đĩa
Sự gia tăng bất thường trong việc sử dụng dung lượng đĩa hoặc tiêu thụ quá nhiều quyền truy cập đĩa là những điều quan trọng cần theo dõi vì bạn có thể có nhiều lỗi được ghi trong tệp nhật ký PostgreSQL hoặc cấu hình bộ đệm kém có thể tạo ra mức tiêu thụ quyền truy cập đĩa quan trọng thay vì sử dụng bộ nhớ để xử lý các truy vấn.
Tải trung bình
Nó liên quan đến ba điểm được đề cập ở trên. Mức trung bình tải cao có thể do sử dụng CPU, RAM hoặc đĩa quá mức.
Mạng
Sự cố mạng có thể ảnh hưởng đến tất cả các hệ thống vì ứng dụng không thể kết nối (hoặc kết nối các gói bị mất) với cơ sở dữ liệu, vì vậy, đây là một chỉ số quan trọng cần theo dõi. Bạn có thể theo dõi độ trễ hoặc mất gói và vấn đề chính có thể là bão hòa mạng, sự cố phần cứng hoặc chỉ là cấu hình mạng kém.
Giám sát Cơ sở dữ liệu PostgreSQL
Theo dõi cơ sở dữ liệu PostgreSQL của bạn không chỉ quan trọng để xem liệu bạn có đang gặp sự cố hay không mà còn để biết liệu bạn có cần thay đổi điều gì đó để cải thiện hiệu suất cơ sở dữ liệu của mình hay không, đó có lẽ là một trong những điều quan trọng nhất những thứ cần theo dõi trong cơ sở dữ liệu. Hãy xem một số chỉ số quan trọng cho việc này.
Giám sát Truy vấn
Theo mặc định, PostgreSQL được định cấu hình có tính đến tính tương thích và ổn định, vì vậy bạn cần biết các truy vấn của mình và mẫu của nó, đồng thời định cấu hình cơ sở dữ liệu của bạn tùy thuộc vào lưu lượng truy cập mà bạn có. Tại đây, bạn có thể sử dụng lệnh EXPLAIN để kiểm tra kế hoạch truy vấn cho một truy vấn cụ thể và bạn cũng có thể theo dõi số lượng CHỌN, CHÈN, CẬP NHẬT hoặc XÓA trên mỗi nút. Nếu bạn có một truy vấn dài hoặc một số lượng lớn các truy vấn chạy cùng một lúc, đó có thể là một vấn đề đối với tất cả các hệ thống.
Theo dõi Phiên hoạt động
Bạn cũng nên theo dõi số lượng phiên hoạt động. Nếu bạn đang ở gần giới hạn, bạn cần kiểm tra xem có điều gì không ổn hoặc bạn chỉ cần tăng giá trị max_connections. Sự khác biệt về số lượng có thể là sự tăng hoặc giảm các kết nối. Việc sử dụng không hợp lệ để tổng hợp kết nối, khóa hoặc sự cố mạng là những sự cố phổ biến nhất liên quan đến số lượng kết nối.
Khóa Cơ sở dữ liệu
Nếu bạn có một truy vấn đang chờ một truy vấn khác, bạn cần kiểm tra xem truy vấn khác đó là một quy trình bình thường hay là một quy trình mới. Trong một số trường hợp, nếu ai đó đang thực hiện cập nhật trên một bảng lớn, chẳng hạn, hành động này có thể ảnh hưởng đến hoạt động bình thường của cơ sở dữ liệu của bạn, tạo ra số lượng khóa cao.
Giám sát Nhân rộng
Các chỉ số chính cần theo dõi để tái tạo là độ trễ và trạng thái sao chép. Các vấn đề phổ biến nhất là vấn đề mạng, vấn đề tài nguyên phần cứng hoặc vấn đề đo kích thước. Nếu bạn đang đối mặt với vấn đề sao chép, bạn sẽ cần biết điều này càng sớm càng tốt vì bạn sẽ cần khắc phục nó để đảm bảo môi trường có tính khả dụng cao.
Giám sát Sao lưu
Tránh mất dữ liệu là một trong những tác vụ cơ bản của DBA, vì vậy bạn không chỉ cần thực hiện sao lưu mà còn phải biết liệu quá trình sao lưu đã hoàn tất chưa và liệu nó có thể sử dụng được hay không. Thông thường, điểm cuối cùng này không được tính đến, nhưng có lẽ đây là bước kiểm tra quan trọng nhất trong quá trình sao lưu.
Nhật ký Cơ sở dữ liệu Giám sát
Bạn nên theo dõi nhật ký cơ sở dữ liệu của mình để tìm các lỗi như FATAL hoặc deadlock, hoặc thậm chí các lỗi phổ biến như vấn đề xác thực hoặc các truy vấn chạy dài. Hầu hết các lỗi được ghi trong tệp nhật ký với thông tin chi tiết hữu ích để khắc phục.
Tác động của Giám sát đến Hiệu suất Cơ sở dữ liệu PostgreSQL
Mặc dù phải theo dõi nhưng nó thường không miễn phí. Luôn có một khoản chi phí đối với hiệu suất cơ sở dữ liệu, tùy thuộc vào mức độ bạn đang theo dõi, vì vậy bạn nên tránh theo dõi những thứ mà bạn không sử dụng.
Nói chung, có hai cách để theo dõi cơ sở dữ liệu của bạn, từ nhật ký hoặc từ phía cơ sở dữ liệu bằng cách truy vấn.
Trong trường hợp nhật ký, để có thể sử dụng chúng, bạn cần có cấp độ ghi nhật ký cao, tạo ra quyền truy cập đĩa cao và nó có thể ảnh hưởng đến hiệu suất của cơ sở dữ liệu của bạn.
Đối với chế độ truy vấn, mỗi kết nối đến cơ sở dữ liệu đều sử dụng tài nguyên, do đó, tùy thuộc vào hoạt động của cơ sở dữ liệu của bạn và tài nguyên được chỉ định, nó cũng có thể ảnh hưởng đến hiệu suất.
Công cụ giám sát PostgreSQL
Có một số tùy chọn công cụ để theo dõi cơ sở dữ liệu của bạn. Nó có thể là một công cụ PostgreSQL tích hợp sẵn, như các tiện ích mở rộng hoặc một số công cụ bên ngoài. Hãy xem một số ví dụ về các công cụ này.
Tiện ích mở rộng
- Pg_stat_statements :Phần mở rộng này sẽ giúp bạn biết cấu hình truy vấn của cơ sở dữ liệu của bạn. Nó theo dõi tất cả các truy vấn được thực thi và lưu trữ nhiều thông tin hữu ích trong một bảng được gọi là pg_stat_statements. Bằng cách truy vấn bảng này, bạn có thể biết được những truy vấn nào đang chạy trong hệ thống, số lần chúng đã chạy và thời gian chúng đã tiêu tốn, cùng với những thông tin khác.
- Pgbadger :Đây là một phần mềm thực hiện phân tích nhật ký PostgreSQL và hiển thị chúng trong một tệp HTML. Nó giúp bạn hiểu hoạt động của cơ sở dữ liệu của mình và xác định những truy vấn nào cần được tối ưu hóa.
- Pgstattuple :Nó có thể tạo thống kê cho các bảng và chỉ mục, cho biết lượng không gian được sử dụng bởi mỗi bảng và chỉ mục, được sử dụng bởi các bộ dữ liệu trực tiếp, các bộ dữ liệu đã xóa hoặc lượng không gian chưa sử dụng có sẵn trong mỗi mối quan hệ.
- Pg_buffercache :Với tính năng này, bạn có thể kiểm tra điều gì đang xảy ra trong bộ đệm chia sẻ bộ đệm trong thời gian thực, cho biết số lượng trang hiện đang được giữ trong bộ đệm.
Công cụ Giám sát Bên ngoài
- ClusterControl :Đó là một hệ thống quản lý và giám sát giúp triển khai, quản lý, giám sát và mở rộng quy mô cơ sở dữ liệu của bạn từ một giao diện thân thiện. ClusterControl hỗ trợ các công nghệ cơ sở dữ liệu mã nguồn mở hàng đầu và bạn có thể tự động hóa nhiều tác vụ cơ sở dữ liệu mà bạn phải thực hiện thường xuyên như thêm và mở rộng các nút mới, chạy sao lưu và khôi phục, v.v.
- Nagios :Đó là một hệ thống Nguồn mở và ứng dụng giám sát mạng. Nó giám sát các máy chủ hoặc dịch vụ và quản lý các cảnh báo cho các trạng thái khác nhau. Với công cụ này, bạn có thể giám sát các dịch vụ mạng, tài nguyên máy chủ lưu trữ và hơn thế nữa. Để theo dõi PostgreSQL, bạn có thể sử dụng một số plugin hoặc bạn có thể tạo tập lệnh của riêng mình để kiểm tra cơ sở dữ liệu của mình.
- Zabbix :Đây là một phần mềm có thể giám sát cả mạng và máy chủ. Nó sử dụng một cơ chế thông báo linh hoạt cho phép người dùng cấu hình cảnh báo qua email. Nó cũng cung cấp các báo cáo và trực quan hóa dữ liệu dựa trên dữ liệu được lưu trữ. Tất cả các báo cáo và thống kê của Zabbix, cũng như các thông số cấu hình, đều được truy cập thông qua giao diện web.
Trang tổng quan
Khả năng hiển thị hữu ích để phát hiện sự cố nhanh chóng. Việc đọc đầu ra lệnh chắc chắn sẽ tốn nhiều thời gian hơn là chỉ xem biểu đồ. Vì vậy, việc sử dụng trang tổng quan có thể là sự khác biệt giữa việc phát hiện vấn đề ngay bây giờ hoặc trong 15 phút tới, chắc chắn rằng thời gian có thể thực sự quan trọng đối với công ty. Đối với nhiệm vụ này, các công cụ như PMM hoặc Vividcortex, trong số những công cụ khác, có thể là chìa khóa để thêm khả năng hiển thị cho hệ thống giám sát cơ sở dữ liệu của bạn.
Giám sát và Quản lý Percona (PMM): Đây là một nền tảng mã nguồn mở để quản lý và giám sát hiệu suất cơ sở dữ liệu của bạn. Nó cung cấp phân tích kỹ lưỡng dựa trên thời gian cho các máy chủ MySQL, MariaDB, MongoDB và PostgreSQL để đảm bảo rằng dữ liệu của bạn hoạt động hiệu quả nhất có thể.
VividCortex: Đây là một nền tảng được lưu trữ trên đám mây cung cấp khả năng giám sát hiệu suất cơ sở dữ liệu sâu. Nó cung cấp khả năng hiển thị đầy đủ vào các cơ sở dữ liệu nguồn mở hàng đầu bao gồm MySQL, PostgreSQL, AWS Aurora, MongoDB và Redis.
Cảnh báo
Chỉ giám sát hệ thống sẽ không có ý nghĩa gì nếu bạn không nhận được thông báo về từng vấn đề. Nếu không có hệ thống cảnh báo, bạn nên truy cập công cụ giám sát để xem mọi thứ có ổn không và có thể bạn đang gặp sự cố lớn từ nhiều giờ trước. Công việc cảnh báo này có thể được thực hiện bằng cách sử dụng cảnh báo qua email, cảnh báo bằng văn bản hoặc các tích hợp công cụ khác như slack.
Thực sự rất khó để tìm một số công cụ để theo dõi tất cả các số liệu cần thiết cho PostgreSQL, nói chung, bạn sẽ cần sử dụng nhiều hơn một và thậm chí cần thực hiện một số tập lệnh. Một cách để tập trung hóa nhiệm vụ giám sát và cảnh báo là sử dụng ClusterControl, cung cấp cho bạn các tính năng như quản lý sao lưu, giám sát và cảnh báo, triển khai và mở rộng, phục hồi tự động và các tính năng quan trọng hơn để giúp bạn quản lý cơ sở dữ liệu của mình. Tất cả các tính năng này trên cùng một hệ thống.
Giám sát Cơ sở dữ liệu PostgreSQL của bạn với ClusterControl
ClusterControl cho phép bạn giám sát các máy chủ của mình trong thời gian thực. Nó có một tập hợp các trang tổng quan được xác định trước cho bạn, để phân tích một số chỉ số phổ biến nhất.
Nó cho phép bạn tùy chỉnh các biểu đồ có sẵn trong cụm và bạn có thể cho phép giám sát dựa trên tác nhân để tạo ra các trang tổng quan chi tiết hơn.
Bạn cũng có thể tạo cảnh báo, thông báo cho bạn về các sự kiện trong cụm của bạn, hoặc tích hợp với các dịch vụ khác nhau như PagerDuty hoặc Slack.
Ngoài ra, bạn có thể kiểm tra phần giám sát truy vấn, nơi bạn có thể tìm thấy truy vấn hàng đầu, truy vấn đang chạy, truy vấn ngoại lệ và thống kê truy vấn.
Với các tính năng này, bạn có thể thấy cơ sở dữ liệu PostgreSQL của mình đang hoạt động như thế nào.
Để quản lý sao lưu, ClusterControl tập trung nó để bảo vệ, bảo mật và khôi phục dữ liệu của bạn và với tính năng sao lưu xác minh, bạn có thể xác nhận xem bản sao lưu có hoạt động tốt hay không.
Công việc sao lưu xác minh này sẽ khôi phục bản sao lưu trong một máy chủ độc lập riêng biệt, vì vậy bạn có thể đảm bảo rằng bản sao lưu đang hoạt động.
Giám sát bằng Dòng lệnh ClusterControl
Đối với các tác vụ kịch bản và tự động hóa hoặc thậm chí nếu bạn chỉ thích dòng lệnh, ClusterControl có công cụ s9s. Đây là một công cụ dòng lệnh để quản lý cụm cơ sở dữ liệu của bạn.
Danh sách Cụm
Danh sách nút
Bạn có thể thực hiện tất cả các tác vụ (và thậm chí nhiều hơn nữa) từ Giao diện người dùng ClusterControl và bạn có thể tích hợp tính năng này với một số công cụ bên ngoài như slack, để quản lý nó từ đó.
Kết luận
Trong blog này, chúng tôi đã đề cập đến một số chỉ số quan trọng cần theo dõi trong môi trường PostgreSQL của bạn và một số công cụ giúp cuộc sống của bạn dễ dàng hơn bằng cách kiểm soát hệ thống của bạn. Bạn cũng có thể xem cách sử dụng ClusterControl cho tác vụ này.
Như bạn thấy, việc giám sát là hoàn toàn cần thiết và cách tốt nhất để thực hiện điều đó phụ thuộc vào cơ sở hạ tầng và chính hệ thống. Bạn nên đạt được sự cân bằng giữa những gì bạn cần theo dõi và cách nó ảnh hưởng đến hiệu suất cơ sở dữ liệu của bạn.