1.1 基础环境
2. 部署过程
2.1 创建用户组
2.2 下载源码解压编译安装
2.2.1 下载源码解压
2.2.2 YUM安装依赖环境
2.2.3 编译安装最新版curl
2.2.4 更新GNU构建工具
2.2.5 YUM安装MySQL
2.2.5 配置编译安装
2.3 部署监控前端站点环境
2.3.1 部署Web服务器
2.3.2 部署DB数据库服务器
2.3.3 部署PHP环境
2.3.4 配置zabbix部分
3. 环境共享
3.1 安装NFS环境
3.2 配置NFS共享目录
3.3 启动NFS服务
3.4 node18和node19挂载
3.5 批量启动
1. 概述
本篇博客主要从zabbix使用者的角度(运维)来源码部署zabbix,并利用zabbix进行集群的性能监控,故障报警及处理等基础功能测试。
软件安装方式为源码编译安装最新版zabbix。源码部署不仅有利于把控整个软件部署的整个过程及其细节,也能够更好地调整,移植和升级zabbix系统。
1.1 基础环境
节点分配:
主机 | 配置 | 角色 | 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 | 源码编译 |
配置约定:
- 采用全局文件系统,减少部署过程
- 采用本地用户,而非LDAP认证缩短部署过程
- 不配置启动脚本,以远程管理方式启动服务
系统环境
- 关闭防火墙:service iptables stop
- 取消selinux:setenforce 0 或修改配置文件/etc/selinux/config,使SELINUX=disabled
2. 部署过程
2.1 创建用户组
根据zabbix的部署文档,如果在相同节点同时部署zabbix server,zabbix proxy,zabbix agent等,需要为运行不同的进程创建不同的进程用户
本篇博客为了区分不同进程的角色,虽然将服务分散在不同节点,也创建不同的进程用户:
- zabbix server进程用户:zbx_s
- zabbix proxy进程用户:zbx_p
- zabbix agent进程用户:zbx_a
在node17上执行命令:
创建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和node19
若采用LDAP进行全局认证,此过程可以省略,转为配置LDAP全局认证,这里不做介绍。
2.2 下载源码解压编译安装
2.2.1 下载源码解压
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/
2.2.2 YUM安装依赖环境
由于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
2.2.3 编译安装最新版curl
在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》,博客园地址:https://www.cnblogs.com/liwanliangblog/p/9419205.html
2.2.4 更新GNU构建工具
在上面的步骤中,已经通过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
选项验证安装
2.2.5 YUM安装MySQL
因为使用MySQL作为数据库,并且在编译zabbix时,需要指定MySQL的安装环境,在此通过YUM来安装数据库
node17上执行: yum -y install mysql mysql-server mysql-clients mysql-devel
2.2.5 配置编译安装
配置
./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
2.3 部署监控前端站点环境
zabbix监控前端时通过PHP语言构建,后端采用MySQL存储配置和监控数据。
在最新版的zabbix中,要求PHP的版本不低于5.6。
本部分主要介绍监控前端的站点环境部署
2.3.1 部署Web服务器
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
2.3.2 部署DB数据库服务器
安装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
2.3.3 部署PHP环境
zabbix前端采用PHP语言编写,并且zabbix-3.4.12版本需要PHP5.6以上支持。
本篇博客在最小化安装系统上通过YUM安装PHP环境,并且更新YUM源升级PHP的方式来部署PHP环境。
更新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
2.3.4 配置zabbix部分
拷贝站点前端文件
在解压后的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监控前端的初始化安装。
本篇博客不涉及,参见以下内容:
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9410900.html
笔记内链:《Zabbix监控系统部署:前端初始化.md》
登陆
当前端配置完成之后,便可登陆zabbix
初次登陆,默认的账号为:Admin,密码为zabbix
登陆之后,可以配置语言环境,其他用户等,具体参见以下内容:
博客园地址:
笔记内链:《Zabbix监控系统部署:基本功能测试.md》
中文字体显示方块
这是因为zabbix前端配置的字体无法正常显示,这里参照网上的教程,将win10操作系统中的宋体字拷贝至zabbix前端目录下,并重新配置。
具体操作如下:
- win10找到【宋体】字,将其拷贝到nod17的zabbix字体目录下
- 配置字体配置文件
vim /var/www/html/zabbix/include/defines.inc.php
- 刷新验证
3. 环境共享
按照配置约定,为了减少部署的步骤,将node17的/usr/local目录,通过NFS共享给node18和node19
同时因为node18和node19拷贝了node17的用户组和密码等文件,因此具有相通的zbx_s/zbx_p/zbx_a等进程用户
3.1 安装NFS环境
node17执行:yum -y install rpcbind nfs-utils
3.2 配置NFS共享目录
编辑文件vim /etc/exportfs,内容如下
/usr/local 192.168.80.0/24(rw,no_root_squash,no_all_squash)
3.3 启动NFS服务
执行service rpcbind start && service nfs start
,设置服务启动
执行命令chkconfig rpcbind on && chkconfig nfs on
,设置开机启动服务
3.4 node18和node19挂载
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的可用与否。
3.5 批量启动
共享了node17的文件系统之后,对于node18和node19,只需要按照“命令+配置”的方式,便可启动对应的服务。
使用全局文件系统启动服务需要注意的是程序的pid文件和sock文件等,需要放置在节点根文件系统上,而不能够放在NFS全局文件系统,否则会因为进程互斥导致无法启动进程