本篇博客主要从zabbix使用者的角度(运维)来源码部署zabbix,并利用zabbix进行集群的性能监控,故障报警及处理等基础功能测试。
软件安装方式为源码编译安装最新版zabbix。源码部署不只有利于把控整个软件部署的整个过程及其细节,也可以更好地调整,移植和升级zabbix系统。php
节点分配:html
主机 | 配置 | 角色 | IP | 备注 |
node17 | >512M | zabbix_server | 192.168.80.17 | 提供LANMP环境 |
node18 | >512M | zabbix_proxy | 192.168.80.18 | |
node19 | >512M | zabbix_agent | 192.168.80.19 |
系统版本:前端
操做系统 | CentOS6.5_x86_64 | 安装方式 |
HTTP | httpd-2.2.15-69 | YUM |
MySQL | mysql-5.1.71 | YUM |
PHP | PHP 5.6.36 | YUM安装后升级 |
/bin/mail | YUM | |
Zabbix | zabbix-3.4.12.tar.gz | 源码编译 |
配置约定:node
系统环境mysql
根据zabbix的部署文档,若是在相同节点同时部署zabbix server,zabbix proxy,zabbix agent等,须要为运行不一样的进程建立不一样的进程用户
本篇博客为了区分不一样进程的角色,虽然将服务分散在不一样节点,也建立不一样的进程用户:linux
在node17上执行命令:c++
建立server进程用户:useradd -M -s /sbin/nologin -u 501 zbx_s 建立proxy进程用户:useradd -M -s /sbin/nologin -u 502 zbx_p 建立agent进程用户:useradd -M -s /sbin/nologin -u 503 zbx_a
按照约定:将node17的/etc/passwd,/etc/group,/etc/shadow拷贝至node18和node19web
若采用LDAP进行全局认证,此过程能够省略,转为配置LDAP全局认证,这里不作介绍。sql
zabbix官网地址:https://www.zabbix.com/
最新版zabbix下载地址:
wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.12/zabbix-3.4.12.tar.gz
解压源码目录:
tar -zxvf zabbix-3.4.12.tar.gz -C /tmp/ && cd /tmp/zabbix-3.4.12/
数据库
因为node17系统是最小化安装,所以须要安装基本的编译环境和构建工具:
执行yum -y install gcc gcc-c++ libtool autoconf automake
由于本篇博客要在配置编译环境过程,即执行./configure脚本时,指定一些依赖软件环境,主要包括:
libxml2,libxml2-devel,libevent,libevent-devel,pcre,pcre-devel,net-snmp,net-snmp-devel
所以,须要经过YUM来安装这些依赖软件环境。执行命令:
yum -y install libxml2 libxml2-devel libevent libevent-devel net-snmp net-snmp-devel pcre pcre-devel
在centos6.5系统上安装zabbix-3.4.12时,由于操做系统版本太低的问题,会致使在后面配置zabbix发送邮件时报错,报错的缘由为curl版本太低。
所以须要更新node17上的curl版本。
此时经过rpm -qa | grep curl
,检查系统是否安装curl包,并经过curl -V
肯定curl的版本。
node17检查的版本为curl 7.19.7,而且能够经过该命令,查看该版本支持的协议有:tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
下载新版curl
经过wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
下载最新版本的curl源码
解压配置编译安装
tar -zxvf curl-7.61.0.tar.gz -C /tmp cd /tmp/curl-7.61.0 ./configure make && make install
此时执行curl -V
,可以看到curl版本已经更新至7.61,且支持的协议有:dict file ftp gopher http imap pop3 rtsp smtp telnet tftp
虽然已经安装了最新版的curl,可是此时YUM命令已经不能使用,错误提示:No module named pycurl
注:此时须要解决这个问题,具体方法参见博客《Error【0007】:zabbix中由于curl版本太低而没法发送邮件.md》,博客园地址:http://www.javashuo.com/article/p-zfsvymnh-go.html
在上面的步骤中,已经经过YUM安装了autoconf和automake等GNU构建工具
可是在编译zabbix时,指定的编译选项:--enable-proxy和--enable-agent会由于这两个工具的版本太低而没法编译。
所以,这部分主要进行这两个版本的更新。
首先查看当前的工具版本:
autoconf -V
: autoconf (GNU Autoconf) 2.63
automake --version
:automake (GNU automake) 1.11.1
在GNU官网下载这两个工具的更高版本:
autoconf:wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
automake:wget ftp://ftp.gnu.org/gnu/automake/automake-1.5.tar.gz
解压并编译安装
tar -zxvf autoconf-2.68.tar.gz -C /tmp && cd /tmp/autoconf-2.68 && ./configure && make && make install tar -zxvf automake-1.5.tar.gz -C /tmp && cd /tmp/automake-1.15 && ./configure && make && make install
从新登录经过autoconf --version和automake --version
选项验证安装
由于使用MySQL做为数据库,而且在编译zabbix时,须要指定MySQL的安装环境,在此经过YUM来安装数据库
node17上执行:
yum -y install mysql mysql-server mysql-clients mysql-devel
配置
./configure --prefix=/usr/local/zabbix/3.4.6 \ --enable-server --enable-proxy --enable-agent --enable-ipv6 \ --with-mysql --with-libxml2 --with-net-snmp --with-libevent --with-libpcre --with-openssl --with-libcurl \
编译安装
make all && make install
zabbix监控前端时经过PHP语言构建,后端采用MySQL存储配置和监控数据。
在最新版的zabbix中,要求PHP的版本不低于5.6。
本部分主要介绍监控前端的站点环境部署
Web服务器经过httpd提供服务。
安装HTTP
node17执行命令:yum -y install httpd
配置
编辑httpd的主配置文件,
vim /etc/httpd/conf/httpd.conf
,修改ServerName=192.168.80.17
启动httpd
node17执行,service httpd restart && chkconfig httpd on
安装MySQL
上述过程当中,已经经过YUM安装了MySQL,这里主要时配置MySQL
启动MySQL服务:service mysqld start
配置MySQL
执行mysql
回车,进入数据库后:
#删除无用用户和登录 delete from mysql.user where user = ' ' and host = 'node17'; delete from mysql.user where user = ' ' and host = 'localhost'; delete from mysql.user where user = 'root' and host = 'node17'; #受权root用户对全部库的权限 grant all privileges on *.* to 'root'@'localhost' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'192.168.80.1' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'192.168.80.17' identified by 'liwanliang'; #刷新权限 flush privileges; #建立zabbix数据库 create database zabbix; #受权zabbix用户对zabbix库的权限 grant all privileges on zabbix.* to 'zabbix'@'192.168.80.17' identified by 'liwanliang'; #刷新权限 flush privileges;
配置MySQL默认字符编码
由于MySQL默认编码不是utf8,所以会在后续的配置中,出现中文变成???的现象,所以须要提早配置MySQL字符编码,以下:
配置MySQL开机启动
node17执行:chkconfig mysqld on
zabbix前端采用PHP语言编写,而且zabbix-3.4.12版本须要PHP5.6以上支持。
本篇博客在最小化安装系统上经过YUM安装PHP环境,而且更新YUM源升级PHP的方式来部署PHP环境。
注:升级过程参见包括:http://www.javashuo.com/article/p-hbplcore-ge.html
更新YUM源
node17上执行
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
安装PHP5.6环境
yum -y install php56w php56w-fpm php56w-mysql php56w-mbstring php56w-gd php56w-dom php56w-bcmath php56w-ldap
配置PHP
在配置文件/etc/php.ini中,如下内容须要修改或者取消注释
post_max_size = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Asia/Shanghai always_populate_raw_post_data = -1
注:这些参数会在前端站点初始化时检查并提示修改
重启httpd生效
service httpd restart
拷贝站点前端文件
在解压后的zabbix目录下,有一个叫作frontends的目录,里面存放着zabbix前端框架文件,将其拷贝至httpd服务器根目录下:
cp -r /tmp/zabbix-3.4.12/frontends/php /var/www/html/zabbix
导入数据库
在解压后的zabbix目录下,有一个叫作database的目录,里面存放着各种zabbix后端数据库的初始化sql语句。
执行如下命令,进行数据库安装:
#注:如下顺序最后不要乱,以避免报错 mysql -h 192.168.80.17 -uzabbix -p zabbix < schema.sql #输入密码:liwanliang,等待结束 mysql -h 192.168.80.17 -uzabbix -p zabbix < images.sql #输入密码:liwanliang,等待结束 mysql -h 192.168.80.17 -uzabbix -p zabbix < data.sql #输入密码:liwanliang,等待结束
图形化配置
安装了前端和数据库以后,即可以经过浏览器进行zabbix监控前端的初始化安装。
本篇博客不涉及,参见如下内容:
博客园地址:http://www.javashuo.com/article/p-oxmkzymv-eh.html
笔记内链:《Zabbix监控系统部署:前端初始化.md》
登录
当前端配置完成以后,即可登录zabbix
初次登录,默认的帐号为:Admin,密码为zabbix
登录以后,能够配置语言环境,其余用户等,具体参见如下内容:
博客园地址:
笔记内链:《Zabbix监控系统部署:基本功能测试.md》
中文字体显示方块
这是由于zabbix前端配置的字体没法正常显示,这里参照网上的教程,将win10操做系统中的宋体字拷贝至zabbix前端目录下,并从新配置。
具体操做以下:
vim /var/www/html/zabbix/include/defines.inc.php
按照配置约定,为了减小部署的步骤,将node17的/usr/local目录,经过NFS共享给node18和node19
同时由于node18和node19拷贝了node17的用户组和密码等文件,所以具备相通的zbx_s/zbx_p/zbx_a等进程用户
node17执行:yum -y install rpcbind nfs-utils
编辑文件vim /etc/exportfs,内容以下
/usr/local 192.168.80.0/24(rw,no_root_squash,no_all_squash)
执行service rpcbind start && service nfs start
,设置服务启动
执行命令chkconfig rpcbind on && chkconfig nfs on
,设置开机启动服务
node18和node19须要安装nfs-utils,执行yum -y install nfs-utils rpcbind
安装
执行命令挂载:mount.nfs 192.168.80.17:/usr/loca/ /usr/local
经过ldd /usr/local/zabbix/3.4.6/sbin/zabbix_agentd
验证agent的可用与否。
共享了node17的文件系统以后,对于node18和node19,只须要按照“命令+配置”的方式,即可启动对应的服务。 使用全局文件系统启动服务须要注意的是程序的pid文件和sock文件等,须要放置在节点根文件系统上,而不可以放在NFS全局文件系统,不然会由于进程互斥致使没法启动进程