Zabbix监控系统部署:源码安装

1. 概述

本篇博客主要从zabbix使用者的角度(运维)来源码部署zabbix,并利用zabbix进行集群的性能监控,故障报警及处理等基础功能测试。
软件安装方式为源码编译安装最新版zabbix。源码部署不只有利于把控整个软件部署的整个过程及其细节,也可以更好地调整,移植和升级zabbix系统。php

1.1 基础环境

节点分配: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安装后升级
MAIL /bin/mail YUM
Zabbix zabbix-3.4.12.tar.gz 源码编译

配置约定:node

  1. 采用全局文件系统,减小部署过程
  2. 采用本地用户,而非LDAP认证缩短部署过程
  3. 不配置启动脚本,以远程管理方式启动服务

系统环境mysql

  1. 关闭防火墙:service iptables stop
  2. 取消selinux:setenforce 0 或修改配置文件/etc/selinux/config,使SELINUX=disabled

2. 部署过程

2.1 建立用户组

根据zabbix的部署文档,若是在相同节点同时部署zabbix server,zabbix proxy,zabbix agent等,须要为运行不一样的进程建立不一样的进程用户
本篇博客为了区分不一样进程的角色,虽然将服务分散在不一样节点,也建立不一样的进程用户:linux

  1. zabbix server进程用户:zbx_s
  2. zabbix proxy进程用户:zbx_p
  3. zabbix agent进程用户:zbx_a

在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

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》,博客园地址:http://www.javashuo.com/article/p-zfsvymnh-go.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环境。

注:升级过程参见包括: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

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监控前端的初始化安装。
本篇博客不涉及,参见如下内容:
博客园地址:http://www.javashuo.com/article/p-oxmkzymv-eh.html
笔记内链:《Zabbix监控系统部署:前端初始化.md
登录
当前端配置完成以后,即可登录zabbix
初次登录,默认的帐号为:Admin,密码为zabbix
登录以后,能够配置语言环境,其余用户等,具体参见如下内容:
博客园地址:
笔记内链:《Zabbix监控系统部署:基本功能测试.md
中文字体显示方块
这是由于zabbix前端配置的字体没法正常显示,这里参照网上的教程,将win10操做系统中的宋体字拷贝至zabbix前端目录下,并从新配置。
具体操做以下:

  1. win10找到【宋体】字,将其拷贝到nod17的zabbix字体目录下
  2. 配置字体配置文件
    vim /var/www/html/zabbix/include/defines.inc.php


  1. 刷新验证

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全局文件系统,不然会由于进程互斥致使没法启动进程

相关文章
相关标签/搜索