Giám sát PostgreSQL bằng Zabbix

Giám sát PostgreSQL bằng Zabbix
Báo cáo của Daria Vilkova cho Zabbix Meetup Online

Tôi muốn giới thiệu với bạn công cụ giám sát hệ điều hành và PostgreSQL đang được công ty chúng tôi phát triển bằng Zabbix.

Chúng tôi đã chọn Zabbix làm công cụ giám sát từ lâu vì đây là nền tảng nguồn mở được hỗ trợ bởi một cộng đồng tích cực rất phổ biến ở Nga.

Chúng tôi đã tạo một tác nhân đang hoạt động - Mamonsu, cung cấp khả năng giám sát linh hoạt hơn các công cụ tiêu chuẩn cho phép tại thời điểm đó và đảm bảo việc thu thập các số liệu và gửi chúng tới Máy chủ Zabbix. Trong công ty chúng tôi, Mamonsu được sử dụng trong kiểm toán.

mamonsu

Mamonsu là một tác nhân tích cực (Zabbix Trapper) để giám sát PostgreSQL và hệ điều hành. Mamonsu (viết bằng Python) cho phép bạn định cấu hình cài đặt giám sát hệ điều hành và PostgreSQL trong năm phút.

Mamonsu có các công cụ bổ sung:

  • mamonsu tune là lệnh chỉnh sửa cài đặt trong tệp cấu hình PostgreSQL cho máy đã cài đặt tác nhân Mamonsu.
  • báo cáo mamonsu là lệnh tạo ra câu trả lời về hệ điều hành và PostgreSQL.

Mamonsu được cài đặt trên máy chủ DBMS, thu thập thông tin, soạn nó thành JSON, gửi nó đến Máy chủ Zabbix để trực quan hóa, nơi cần có một mẫu cho các số liệu của nó.

Giám sát PostgreSQL bằng Zabbix

Chương trình làm việc của Mamonsu

Tính năng Mamonsu

  • Làm việc hiệu quả với PostgreSQL. Kết nối liên tục với PostgreSQL là ưu điểm chính của Mamonsu. Trong trường hợp này, số lượng kết nối tối đa bằng số lượng cơ sở dữ liệu tối đa mà nó kết nối.
  • Khả năng mở rộng. Mamonsu là một tác nhân "plugin" hoàn toàn và do cấu trúc cố định của từng plugin cũng như tính đơn giản tương đối của Python, người ta có thể dễ dàng tìm hiểu cách viết mới hoặc chỉnh sửa các plugin tiêu chuẩn, tức là các tham số thu thập số liệu.
  • Phạm vi bao phủ rộng rãi của các số liệu giám sát cho PotgreSQL bao gồm các số liệu dành riêng cho tiện ích mở rộng.
  • khởi động nhanh, sẵn có ngay lập tức.
  • Tải lên các mẫu và tập tin cấu hình, cũng như tải lên Zabbix Server.
  • Đa nền tảng, điều này rất quan trọng đối với những khách hàng sử dụng nhiều bản phân phối Linux khác nhau, bao gồm cả các bản phân phối trong nước.
  • Giấy phép điều khoản BSD.

Hiện tại, chúng tôi cung cấp rất nhiều plugin và trong mỗi phiên bản tiếp theo, chúng tôi sẽ cố gắng thêm một số tính năng mới.

  • 14 plugin cho PostgreSQL,
  • 8 plugin cho hệ điều hành Linux,
  • 4 plugin cho hệ điều hành Windows.

Mamonsu thu thập hơn 110 số liệu PostgreSQL và hệ điều hành:

  • 70 số liệu PostgreSQL,
  • 40 số liệu của hệ điều hành Linux,
  • 8 số liệu của hệ điều hành Windows.

Các số liệu chính bao gồm tính khả dụng của DBMS, số lượng kết nối, kích thước cơ sở dữ liệu, điểm kiểm tra, tốc độ đọc/ghi, khóa, số lượng quy trình tự động chân không và tốc độ tạo WAL. Danh sách đầy đủ các số liệu có sẵn cũng như mô tả chi tiết về tất cả các công cụ đều có sẵn trong kho lưu trữ trên trang GitHub.

Giám sát PostgreSQL bằng Zabbix

Danh sách số liệu có sẵn trên GitHub

Chạy Mamonsu trong 5 phút

Để thiết lập giám sát PostgreSQL và hệ điều hành bằng Mamonsu, bạn có thể thực hiện trong 5 phút bằng 5 bước đơn giản.

  1. Cài đặt Mamonsu. Mamonsu có thể được xây dựng từ nguồn hoặc sử dụng các gói có sẵn.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Kết nối cập nhật. Cần thiết lập các tham số kết nối cho PostgreSQL và Zabbix Server trong tệp Agent.conf.

/etc/mamonsu/agent.conf

  1. Xuất mẫu sang máy chủ Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Thêm máy chủ vào Zabbix Server. Mẫu đã xuất sẽ được tự động kết nối với máy chủ mới trên Máy chủ Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Ra mắt.

$ service mamonsu start

Định hướng phát triển Mamonsu

Là một phần trong quá trình phát triển Mamonsu, chúng tôi có kế hoạch tinh chỉnh các số liệu và tạo các plugin mới, chẳng hạn như plugin để theo dõi kích thước của từng bảng riêng lẻ. Chúng tôi cũng có kế hoạch cải thiện và tạo ra các công cụ bổ sung cũng như mở rộng khả năng tự động điều chỉnh thông qua lệnh giai điệu mamonsu.

Mô-đun giám sát PostgreSQL như một phần của Zabbix Agent 2

Trình điều khiển nhanh và phổ biến được sử dụng để kết nối với PostgreSQL trangx (Trình điều khiển PG và bộ công cụ cho Go).

Cho đến nay, chúng tôi đang sử dụng hai giao diện: Trình xuất, gọi trình xử lý bằng phím và Trình cấu hình Zabbix Agent 2, đọc và kiểm tra các tham số kết nối với máy chủ được chỉ định trong tệp cấu hình.

Chúng tôi đã cố gắng tối ưu hóa công việc của DBMS bằng cách nhóm các chỉ số và sử dụng trình xử lý (trình xử lý) cho các chỉ số và nhóm chỉ số, cũng như sử dụng các nhóm chỉ số trong JSON làm biến phụ thuộc (mục phụ thuộc) và khám phá cấp thấp (quy tắc khám phá ).

Các tính năng chính

  • duy trì kết nối liên tục với PostgreSQL giữa các lần kiểm tra;
  • hỗ trợ khoảng thời gian bỏ phiếu linh hoạt;
  • khả năng tương thích với các phiên bản PostgreSQL bắt đầu từ 10 và Zabbix Server bắt đầu từ phiên bản 4.4;
  • khả năng kết nối và giám sát nhiều phiên bản PostgreSQL cùng lúc do Zabbix Agent 2 cho phép bạn tạo nhiều phiên.

Cấp độ tham số kết nối PostgreSQL

Tổng cộng, có ba cấp độ tham số kết nối PostgreSQL, tức là tác vụ và cài đặt:

  • Toàn cầu,
  • Phiên,
  • Macro.

  1. Các tham số Toàn cầu được đặt ở cấp tác nhân, các tham số Phiên và Macro xác định các tham số kết nối cơ sở dữ liệu.

  2. Tham số kết nối với PostgreSQL - Phiên được đặt trong tệp zabbix_agent2.conf.

Giám sát PostgreSQL bằng Zabbix

Tùy chọn kết nối PostgreSQL - Phiên

  • Sau từ khóa Sessions một tên phiên duy nhất được chỉ định, tên này phải được chỉ định trong khóa (mẫu).
  • Tham số URI и Tên người dùng cần thiết cho mỗi phiên.
  • Nếu tên cơ sở không được chỉ định, tên cơ sở chung mặc định cho tất cả các phiên PostgreSQL sẽ được sử dụng, tên này cũng được đặt trong tệp cấu hình.

  1. Tham số kết nối với PostgreSQL - Macro được đặt trong khóa số liệu trong mẫu (tương tự như phương thức được sử dụng trong Zabbix Agent 1), tức là chúng được tạo trong mẫu và sau đó được chỉ định làm tham số trong khóa. Trong trường hợp này, chuỗi macro được cố định, ví dụ: URI luôn được liệt kê đầu tiên.

Giám sát PostgreSQL bằng Zabbix

Tham số kết nối PostgreSQL - Macro

Mô-đun giám sát PostgreSQL đã bao gồm hơn 95 số liệu cho phép bạn bao quát một phạm vi khá rộng các tham số PostgreSQL, bao gồm:

  • số lượng kết nối
  • kích thước cơ sở dữ liệu,
  • lưu trữ tập tin wal,
  • trạm kiểm soát,
  • số lượng bảng "cồng kềnh",
  • trạng thái sao chép,
  • độ trễ bản sao.

Các số liệu PostgreSQL không mang lại nhiều thông tin nếu không có tham số hệ điều hành. Nhưng Zabbix Agent 2 đã biết cách thu thập thông số của hệ điều hành nên để có được bức tranh đầy đủ, chúng ta chỉ cần kết nối các mẫu cần thiết với máy chủ.

Người xử lý

Trình xử lý là đơn vị chính của mô-đun trong đó yêu cầu được thực thi và cho phép bạn nhận số liệu.

Để có được một số liệu đơn giản:

  1. Tạo một tệp để nhận số liệu mới:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Chúng tôi kết nối gói và chỉ định khóa (khóa) duy nhất của số liệu:

Giám sát PostgreSQL bằng Zabbix

  1. Chúng tôi tạo một trình xử lý (trình xử lý) với một yêu cầu, tức là chúng tôi khởi tạo một biến sẽ chứa kết quả:

Giám sát PostgreSQL bằng Zabbix

  1. Chúng tôi thực hiện yêu cầu:

Giám sát PostgreSQL bằng Zabbix

Cần phải kiểm tra lỗi yêu cầu, sau đó kết quả sẽ được xử lý bởi quy trình Zabbix Agent 2.

  1. Đăng ký khóa số liệu mới:

Giám sát PostgreSQL bằng Zabbix

Sau khi đăng ký số liệu, bạn có thể xây dựng lại tác nhân bằng số liệu mới.

Mô-đun này có sẵn bắt đầu từ Zabbix 5.0 trên trang web https://www.zabbix.com/download. Trong phiên bản Zabbix này, các tham số được đặt riêng thông qua máy chủ và cổng. Trong Zabbix 5.0.2 sắp được phát hành, các tham số kết nối sẽ được đóng gói thành một URI duy nhất.

Cảm ơn bạn!

Liên kết hữu ích

GitHub Mamonsu

Tài liệu Mamonsu

Zabbix Git

Nguồn: www.habr.com

Thêm một lời nhận xét