Bạn đang sử dụng Zabbix để giám sát hệ thống của mình. Bạn muốn theo dõi MySQL trên hệ thống giám sát của mình. Trong bài viết này tôi sẽ hướng dẫn bạn cách giám sát MySQL trên Zabbix.
1. Mô hình
2. Cài đặt
2.1 Thực hiện trên MySQL
2.1.1 Cài đặt zabbix agent
Trước tiên ta cần cài đặt Zabbix agent trên máy đang chạy MySQL
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm yum install zabbix-agent -y
Khai báo thông tin của zabbix server trong file /etc/zabbix/zabbix_agentd.conf
ListenPort=10050 Server=10.10.10.167
Bật zabbix agent
systemctl start zabbix-agent systemctl enable zabbix-agent
Mở port
firewall-cmd --zone=public --add-port=10050/tcp firewall-cmd --zone=public --permanent --add-port=10050/tcp
Tắt selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2.1.2 Cấu hình MySQL
Tạo user
mysql -u root -p grant usage on *.* TO 'zabbix'@'%' indentified by 'zabbix'; exit;
Khai báo user/password vừa tạo
mkdir /var/lib/zabbix vi /var/lib/zabbix/.my.cnf
Ghi vào file này nội dung như sau
[client] user = zabbix password = zabbix
Kiểm tra trong file /etc/zabbix/zabbix_agentd.conf
đã có dòng sau
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Kiểm tra trong thư mục /etc/zabbix/zabbix_agentd.d
ls /etc/zabbix/zabbix_agentd.d
Xem trong thư mục này đã có file userparameter_mysql.conf chưa. Nếu chưa có thì tạo file có tên như vậy và thêm vào đó nội dung như sau
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert]. # Key syntax is mysql.status[variable]. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}' # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data]. # Key syntax is mysql.size[<database>,<table>,<type>]. # Database may be a database name or "all". Default is "all". # Table may be a table name or "all". Default is "all". # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both". # Database is mandatory if a table is specified. Type may be specified always. # Returns value in bytes. # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[$ #Default below UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.uptime,HOME=/etc/zabbix mysqladmin status | cut -f2 -d ":" | cut -f1 -d "T" | tr -d " " UserParameter=mysql.threads,HOME=/etc/zabbix mysqladmin status | cut -f3 -d ":" | cut -f1 -d "Q" | tr -d " " UserParameter=mysql.questions,HOME=/etc/zabbix mysqladmin status | cut -f4 -d ":"|cut -f1 -d "S" | tr -d " " UserParameter=mysql.slowqueries,HOME=/etc/zabbix mysqladmin status | cut -f5 -d ":" | cut -f1 -d "O" | tr -d " " UserParameter=mysql.qps,HOME=/etc/zabbix mysqladmin status | cut -f9 -d ":" | tr -d " " UserParameter=mysql.version,mysql -V
Restart zabbix-agent
systemctl restart zabbix-agent
2.2 Thực hiện trên zabbix server
Tạo host trên server
Chọn template Template DB MySQL
Như vậy ta đã có thể giám sát MySQL trên Zabbix