Box Anemometer
Đây là Box Anemometer, Máy đo tốc độ gió hộp, Máy giám sát Truy vấn Chậm MySQL. Công cụ này được sử dụng để phân tích nhật ký truy vấn chậm được thu thập từ các phiên bản MySQL để xác định các truy vấn gây vấn đề.
Tài liệu
. What is Anemometer?
. Extra Features
. Using PERFORMANCE_SCHEMA
. Collection Script
. Development with Vagrant
. Cài đặt: Xem phần Bắt đầu nhanh dưới đây
. Unit Testing
Bắt đầu nhanh
Nếu bạn muốn bắt đầu sử dụng công cụ này, đây là những gì bạn cần:
. Một cơ sở dữ liệu MySQL để lưu trữ dữ liệu phân tích truy vấn.
. pt-query-digest. * Bạn cũng có thể nhận được toàn bộ Percona Toolkit trong khi bạn đang làm việc 🙂
. Một nhật ký truy vấn chậm từ máy chủ MySQL (xem The Slow Query Log để biết thông tin về cách lấy nhật ký)
. Một máy chủ web với PHP
Cài đặt cơ sở dữ liệu
Đầu tiên, tải mã anemometer từ github. Điều hướng đến thư mục gốc của máy chủ web và tải mã nguồn Box Anemometer về.
$ git clone git://github.com/box/Anemometer.git anemometer
Hoặc, nếu bạn đóng cổng 9418:
$ git clone https://github.com/box/Anemometer.git anemometer
Sau đó, thay đổi thư mục làm việc hiện tại của bạn thành thư mục Anemometer:
$ cd anemometer
Tiếp theo, bạn nên kết nối đến cơ sở dữ liệu MySQL mà bạn muốn lưu trữ dữ liệu phân tích và thực hiện lệnh sau:
$ mysql -h db.example.com < install.sql
$ mysql -h db.example.com -e "grant ALL ON slow_query_log.* to 'anemometer'@'%' IDENTIFIED BY 'superSecurePass';"
Đưa dữ liệu vào CSDL
Tiếp theo, lấy tệp nhật ký truy vấn chậm mà bạn có (của tôi gọi là “slow.log”!), và chạy pt-query-digest trên nó: CHÚ Ý: Tôi đang sử dụng một shell BASH 3.0 ở đây trên máy chủ cơ sở dữ liệu MySQL của tôi! Điều này giúp biến “$HOSTNAME” được thay thế đúng cách bằng “db.example.com”)
Đối với phiên bản pt-query-digest < 2.2
$ pt-query-digest --user=anemometer --password=superSecurePass \
--review h=db.example.com,D=slow_query_log,t=global_query_review \
--review-history h=db.example.com,D=slow_query_log,t=global_query_review_history \
--no-report --limit=0% \
--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \
/var/lib/mysql/db.example.com-slow.log
Cho pt-query-digest phiên bản >= 2.2
$ pt-query-digest --user=anemometer --password=superSecurePass \
--review h=db.example.com,D=slow_query_log,t=global_query_review \
--history h=db.example.com,D=slow_query_log,t=global_query_review_history \
--no-report --limit=0% \
--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \
/var/lib/mysql/db.example.com-slow.log
Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57A" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 27.
Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57B" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 28.
Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57C" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 29.
Bạn có thể thấy một lỗi như trên, không sao cả! TODO: giải thích những tùy chọn ở trên đang làm gì.
Xem dữ liệu!
Bây giờ, điều hướng đến thư mục gốc của máy chủ web của bạn và sao chép cấu hình mẫu để bạn có thể chỉnh sửa nó:
$ cd anemometer/conf
$ cp sample.config.inc.php config.inc.php
Cấu hình mẫu giải thích mọi thiết lập bạn có thể muốn thay đổi trong đó.Ít nhất, hãy đảm bảo bạn đặt Datasource cho cơ sở dữ liệu MySQL mà bạn đang lưu trữ thông tin phân tích digest vào:
$conf['datasources']['localhost'] = array(
'host' => 'db.example.com',
'port' => 3306,
'db' => 'slow_query_log',
'user' => 'anemometer',
'password' => 'superSecurePass',
'tables' => array(
'global_query_review' => 'fact',
'global_query_review_history' => 'dimension'
)
);
Ngoài ra, plugin “explain” được kích hoạt theo mặc định trong phiên bản hiện tại và bạn sẽ cần thiết lập tên người dùng và mật khẩu mà nó sử dụng cho một tài khoản có đặc quyền để giải thích các truy vấn trên một schema cụ thể trên một máy chủ. Ví dụ, nếu bạn đang tiến hành phân tích các nhật ký chậm chủ yếu chứa các truy vấn từ cơ sở dữ liệu “world” trên db.example.com, bạn cần đảm bảo rằng tài khoản người dùng bạn đặt trong phần tiếp theo của cấu hình có đặc quyền cần thiết trên cơ sở dữ liệu “world” trên db.example.com. Để làm điều này, cuộn xuống trong cấu hình mẫu đến phần chứa cấu hình các plugin và thay đổi các tham số ‘user’ và ‘password’ thành một tài khoản phù hợp:
$conf['plugins'] = array(
...
'explain' => function ($sample) {
$conn['user'] = 'anemometer';
$conn['password'] = 'superSecurePass';
return $conn;
},
);
Bây giờ bạn nên có thể điều hướng đến máy chủ web của bạn trong trình duyệt và xem Box Anemometer hoạt động!
Phpdocs
Phpdocs cho công cụ này có thể được tìm thấy trong thư mục con “docs” của dự án.
Dependencies
Ứng dụng này yêu cầu máy chủ web Apache với PHP 5.3+ và cơ sở dữ liệu MySQL chứa dữ liệu được tổng hợp từ các nhật ký truy vấn chậm của MySQL.
Bản quyền và Giấy phép
Bản quyền 2014 thuộc về Box, Inc. Đã được bảo lưu mọi quyền.
Được cấp phép theo Giấy phép Apache, Phiên bản 2.0 (sau đây gọi là “Giấy phép”); bạn không được sử dụng tệp này trừ khi tuân thủ theo Giấy phép. Bạn có thể nhận được một bản sao của Giấy phép tại
http://www.apache.org/licenses/LICENSE-2.0
Trừ khi yêu cầu bởi luật pháp áp dụng hoặc đồng ý bằng văn bản, phần mềm được phân phối dưới Giấy phép được phân phối dưới “DƯỚI CƠ SỞ TÌNH HÌNH NHƯ VẬY”, KHÔNG CÓ BẤT KỲ BẢO ĐẢM HOẶC ĐIỀU KIỆN NÀO, không phải là tường minh hay ngụ ý. Xem Giấy phép để biết các điều kiện cụ thể về quyền và giới hạn theo Giấy phép.
Chi tiết tải về:
Tác giả: box
Nguồn: https://github.com/box/Anemometer
Giấy phép: Apache-2.0 license