Zabbix+grafana搭建MySQL监控平台

来源:互联网 发布:必发数据 下载 编辑:程序博客网 时间:2024/05/01 03:32

这些天在研究MySQL监控方面的开源资料,经过评估,准备搭建一套grafana+zabbix+mysql监控环境,经过各种查资料摸索,整理整个过程,给还在这方面摸索的同学做个参考。

第一部分 zabbix安装配置

环境:lsb_release –a

Distributor ID: CentOS
Description: CentOS release 6.4 (Final)
Release: 6.4
Codename: Final

提前准备:
安装一个MySQL数据库,用于提供Zabbix存放数据

安装方式:源码编译安装
下载源码包:zabbix-3.4.3.tar.gz
下载地址:https://www.zabbix.com/download
上传到服务器任意位置后解压,/opt/zabbix

导入zabbix数据库脚本

cd /opt/zabbix/zabbix-3.4.3/database/mysql-rw-r--r-- 1 1000 1000 2861223 Oct 17 20:15 data.sql-rw-r--r-- 1 1000 1000 1978341 Oct 17 20:11 images.sql-rw-r--r-- 1 1000 1000  134738 Oct 17 20:15 schema.sql

tar -zxvf zabbix-3.4.3.tar.gz
编译:

./configure --enable-server --enable-agent --with-mysql=/export/servers/app/mysql-5.6.23/mysql_config -enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

注意:/export/servers/app/mysql-5.6.23/mysql_config 是mysql数据库配置文件地址

可能会出现以下问题:

报错:
checking for the linux kernel version… 2.6 family (2.6.32-358.el6.x86_64)
checking size of void *… 8
checking for mysql_config… /export/servers/app/mysql-5.6.23/mysql_config
configure: error: MySQL library not found

解决方法:

yum install mysql-devel

报错:

checking for xmlReadMemory in -lxml2… yes
checking for net-snmp-config… no
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config

解决方法:

yum install net-snmp-devel

报错:
Unable to use libevent (libevent check failed)

解决:

yum install libevent-devel

报错:
Unable to use libpcre (libpcre check failed)

安装 pcre库,
下载:pcre-8.36.tar.gz
解压:tar –zxvf pcre-8.36.tar.gz
编译:cd pcre-8.36
./configure –enable-utf8
make make install

报错:
curl library not found
解决:
yum install libcurl-devel

configure 完成!

开始安装:
Make
make install

安装完成后配置 zabbix_server.conf
路径:vi /usr/local/zabbix/etc/zabbix_server.conf

cat /usr/local/zabbix/etc/zabbix_server.conf | grep -v ^# | grep -v ^$LogFile=/tmp/zabbix_server.logDBName=zabbixDBUser=zabbixDBPassword=zabbixDBSocket=/export/servers/data/my3306/run/mysqld.sockDBPort=3306Timeout=4LogSlowQueries=3000

如果有启动错误:
zabbix_server: error while loading shared libraries: libmysqlclient.so.
error while loading shared libraries: libpcre.so.1: cannot open shared object file:

解决方法:

echo "/export/servers/app/mysql-5.6.23/lib" >> /etc/ld.so.confecho "/usr/local/lib" >> /etc/ld.so.confldconfig

做几个软连接

[root@localhost ~]# ln -s /usr/local/zabbix/bin/* /usr/bin/[root@localhost ~]# ln -s /usr/local/zabbix/sbin/* /usr/sbin/[root@localhost ~]# cp /opt/zabbix/zabbix-3.4.3/misc/init.d/fedora/core/* /etc/init.d/[root@localhost ~]# vi /etc/init.d/zabbix_server

修改这行:
BASEDIR=/usr/local/zabbix

修改完成后启动zabbix:

/etc/init.d/zabbix_server start

查看zabbix日志:

tail -200f /tmp/zabbix_server.log

第二部分 php安装配置

安装包准备:
放到: /usr/local/apache-php-packages
apr-1.6.3.tar.gz
apr-util-1.6.1.tar.gz
httpd-2.4.29.tar.gz
libxml2-2.7.4.tar.gz
pcre-8.20.tar.gz
php-5.6.32.tar.gz

安装apr-1.6.3.tar.gz

cd /usr/localmkdir aprcd /usr/local/apache-php-packagestar -zxvf apr-1.6.3.tar.gzcd apr-1.6.3./configure --prefix=/usr/local/aprMakeMake install

同样的方法安装apr-util-1.6.1.tar.gz,pcre-8.20.tar.gz

可能出现的问题:
xml/apr_xml.c:35:19: error: expat.h: No such file or directory

解决:

yum install expat-devel

安装apache:

makdir /usr/local/apachecd /usr/local/apache-php-packagestar -zxvf httpd-2.4.29.tar.gzcd httpd-2.4.29./configure --prefix=/usr/local/apache --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-utilmake make install

启动apache

/usr/local/apache2/bin/apachectl start

测试是否启动成功:

curl http://127.0.0.1<html><body><h1>It works!</h1></body></html>

拷贝zabbix web到apache:

cp -r /opt/zabbix/zabbix-3.4.3/frontends /usr/local/apache2/htdocs/

将 frontends/php 下面的文件拷贝到 /usr/local/apache2/htdocs/ 下

安装php:

cd /usr/local/apache-php-packagestar –zxvf php-5.6.32.tar.gzcd php-5.6.32
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/lib --disable-cli --enable-shared --with-libxml-dir --with-gd --with-openssl --enable-mbstring --with-mcrypt --with-mysqli --with-mysql --enable-opcache --enable-mysqlnd --enable-zip --with-zlib-dir --with-pdo-mysql --with-jpeg-dir --with-freetype-dir --with-curl --without-pdo-sqlite --without-sqlite3 --enable-bcmath --enable-sockets --with-gettext --with-mysqli=/export/servers/app/mysql-5.6.23/bin/mysql_config
makemake install

问题:
configure: error: jpeglib.h not found.
解决:

yum install  libjpeg-devel

问题:
configure: error: mcrypt.h not found. Please reinstall libmcrypt
解决:

install -y libmcrypt-devel

配置php:

cp php.ini-production /usr/local/php/lib/php.inivim /usr/local/apache2/conf/httpd.conf

找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容
  AddType application/x-httpd-php .php (.前面有空格)
AddType application/x-httpd-php-source .phps (.前面有空格)
增加起始页:

<IfModule dir_module>      DirectoryIndex index.html index.php  </IfModule> 

重启apache

/usr/local/apache2/bin/apachectl stop/usr/local/apache2/bin/apachectl start

访问zabbix首页
http://zabbix.server.ip/index.php

zabbix.server.ip 为安装服务器的IP地址

出现配置界面如下:
引导页

开始配置,点击 next step
这里写图片描述

显示缺少的组件或者要改的配置,按提示依次修改 /usr/local/php/lib/php.ini

配置完成,显示登录页面:
这里写图片描述

初始用户名密码: Admin/zabbix

第三部分 Zabbix监控MySQL

一、 在客户端(MySQL服务器)上安装zabbix agent
添加zabbix账号:

groupadd zabbixuseradd zabbix -g zabbix -s /sbin/nologin

1、上传zabbix源码包(与zabbix server同一个包)zabbix-3.4.3.tar.gz

tar –zxvf zabbix-3.4.3.tar.gzcd zabbix-3.4.3./configure --prefix=/usr/local/zabbix --with-net-snmp --enable-agent make make install

4、copy agent端运行所需要的脚本

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/chmod +x /etc/init.d/zabbix_agentd

注意,要修改一下这个启动脚本, vi /etc/init.d/zabbix_agentd 将目录修改为如下

DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

5、配置agent端配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

Server=172.25.44.100                       #填写zabbix-Server的IP地址ServerActive=172.25.44.100             #修改为zabbix-Server的IP地址Hostname=zabbix_agent_110          #填写本机的HostName,注意Server端配hosts,要能解析UnsafeUserParameters=1                 #是否允许自定义的key,1为允许,0为不允许

6、从zabbix 服务端验证一下,可以解析客户端服务器的hostname(注意:此步骤在服务端操作)

7、启动zabbix agent端

/etc/init.d/zabbix_agentd start

二、 配置MySQL监控脚本

cd /usr/local/zabbix/mkdir scriptscd scripts

上传mysql监控脚本 ck_mysql.sh

#!/bin/sh# -------------------------------------------------------------------------------MYSQL_SOCK="/export/servers/data/my3306/run/mysqld.sock"# 用户名MYSQL_USER='zabbix'# 密码MYSQL_PWD='zabbix'# 主机地址/IPMYSQL_HOST='127.0.0.1'# 端口MYSQL_PORT='3306'# 数据连接MYSQL_CONN="/export/servers/app/mysql-5.7.16/bin/mysqladmin -u${MYSQL_USER}   -h${MYSQL_HOST} -P${MYSQL_PORT} " # 获取数据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

赋权:

chmod u+x /usr/local/zabbix/scripts/chk_mysql.shchown -R zabbix.zabbix /usr/local/zabbix/scripts/chk_mysql.sh

修改zabbix_agentd.conf

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

增加下面三行脚本

UserParameter=mysql.version,mysql -VUserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1UserParameter=mysql.ping,mysqladmin -uzabbix -pzabbix -P3306 -h127.0.0.1  ping | grep -c alive

注意修改端口用户名密码

在MySQL数据库添加zabbix用户

mysql>GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'zabbix';mysql> flush privileges;

启动Zabbix agent

/etc/init.d/zabbix_agentd start

在Zabbix Server端测试:

zabbix_get -s 172.25.50.211 -p10050 -k mysql.status[Com_update] mysqladmin: connect to server at '127.0.0.1' failederror: 'Access denied for user 'zabbix'@'127.0.0.1' (using password: NO)'

解决方法:
先用mysqladmin定位查找的my.cnf路径:

/export/servers/app/mysql-5.7.16/bin/mysqladmin –help

找到:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /export/servers/app/mysql-5.7.16/etc/my.cnf ~/.my.cnf
找一个对应的my.cnf 添mysqladmin的用户密码

vi  /export/servers/app/mysql-5.7.16/etc/my.cnf
[mysqladmin]user=zabbixpassword=zabbix

重启MySQL

再测试:

[root@HC-25-44-100 ~]# zabbix_get -s 172.25.50.211 -p10050 -k mysql.status[Com_update]0

三、 配置监控

1、 配置主机组:

这里写图片描述

这里写图片描述

2、 配置主机 host
这里写图片描述

这里写图片描述

选择模板:
这里写图片描述
Template DB MySQL
Template OS Linux
3、 查看图表
这里写图片描述

第四部分 grafana安装配置

安装grafana包

rpm -ivh grafana-4.1.1-1484211277.x86_64.rpm

安装grafana-zabbix插件
https://grafana.com/plugins/alexanderzobnin-zabbix-app/installation

可以手动下载
alexanderzobnin-grafana-zabbix-v3.7.0-0-g1a85503.zip

将包放到grafana的插件目录,默认路径:/var/lib/grafana/plugins

解压后重命名:alexanderzobnin-grafana-zabbix

重启grafana

service  grafana-server restart

进入grafana,找到zabbix插件,点击启用:

这里写图片描述

这里写图片描述

回到主页,点击添加数据源:

这里写图片描述

配置zabbix数据源:

这里写图片描述

type选择zabbix
url为zabbix-server php路径下的api_jsonrpc.php
按照上述配置,配完后保存

添加panel
这里写图片描述

编辑
这里写图片描述
选择监控项:
这里写图片描述
修改标题:
这里写图片描述
保存,回到Dashboard查看效果:
这里写图片描述

完成,这里展示的是zabbix自带的几个监控项,MySQL应该可以自定义一些监控,等研究后再分享。

参考文章:
https://www.zabbix.com/documentation/3.4/zh/manual
https://grafana.com/plugins/alexanderzobnin-zabbix-app/installation
http://www.linuxidc.com/Linux/2017-05/143366.htm
https://www.cnblogs.com/yangxia-test/p/4174372.html
http://www.cnblogs.com/yangxia-test/archive/2012/11/09/2762486.html

原创粉丝点击