zabbix 监控mysql

zabbix 安装

1.安装PHP

Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上,注意,不支持PHP7

rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm

yum install php56w php56w-gd php56w-mysql php56w-bcmath php56w-mbstring php56w-xml php56w-ldap

vim /etc/php.ini

date.timezone = Asia/Shanghai

post_max_size = 32M

max_execution_time = 300

max_input_time = 300

always_populate_raw_post_data = -1

2.安装MySQL

MySQL建议使用5.6版本,CentOS6默认为5.1,不建议使用,性能偏低

rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

yum install -y mysql-server mysql-devel 

 

vim /etc/my.cnf 

[mysqld]

innodb_file_per_table  #独立表空间模式

service mysqld start  

 

mysql_secure_installation    #MySQL安全配置向导

Enter current password for root (enter for none):  <–初次运行直接回车

Set root password? [Y/n]   <– 是否设置root用户密码,输入y并回车或直接回车

Remove anonymous users? [Y/n]   <– 是否删除匿名用户,生产环境建议删除,所以直接回车

Disallow root login remotely? [Y/n]  <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止

Remove test database and access to it? [Y/n]   <– 是否删除test数据库,直接回车

Reload privilege tables now? [Y/n]   <– 是否重新加载权限表,直接回车

 

mysql -uroot -p

mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';

mysql> flush privileges;   

mysql> show databases;   

+--------------------+     

| Database           |     

+--------------------+     

| information_schema |     

| mysql              |     

| performance_schema |     

| zabbix             |     

+--------------------+

3.安装Zabbix

yum install httpd libxml2-devel net-snmp-devel libcurl-devel

groupadd  -g 201  zabbix

useradd  -g zabbix  -u 201 -m zabbix

wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz

tar zxvf zabbix-3.0.3.tar.gz

cd zabbix-3.0.3

/usr/bin/mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql

/usr/bin/mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql

/usr/bin/mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql

 

./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix/ --enable-server --enable-agent --with-net-snmp --with-libcurl --with-mysql --with-libxml2

make &&make install

(编译 zabbix 如果报下面错误,就做以下操作

configure: error: Not found mysqlclient library

#find / -name libmysqlclient*

ln -s /usr/lib64/mysql/libmysqlclient.so.18.1.0 /usr/lib64/mysql/libmysqlclient.so

ln -s /usr/lib64/mysql/libmysqlclient_r.so.18.1.0 /usr/lib64/mysql/libmysqlclient_r.so)

4.配置Zabbix

vim /etc/zabbix/zabbix_server.conf

DBHost=localhost  数据库ip地址

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

ListenIP=127.0.0.1,192.168.10.10  zabbix server ip地址

 

iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT 

service iptables save &&service iptables restart

ln -s /usr/local/zabbix/sbin/* /usr/sbin/

cp /home/sources/zabbix-3.0.3/misc/init.d/fedora/core/zabbix_* /etc/init.d/

chmod +x /etc/init.d/zabbix_*

sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_server

 

配置WEB

vim /etc/httpd/conf/httpd.conf

ServerName 127.0.0.1

ServerName 192.168.10.10

DocumentRoot  "/var/www/html"

 

mkdir -p /var/www/html/zabbix

cp -r /home/sources/zabbix-3.0.3/frontends/php/* /var/www/html/zabbix/

chown -R apache.apache /var/www/html/zabbix/

chkconfig zabbix_server on

/etc/init.d/zabbix_server start

service httpd restart

用浏览器访问http://192.168.10.10/zabbix,并按照提示安装:

服务器和客户端都需要装agent

tar -zxvf zabbix-3.0.3.tar.gz

   cdzabbix-3.0.3

  ./configure--prefix=/usr/local/zabbix --enable-agent

  make install

cp/zabbix-3.0.3/misc/init.d/tru64/zabbix_agentd /etc/init.d/

chmod +x /etc/init.d/

ln -s /usr/local/zabbix/sbin/*/usr/local/sbin/

ln -s /usr/local/zabbix/bin/*/usr/local/bin/

vi /etc/rc.d/init.d/zabbix_agentd

第二行添加 配置开机启动

#chkconfig: 2345 10 90

#description: zabbix agent

#

chkconfig --add zabbix_agentd

chkconfig zabbix_agentd on

客户端进行agent配置

 vi/usr/local/zabbix/etc/zabbix_agentd.conf

Server= 服务器ip

Servertive= 服务器ip

Hostname=连接客户端标示

Server服务器进行测试

cd /usr/local/zabbix/bin

  ./zabbix_get -s 192.168.0.111 -p10050 -k"system.cpu.load[all,avg15]";

 ./zabbix_get -s 192.168.0.111 -p10050 -k mysql.status[Uptime];

点击配置=>主机=>创建主机 

(7)填写主机信息,主机名称应与步骤3中设置的Hostname一致,并更新。 

(8)搜索需要的模板,添加后更新信息。 

2.1 创建检测脚本

打开zabbix agent配置目录 /etc/zabbix

cd /etc/zabbix

chk_mysql.sh

vim chk_mysql.sh
 
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:    check_mysql.sh
# Revision:    1.0
# Date:        2016/09/29
# Author:      lisiyu
# Email:       
# Website:     
# Description: 
# Notes:       ~
# -------------------------------------------------------------------------------
# Copyright:   2015 (c) DengYun
# License:     GPL
 
# 用户名
MYSQL_USER='zabbix'
 
# 密码
MYSQL_PWD='zabbix'
 
# 主机地址/IP
MYSQL_HOST='127.0.0.1'
 
# 端口
MYSQL_PORT='3306'
 
#数据连接
#MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER}  -h${MYSQL_HOST} -P${MYSQL_PORT}"
 
MYSQL_CONN="/usr/bin/mysqladmin" 
# 参数是否正确
if [ $# -ne "1" ];then 
    echo "arg error!" 
fi 
 
# 获取数据
case $1 in 
    Uptime) 
        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
        echo $result 
        ;; 
    Com_update) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
        echo $result 
        ;; 
    Slow_queries) 
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
        echo $result 
        ;; 
    Com_select) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
        echo $result 
                ;; 
    Com_rollback) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Questions) 
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
                echo $result 
                ;; 
    Com_insert) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_delete) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_commit) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_sent) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_received) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_begin) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
                echo $result 
                ;; 
                        
        *) 
        echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" 
        ;; 
esac

注意:脚本的zabbix用户运行权限

2.2 修改mysql检测配置

将原先的注释了,添加新的配置

vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
 
#UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1
#UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.ping,mysqladmin -uzabbix -pzabbix -P3306 -h172.0.0.1  ping | grep -c alive
UserParameter=mysql.version,mysql -V
 
 
 

2.3 关闭SELinux和firewall

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

2.4 重启agent

systemctl stop zabbix-agent
systemctl start zabbix-agent

2.5 如果还有问题,创建mysql连接文件

vim /etc/zabbix/zabbix_agentd.d/.my.cnf
 
[client]
user = zabbix
password = zabbix

三、zabbix测试mysql

注意,要在zabbix server上运行zabbix_get,在agent上会报错:

zabbix_get [24860]: Check access restrictions in Zabbix agent configuration

因为zabbix server是编译安装,所以我这里目录在/usr/local/zabbix

cd /usr/local/zabbix/bin
 
./zabbix_get -s 192.168.16.214 -p10050 -k "system.cpu.load[all,avg15]"; 
./zabbix_get -s 192.168.16.214 -p10050 -k mysql.status[Uptime];



作者:水他
链接:https://www.jianshu.com/p/5d4146776b46
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

修改/etc/my.cnf文件创建无密码登录

[root@localhost ~]# vim /etc/my.cnf
[client]
user=lqb
password=123456
 
[mysqladmin]
host=localhost
user=lqb
password=123456

有密码会导致其获取不到数据

netstat监听mysql端口3317

考虑下准备用netstat,先试下命令行:

[root@db_m2_slave2 zabbix]# netstat -ntpl|grep 3317 |grepmysql |wc |awk '{print $1}'

0

[root@db_m2_slave2 zabbix]#

Ok,没有告警信息存在,可以使用这个命令

之后修改agent的配置文件vim/etc/zabbix/zabbix_agentd.conf:

UserParameter=mysql.ping,netstat -ntpl|grep 3317 |grepmysql |wc |awk '{print $1}'

修改完,重启agentd服务

PS:执行chmod +s/bin/netstat防止zabbix-server远程调用失效。

去zabbix-server端check,能获取纯粹的数字0,证明此方法OK有效。

[root@hch_test_121_12php-5.6.20]#/usr/local/zabbix/bin/zabbix_get -s 192.168.3.73 -p10050 -kmysql.ping

0

[root@hch_test_121_12 php-5.6.20]#

猜你喜欢

转载自blog.csdn.net/yizhixiaocaiji26/article/details/79452880