Với sự phức tạp ngày càng tăng của việc thiết lập cơ sở dữ liệu, nhiều SysAdmins và DBA đang chuyển sang phương pháp tiếp cận không tác nhân để giúp giảm bớt gánh nặng của các thách thức giám sát cơ sở dữ liệu. Giám sát không tác nhân của ClusterControl cho phép bạn giám sát cơ sở dữ liệu mà không cần cài đặt phần mềm tác nhân trên mỗi hệ thống được giám sát. ClusterControl triển khai giám sát bằng bộ thu thập dữ liệu từ xa sử dụng giao thức SSH.
Trước khi đi thẳng vào các chi tiết cụ thể của giám sát không tác nhân, trước tiên chúng ta hãy làm rõ phạm vi và ý nghĩa của việc giám sát trong ngữ cảnh của chúng tôi tại đây. Theo dõi xuất hiện sau xu hướng dữ liệu - quy trình thu thập và lưu trữ số liệu - cho phép hệ thống giám sát xử lý dữ liệu đã thu thập để đưa ra lý do điều chỉnh, cảnh báo và hiển thị dữ liệu xu hướng để báo cáo.
Bắt đầu từ phiên bản 1.7.0 (phát hành vào tháng 12 năm 2018), ClusterControl hỗ trợ hai phương pháp giám sát:
- Giám sát không cần tác nhân (mặc định)
- Giám sát dựa trên tác nhân với Prometheus
Bài đăng này sẽ hướng dẫn cách giám sát các cụm và máy chủ cơ sở dữ liệu của bạn bằng tính năng giám sát không tác nhân của ClusterControl. Nếu bạn đang tìm kiếm thêm thông tin về việc giám sát dựa trên tác nhân của ClusterControl, bạn có thể tham khảo tài liệu này.
Nói chung, ClusterControl thực hiện các nhiệm vụ theo dõi, cảnh báo và xu hướng không cần tác nhân bằng cách sử dụng ba phương pháp sau:
- SSH - Bộ sưu tập chỉ số máy chủ (quy trình, thống kê bộ cân bằng tải, sử dụng tài nguyên, mức tiêu thụ, v.v.) bằng cách sử dụng thư viện SSH
- Máy khách cơ sở dữ liệu - Bộ sưu tập số liệu cơ sở dữ liệu (trạng thái, truy vấn, biến, cách sử dụng, v.v.) bằng cách sử dụng thư viện máy khách cơ sở dữ liệu tương ứng
- Advisor - Các chương trình nhỏ được viết bằng ClusterControl DSL và chạy trong chính ClusterControl cho các mục đích giám sát, điều chỉnh và cảnh báo
SSH là viết tắt của Secure Shell, một giao thức mạng an toàn được hầu hết các máy chủ dựa trên Linux sử dụng để quản trị từ xa. Bộ điều khiển ClusterControl, hoặc CMON, là dịch vụ phụ trợ thực hiện các tác vụ tự động hóa, quản lý, giám sát và lập lịch, được xây dựng dựa trên C ++.
ClusterControl DSL (Ngôn ngữ dành riêng cho miền) cho phép bạn mở rộng chức năng của nền tảng ClusterControl bằng cách tạo Cố vấn, Bộ điều chỉnh Tự động hoặc "Chương trình Nhỏ". Cú pháp DSL dựa trên JavaScript, với các phần mở rộng để cung cấp quyền truy cập vào các cấu trúc và chức năng dữ liệu nội bộ của ClusterControl. DSL cho phép bạn thực thi các câu lệnh SQL, chạy các lệnh / chương trình shell trên tất cả các máy chủ cụm của bạn và truy xuất kết quả được xử lý cho các cố vấn / cảnh báo hoặc bất kỳ hành động nào khác.
Công cụ Giám sát
Tất cả các công cụ tiên quyết đều được đáp ứng bởi tập lệnh trình cài đặt hoặc được cài đặt tự động bởi ClusterControl trong giai đoạn triển khai cơ sở dữ liệu hoặc nếu tệp yêu cầu / nhị phân / gói không tồn tại trên máy chủ đích trước khi thực thi công việc. Nói chung, nhiệm vụ giám sát ClusterControl chỉ yêu cầu gói máy chủ OpenSSH trên các máy chủ được giám sát. ClusterControl sử dụng thư viện máy khách libssh để thu thập số liệu máy chủ cho các máy chủ được giám sát - CPU, bộ nhớ, đĩa, mạng, IO, quy trình, v.v. Gói ứng dụng khách OpenSSH chỉ được yêu cầu trên máy chủ ClusterControl để thiết lập SSH không mật khẩu và mục đích gỡ lỗi. Các triển khai SSH khác như Dropbear và TinySSH không được hỗ trợ.
Khi thu thập số liệu và thống kê cơ sở dữ liệu, Bộ điều khiển ClusterControl (CMON) kết nối trực tiếp với máy chủ cơ sở dữ liệu thông qua thư viện máy khách cơ sở dữ liệu - libmysqlclient (MySQL / MariaDB và ProxySQL), libpq (PostgreSQL) và libmongocxx (MongoDB ). Đó là lý do tại sao điều quan trọng là phải thiết lập các đặc quyền thích hợp cho máy chủ ClusterControl từ góc độ của máy chủ cơ sở dữ liệu. Đối với các cụm dựa trên MySQL, ClusterControl yêu cầu người dùng cơ sở dữ liệu "cmon" trong khi đối với các cơ sở dữ liệu khác, bất kỳ tên người dùng nào cũng có thể được sử dụng để giám sát, miễn là tên người dùng đó được cấp đặc quyền người dùng siêu cấp. Hầu hết thời gian, ClusterControl sẽ tự động thiết lập các đặc quyền cần thiết (hoặc sử dụng người dùng cơ sở dữ liệu được chỉ định) trong giai đoạn nhập cụm hoặc giai đoạn triển khai cụm.
ClusterControl yêu cầu các công cụ sau cho bộ cân bằng tải:
- Maxctrl trên máy chủ MariaDB MaxScale
- netcat và / hoặc socat trên máy chủ HAProxy để kết nối với tệp socket HAProxy và truy xuất dữ liệu giám sát
- ProxySQL yêu cầu một ứng dụng khách mysql trên máy chủ ProxySQL
Sơ đồ sau minh họa cả quá trình giám sát máy chủ và cơ sở dữ liệu được thực thi bởi ClusterControl bằng cách sử dụng libssh và thư viện máy khách cơ sở dữ liệu:
Mặc dù các luồng giám sát không cần cài đặt gói ứng dụng cơ sở dữ liệu trên máy chủ được giám sát, rất nên có chúng cho mục đích quản lý. Ví dụ:gói máy khách MySQL đi kèm với các chương trình mysql, mysqldump, mysqlbinlog và mysqladmin, các chương trình này sẽ được ClusterControl sử dụng khi thực hiện sao lưu và khôi phục tại chỗ.
Phương pháp Giám sát
Để thu thập thống kê máy chủ lưu trữ và bộ cân bằng tải, ClusterControl thực thi tác vụ này thông qua SSH với đặc quyền người dùng siêu cấp. Do đó, SSH không cần mật khẩu với đặc quyền siêu người dùng là rất quan trọng để cho phép ClusterControl chạy các lệnh cần thiết từ xa với mức báo cáo phù hợp. Với cách tiếp cận kéo này, có một số ưu điểm so với các cơ chế khác:
- Không cần tác nhân - Không cần cài đặt, định cấu hình và duy trì tác nhân.
- Thống nhất cấu hình quản lý và giám sát - SSH có thể được sử dụng để kéo các chỉ số giám sát hoặc đẩy các công việc quản lý lên các nút mục tiêu.
- Đơn giản hóa việc triển khai - Yêu cầu duy nhất là thiết lập SSH không mật khẩu thích hợp, và thế là xong. SSH cũng rất an toàn và được mã hóa.
- Thiết lập tập trung - Một máy chủ ClusterControl có thể quản lý nhiều máy chủ và cụm, miễn là nó có đủ tài nguyên.
Tuy nhiên, cơ chế kéo cũng có những nhược điểm sau:
- Dữ liệu giám sát chỉ chính xác theo quan điểm của ClusterControl. Ví dụ:nếu có trục trặc mạng và ClusterControl mất liên lạc với máy chủ được giám sát, thì quá trình lấy mẫu sẽ bị bỏ qua cho đến chu kỳ khả dụng tiếp theo.
- Sẽ có chi phí mạng để theo dõi mức độ chi tiết cao do tốc độ lấy mẫu tăng lên trong đó ClusterControl cần thiết lập nhiều kết nối hơn với mọi máy chủ đích.
- ClusterControl sẽ tiếp tục cố gắng thiết lập lại kết nối với nút đích vì nó không có tác nhân nào thực hiện việc này thay mặt cho nó.
- Lấy mẫu dữ liệu dự phòng nếu bạn có nhiều hơn một máy chủ ClusterControl giám sát một cụm vì mỗi máy chủ ClusterControl phải lấy dữ liệu giám sát cho chính nó.
Để theo dõi truy vấn MySQL, bắt đầu từ ClusterControl 1.9.0 (phát hành tháng 7 năm 2021), ClusterControl hỗ trợ hai loại:
- Giám sát truy vấn không cần tác nhân (mặc định)
- Giám sát truy vấn dựa trên tác nhân sử dụng tác nhân truy vấn CMON, yêu cầu các bước bổ sung để kích hoạt nó. Chỉ dành cho cơ sở dữ liệu dựa trên MySQL và PostgreSQL.
Giám sát truy vấn không cần tác nhân giám sát các truy vấn theo hai cách khác nhau:
- Các truy vấn được truy xuất từ PERFORMANCE_SCHEMA bằng cách truy vấn lược đồ trên nút cơ sở dữ liệu thông qua SSH.
- Nếu PERFORMANCE_SCHEMA bị tắt hoặc không khả dụng, ClusterControl sẽ phân tích cú pháp nội dung của Nhật ký truy vấn chậm qua SSH.
Nếu Lược đồ Hiệu suất được bật, ClusterControl sẽ sử dụng nó để tìm kiếm các truy vấn chậm. Nếu không, ClusterControl sẽ phân tích cú pháp nội dung của nhật ký truy vấn chậm MySQL (thông qua biến động slow_query_log =ON) dựa trên luồng sau:
- Bắt đầu nhật ký chậm (trong thời gian chạy MySQL).
- Chạy nó trong một khoảng thời gian ngắn (một giây hoặc vài giây).
- Dừng nhật ký.
- Nhật ký phân tích cú pháp.
- Cắt ngắn nhật ký (tệp nhật ký mới).
- Chuyển đến 1.
Các truy vấn được thu thập được băm, tính toán và tiêu hóa (chuẩn hóa, trung bình, đếm, sắp xếp) và sau đó được lưu trữ trong cơ sở dữ liệu ClusterControl CMON. Hãy lưu ý rằng đối với phương pháp lấy mẫu này, có một chút cơ hội là một số truy vấn sẽ không được ghi lại, đặc biệt là trong các phần “nhật ký dừng, nhật ký phân tích cú pháp, cắt ngắn nhật ký”. Bạn có thể bật Giản đồ hiệu suất nếu đây không phải là một tùy chọn.
Chỉ những truy vấn vượt quá Thời gian Truy vấn Dài mới được liệt kê ở đây bằng cách sử dụng Nhật ký Truy vấn Chậm. Giả sử dữ liệu không được điền chính xác và bạn tin rằng phải có thứ gì đó trong đó, có thể là:
- ClusterControl không thu thập đủ truy vấn để tóm tắt và điền dữ liệu. Cố gắng giảm thời gian truy vấn dài.
- Bạn đã định cấu hình các tùy chọn cấu hình Nhật ký Truy vấn Chậm trong my.cnf của máy chủ MySQL và Ghi đè Truy vấn Cục bộ bị tắt. Nếu bạn thực sự muốn sử dụng giá trị bạn đã xác định bên trong my.cnf, bạn có thể sẽ phải hạ giá trị long_query_time xuống để ClusterControl có thể tính toán kết quả chính xác hơn.
- Bạn có một nút ClusterControl khác cũng kéo nhật ký Truy vấn chậm (trong trường hợp bạn có máy chủ ClusterControl dự phòng). Chỉ cho phép một máy chủ ClusterControl thực hiện công việc này.
Bạn cũng có thể sử dụng Trình theo dõi Truy vấn ClusterControl cho Máy chủ MySQL, MariaDB và Percona.
Để theo dõi truy vấn PostgreSQL, ClusterControl yêu cầu mô-đun pg_stat_statements để theo dõi thống kê thực thi của tất cả các câu lệnh SQL. Nó điền các chế độ xem và chức năng pg_stat_statements khi hiển thị các truy vấn trong giao diện người dùng (trong tab Giám sát truy vấn).
Khoảng thời gian và Thời gian chờ
ClusterControl Controller (cmon) là một quá trình đa luồng. Theo mặc định, luồng lấy mẫu Bộ điều khiển ClusterControl kết nối với mỗi máy chủ được giám sát một lần và duy trì kết nối liên tục cho đến khi máy chủ giảm hoặc ngắt kết nối khi lấy mẫu thống kê máy chủ. Nó có thể thiết lập nhiều kết nối hơn tùy thuộc vào các công việc được giao cho máy chủ lưu trữ vì hầu hết các công việc quản lý đều chạy trong luồng riêng của chúng. Ví dụ:khôi phục cụm chạy trên chuỗi khôi phục, thực thi Trình cố vấn chạy trên chuỗi cron và giám sát quá trình chạy trên chuỗi bộ thu thập quy trình.
Chuỗi giám sát ClusterControl thực hiện các thao tác lấy mẫu sau trong khoảng thời gian sau:
- Số liệu trạng thái / truy vấn MySQL:mỗi giây
- Thu thập quy trình (/ proc):10 giây một lần
- Phát hiện máy chủ:10 giây một lần
- Chỉ số máy chủ (/ proc, / sys):30 giây một lần (có thể định cấu hình qua host_stats_collection_interval)
- Chỉ số cơ sở dữ liệu (chỉ PostgreSQL và MongoDB):30 giây một lần (có thể định cấu hình qua db_stats_collection_interval)
- Chỉ số giản đồ cơ sở dữ liệu:3 giờ một lần (có thể định cấu hình qua db_schema_stats_collection_interval)
- Các chỉ số của trình cân bằng tải:cứ sau 15 giây (có thể định cấu hình qua lb_stats_collection_interval)
Các tập lệnh bắt buộc (Cố vấn) có thể sử dụng SSH và thư viện khách cơ sở dữ liệu đi kèm với CMON với các hạn chế sau:
- Giới hạn cố định 5 giây để thực thi SSH.
- 10 giây giới hạn mặc định cho kết nối cơ sở dữ liệu, có thể định cấu hình qua net_read_timeout, net_write_timeout, connect_timeout trong tệp cấu hình CMON.
- Tổng thời gian thực thi tập lệnh là 60 giây trước khi CMON hủy bỏ nó một cách vô duyên.
Cố vấn có thể được tạo, biên dịch, kiểm tra và lập lịch trực tiếp từ giao diện người dùng của ClusterControl trong Manage → Developer Studio . Ảnh chụp màn hình sau đây cho thấy một ví dụ về Cố vấn để trích xuất 10 truy vấn hàng đầu từ PERFORMANCE_SCHEMA:
Việc thực thi các cố vấn phụ thuộc vào việc nó có được kích hoạt hay không và thời gian lập lịch ở định dạng cron:
Kết quả thực thi được hiển thị trong Hiệu suất → Cố vấn , như được hiển thị trong ảnh chụp màn hình sau:
Để biết thêm thông tin về những gì Cố vấn được cung cấp theo mặc định, hãy xem Nhà phát triển của chúng tôi Trang sản phẩm của Studio.
Dữ liệu được lưu trữ trực tiếp vào cơ sở dữ liệu CMON cho dữ liệu giám sát trong khoảng thời gian ngắn như truy vấn MySQL và trạng thái. Dữ liệu theo dõi trong khoảng thời gian dài như điểm dữ liệu hàng tuần / hàng tháng / hàng năm được tổng hợp cứ sau 60 giây và được lưu trữ trong bộ nhớ trong 10 phút. Các hành vi này không thể định cấu hình do thiết kế kiến trúc.
Thông số
ClusterControl có nhiều tham số để phù hợp với chính sách giám sát và cảnh báo của bạn. Hầu hết chúng đều có thể định cấu hình thông qua ClusterControl UI → chọn một cụm → Cài đặt . Tab "Cài đặt" cung cấp nhiều tùy chọn để định cấu hình cảnh báo, ngưỡng, thông báo, bố cục đồ thị, bộ đếm cơ sở dữ liệu, giám sát truy vấn, v.v. Ví dụ:các ngưỡng cảnh báo và ngưỡng quan trọng có thể được định cấu hình như sau:
Trang "Cấu hình thời gian chạy" hiển thị danh sách tóm tắt của Bộ điều khiển ClusterControl đang hoạt động Thông số cấu hình thời gian chạy (CMON):
Tổng cộng có hơn 170 tùy chọn cấu hình Bộ điều khiển ClusterControl và một số cài đặt nâng cao có thể được định cấu hình giám sát và tinh chỉnh chính sách cảnh báo. Một số trong số này bao gồm:
- monitor_cpu_tempeosystem
- swap_warning
- swap_critical
- redobuffer_warning
- redobuffer_critical
- indexmemory_warning
- indexmemory_critical
- datamemory_warning
- datamemory_critical
- tablepace_warning
- tablepace_critical
- redolog_warning
- redolog_critical
- max_replication_lag
- long_query_time
- log_queries_not_using_indexes
- query_monitor_use_local_settings
- enable_query_monitor
- enable_query_monitor_auto_purge_ps
Bạn có thể thay đổi các tham số được liệt kê trong trang "Cấu hình thời gian chạy" bằng cách sử dụng tệp cấu hình giao diện người dùng hoặc CMON có tại /etc/cmon.d/cmon_X.cnf, trong đó X là ID cụm. Bạn có thể liệt kê tất cả các tùy chọn cấu hình được hỗ trợ cho CMON bằng cách sử dụng lệnh sau:
$ cmon --help-config
Lời kết
Giám sát không cần tác nhân đã trở thành một trong những phương pháp hiệu quả nhất để quản lý cơ sở hạ tầng cơ sở dữ liệu ngày càng phức tạp. Nó làm giảm gánh nặng của nhiều thách thức liên quan đến giám sát cơ sở dữ liệu và dễ quản lý.
Ngày nay có rất nhiều công cụ giám sát không cần tác nhân. Tuy nhiên, không nhiều trong số họ cũng cung cấp một nền tảng hoàn chỉnh với đầy đủ các tính năng để giúp bạn quản lý mọi khía cạnh khác của các cụm cơ sở dữ liệu của mình. Để xem ClusterControl có thể làm gì khác, hãy nhớ tải xuống bản dùng thử 30 ngày miễn phí của riêng bạn.
Bạn đang tìm kiếm một giải pháp thay thế dựa trên tác nhân để giám sát cơ sở dữ liệu? Kiểm tra cơ sở hạ tầng giám sát cơ sở dữ liệu dựa trên tác nhân của ClusterControl - SCUMM.