Số liệu thống kê MySQL được đề xuất cho môi trường sản xuất


7

Khác với thống kê hệ thống thông thường (i / o, sử dụng ram, cpu, tải, v.v.) Tôi hiện đang thu thập câu hỏi, qps, truy vấn đang chạy và nhấn vào vùng đệm.

Tôi thấy qpskhá vô dụng vì thời gian hoạt động của máy chủ sản xuất của chúng tôi rất cao và giá trị trung bình của nó.

Tôi đã tự hỏi về các thực tiễn tốt nhất để thu thập số liệu thống kê cho máy chủ sản xuất mysql. Tôi nên thu thập / theo dõi các số liệu thống kê nào khác để hiểu được tải trên máy chủ của mình và hành động nhanh chóng mà không gây thêm căng thẳng cho nó?

Biên tập :

Tôi không tìm kiếm giải pháp của bên thứ 3, tôi đã sử dụng zabbix (và khả năng tạo tập lệnh viết tay) để thu thập số liệu thống kê / theo dõi cụm mysql của chúng tôi. Có một danh sách các số liệu thống kê có thể cho bộ sưu tập trong liên kết này . Và tất nhiên có những số liệu thống kê không được liệt kê ở đây và có thể được thu thập thông qua các tập lệnh shell. Câu hỏi thực sự là những gì các số liệu thống kê phải được thu thập để giám sát cụm của chúng tôi một cách hiệu quả mà không tạo ra một thứ rác không cần thiết chứa đầy đủ các số liệu thống kê.

Ví dụ: chúng ta có nên lấy Qcache_hit / Qcache_hit + queriestỷ lệ để xem các bảng của chúng ta có đủ nóng không?


Tại sao bạn không thử các công cụ như Zabbix hoặc Cacti? Bạn có cần thêm realtimecông cụ thay vì công cụ này?

Tôi đã sử dụng zabbix nhưng tôi muốn "thực hành tốt nhất" để thu thập số liệu thống kê, tôi không muốn có quá nhiều bộ sưu tập thống kê, chỉ là những thông tin cần thiết nhất nếu có thể. Đó là lý do tại sao tôi cần "thực hành tốt nhất".
yếu đuối

Bạn nói đúng, tôi đánh dấu nó là lạc đề.
yếu đuối

Câu trả lời:


3

Giám sát mọi thứ mà bạn có thể thường xuyên như bạn có thể. Tôi đặc biệt khuyên dùng Graphite w / statsd làm vị trí trung tâm để thu thập tất cả các số liệu của bạn. Nó cung cấp một giao thức văn bản đơn giản rất đơn giản để ghi nhật ký gần như bất kỳ dữ liệu số liệu nào và giao diện người dùng giúp dễ dàng so sánh một số liệu này với một số liệu khác. Trên hệ thống của mình, tôi thu thập rất nhiều thông tin và hầu hết thông tin đã được chứng minh là vô giá vào lúc này hay lúc khác. Dưới đây là một vài trong số họ:

Tôi đã viết một daemon gọi mysampler rằng gửi đầu ra của SHOW GLOBAL STATUSđể graphite (hoặc csv, nếu bạn muốn) đều đặn. Chúng tôi ghi nhật ký này ở các khoảng thời gian 5s, nhưng có những lúc tôi ước chúng tôi đã đặt nó thành các khoảng thời gian 1 giây. Bạn bắt đầu thấy một số mô hình rất thú vị ở mức độ chi tiết đó. Nó nhận thức được các số liệu thống kê nào là các bộ đếm và giá trị tuyệt đối (Câu hỏi là một bộ đếm, Themes_rucky là một giá trị tuyệt đối) và sẽ xuất ra các đồng bằng cho các bộ đếm.

ab-tblstats2g chạy từ cron mỗi đêm và gửi số liệu thống kê kích thước bảng đến than chì để chúng tôi có thể theo dõi sự tăng trưởng của bảng. Tôi dự định mở rộng nó để bao gồm giá trị khóa chính tối đa và số lượng hàng (từ thống kê bảng) trong tương lai gần. Nó cũng hoạt động với MSSQL Server.

mysql_logger ghi nhật ký đầu ra của SHOW FULL PROCESSLIST để syslog mỗi khoảng thời gian X. Nó làm cho nó trở nên tầm thường để tìm ra chính xác những gì đang chạy đồng thời khi có điều gì đó kỳ lạ (khóa bảng, truy vấn chạy dài, v.v.). Chúng tôi kết xuất dữ liệu đó vào Splunk để dễ dàng tìm kiếm, nhưng đôi khi tôi vẫn chỉ sử dụng grep trong nhật ký nhật ký hệ thống.

pt-stalk từ Percona Toolkit là tuyệt vời cho "chuyện gì vừa xảy ra?" kịch bản. Nó theo dõi các biến trạng thái máy chủ vượt quá một giá trị nhất định ( Threads_connected> 25 theo mặc định, nhưng Threads_runningthường là một số liệu có giá trị hơn, theo kinh nghiệm của tôi) và khi được kích hoạt, thu thập một loạt dữ liệu về MySQL và hệ thống có thể được xem xét bằng pt-sift hoặc chỉ bằng cách xem lại các tập tin được tạo ra. Nó thậm chí sẽ tạo ra các dấu vết tcpdumps, gdb, oprofile và strace.

Về cơ bản đó là những gì chúng tôi theo dõi , khác với cảnh báo. Để cảnh báo, tôi khuyên bạn nên cảnh báo về một số lượng rất nhỏ. Bạn có thể bao gồm 90% các trường hợp chỉ bằng cách chọn truy vấn đại diện khối lượng công việc và đặt ngưỡng về thời gian cần trả lại. Nếu vượt quá ngưỡng đó, cảnh báo ... có vấn đề. Nếu không, bạn ổn. Không cần phải kiểm tra "là quá trình đang chạy" hay bất cứ điều gì tương tự. Những thứ khác cần tìm là các mục trong nhật ký lỗi của MySQL, tiếp cận quá nhiều kết nối và mức độ sao chép hoạt động tốt (độ trễ nô lệ, chạy nô lệ, bảng đồng bộ). Tỷ lệ trúng hoàn toàn vô dụng cho mục đích cảnh báo - tất cả vấn đề là các truy vấn sẽ trở lại trong một khoảng thời gian.

Để đọc thêm, sách trắng Ngăn chặn các trường hợp khẩn cấp của MySQL bởi những người Percona là một bài đọc tốt đi sâu vào chi tiết về những gì cần theo dõi và cảnh báo. Percona cũng đã phát hành một bộ Plugin Nagios (nên hoạt động với Zabbix, tôi tin) mà bạn có thể sử dụng.


3

Tôi rất khuyên bạn nên sử dụng MONyog . nhập mô tả hình ảnh ở đây

MONyog MySQL Monitor and Advisor là một "DBA MySQL trong một hộp" giúp các DBA MySQL quản lý nhiều máy chủ MySQL hơn, điều chỉnh các máy chủ MySQL hiện tại của họ và tìm và khắc phục sự cố với các ứng dụng cơ sở dữ liệu MySQL của họ trước khi chúng có thể gặp sự cố nghiêm trọng hoặc mất điện.

Nhóm DevOps của chúng tôi sử dụng rộng rãi cho cả sản xuất và phát triển. Những kẻ này có hầu hết các "thực hành tốt nhất" được đưa vào ứng dụng, vì vậy chúng tôi thực sự không cần phải nhúng tay vào những thứ DBA.


Cảm ơn vì đã trả lời nhanh nhưng chúng tôi đã sử dụng zabbix để theo dõi, tôi chỉ cần biết số liệu thống kê nào là "phải" để thu thập để theo dõi mysql.
yếu đuối

1

Truy vấn chậm chắc chắn là một cái gì đó bạn phải theo dõi.

Bạn sẽ tìm thấy mọi thứ hữu ích về Nhật ký truy vấn chậm tại đây .

Và bạn có thể vui mừng khi biết rằng chúng tôi không giám sát nhiều hơn trên máy chủ sản xuất của chúng tôi rằng những gì bạn đã làm.


Cảm ơn lời nhắc nhở, chúng tôi luôn kiểm tra nhật ký truy vấn chậm của chúng tôi. Tôi cũng sẽ thêm Slow queriesvào mysqladmin statusdanh sách màn hình của tôi. Tôi cũng sẽ chỉnh sửa câu hỏi để làm cho nó rõ ràng hơn.
yếu đuối

Ồ ok, tôi đã không thấy nó trong danh sách của bạn: p

0

Trong nghiên cứu của tôi, tôi phát hiện ra rằng plugin ganglia ( gmetric-mysql.sh ) chỉ thu thập các số liệu thống kê sau:

Connections
Com_update
Com_select
Com_insert
Com_delete
Created_tmp_tables
Slow_queries
Qcache_hits
Qcache_queries_in_cache
Questions
Threads_connected
Threads_running
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.