Vì nhu cầu xem thông số con DB Mysql lúc run test performance nên mình đã ngồi setup Prometheus để làm. Vì sao bài trước mình giới thiệu về telegraph mà giờ mình lại giới thiệu về Prometheus? Nguyên nhân là lúc mình follow theo bài viết hướng dẫn telegraf thì gặp vấn đề không xử lý được, nên mình chuyển qua dùng tool khác luôn. =))))
Như những bài trước, mình cũng bắt đầu bài với mô hình làm việc giữa các tools:
- Mysql_exporter lấy thông tin của Mysql (sử dụng account của user có quyền)
- Prometheus Server là 1 server thu nhận các metrics của mysql_exporter
- Grafana kết nối tới Prometheus Server lấy các thông tin cần thiết.
Nội dung bài viết
I. Tạo User cho MySQL
Trên trang hướng dẫn của Mysql_exporter có hướng dẫn như sau:
[bash]
CREATE USER ‘exporter’@’localhost’ IDENTIFIED BY ‘your_password’ WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ‘exporter’@’localhost’;
[/bash]
Để làm được việc trên có nhiều cách:
- Sử dụng mysql shell, các bạn tự google để mở được mysql shell rồi copy nhưng command trên.
- Sử dụng tool như phpMyadmin hoặc Mysql Workbench để tạo user. Miễn là bạn assign account đó đúng quyền và DB là được.
II. Cài đặt Mysql_exporter
Download từ https://prometheus.io/download/#mysqld_exporter
- Giải nén
- Tạo ra 1 file .my.cnf trong đó có nội dung:
[bash]
[Client]
user=username
password=your_password
[/bash]
Note: Nếu hiện lỗi “no user or password specified under [client] in .my.cnf thì bạn cần đặt password trong dấu “” thì mới chạy.
Thanks anh Nguyễn Dương Hải đã note lại chỗ này.
- Run service bằng PowerShell quyền Admin
[bash]
.\mysqld_exporter.exe –config.my-cnf=.my.cnf
[/bash]
Nếu run thành công thì khi access vào được vào trang service: http://localhost:9104
III. Cài đặt Prometheus Server
Down Prometheus: https://prometheus.io/download/#prometheus
- Giải nén
- Tạo ra file config prometheus-mysql.yml có nội dung:
[bash]
# config file for monitoring MySQL via mysqld_exporter on localhost
global:
scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
– job_name: ‘mysql-monitor’
static_configs:
– targets: [‘localhost:9104’]
labels:
alias: db1
[/bash]
- Run service bằng PowerShell quyền Admin
[bash]
.\prometheus.exe –config.file=prometheus-mysql.yml –web.listen-address="0.0.0.0:9105"
[/bash]
Lưu ý:
- Port mặc định của Prometheus là 9090, nếu bạn chưa có service nào sử dụng port 9090 thì ko cần đoạn –web.listen-address=”0.0.0.0:9105″
Nếu run thành công thì bạn sẽ view được pages:
IV. Tạo data source cho Prometheus trên grafana
Đoạn này bạn chỉ cần tạo Data source loại Prometheus là được
V. Tạo dashboard cho Mysql
Bạn chọn phần Import dashboard rồi chọn điền ID dashboard: 7362 hoặc 8564 hoặc bạn có thể chọn bất kỳ dashboard nào bạn muốn: https://grafana.com/grafana/dashboards?dataSource=prometheus&search=mysql
Kết quả cuối cùng:
Have fun and enjoy!
[…] ← Previous […]
Bài viết tuyệt vời ^^. Xin góp ý nhỏ là mình follow theo bài viết của bạn thì đến chỗ .my.conf , trong đó password cần để trong dấu “” thì mới chạy. Nếu không nó sẽ hiện lỗi “no user or password specified under [client] in .my.cnf
Thanks anh, để em update nhé.