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

配置约定:

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

系统环境

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

2. 部署过程

2.1 创建用户组

根据zabbix的部署文档,如果在相同节点同时部署zabbix server,zabbix proxy,zabbix agent等,需要为运行不同的进程创建不同的进程用户

本篇博客为了区分不同进程的角色,虽然将服务分散在不同节点,也创建不同的进程用户:

  1. zabbix server进程用户:zbx_s
  2. zabbix proxy进程用户:zbx_p
  3. 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环境。

注:升级过程参见包括:https://www.cnblogs.com/savokiss/p/6259816.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监控前端的初始化安装。

本篇博客不涉及,参见以下内容:

博客园地址:https://www.cnblogs.com/liwanliangblog/p/9410900.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全局文件系统,否则会因为进程互斥导致无法启动进程

Zabbix监控系统部署:源码安装的更多相关文章

  1. Nagios监控系统部署(源码)(四)

    Nagios监控系统部署(源码)   1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-pl ...

  2. 部署zabbix监控平台(源码安装)

    案例:部署Zabbix监控平台 1 问题 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境 源码安装Zabbix 安装监控端主机,修改基本 ...

  3. Nagios监控系统部署(源码)

    1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-plugin3.1 编译安装nagios- ...

  4. Zabbix监控系统部署:基本功能测试

    1. 概述2. 登陆2.1 登陆账号密码2.1 设置中文语言环境3. 创建用户3.1 用户创建入口3.2 添加用户信息3.3 用户报警媒介3.4 用户权限4. 创建监控主机4.1 添加一台监控主机4. ...

  5. Zabbix监控系统部署:前端初始化

    1. 概述 在上一篇博客<Zabbix监控系统部署:源码安装.md>中,主要进行了zabbix最新版的源码编译安装. (博客园地址:https://www.cnblogs.com/liwa ...

  6. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  7. Zabbix 监控系统部署

    Zabbix 监控系统部署 实验环境 Zabbix server:RHEL8 ip:192.168.121.10 一.关闭防火墙和selinux [root@Zabbix-server ~]# sys ...

  8. zabbix,php,nginx,mysql源码安装 神仙操作

    →软件包 mkdir /soft/ cd /soft ♦下载以下软件包 nginx-1.14.2.tar.gz wget http://nginx.org/download/nginx-1.14.2. ...

  9. Ubuntu16.04系统Tensorflow源码安装

    最近学习Tensorflow,记录一下安装过程.目前安装的是CPU版的 1.下载tensorflow源码 tensorflow是个开源库,在github上有源码,直接在上面下载.下载地址:https: ...

随机推荐

  1. Jmeter中默认语言的显示

    1.临时性语言的设置 即设置后只对本次使用有效,重启后恢复默认语言 选择Options—>Choose Language—>选择其他语言(例如:Chinese(Simplified)简体中 ...

  2. Python基础知识:字典

    1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...

  3. python+mongodb+flask的基本使用

    最近在做一个设备管理系统的后端,需要用python结合mongodb来实现,查了一下flask框架是比较合适的,自己摸索了好久一步步慢慢实现基本功能. 在程序开始之前请确保mongodb服务是开启的, ...

  4. 遇到电脑IP地址冲突了怎么解决

    由于路由器是自动分配IP地址的,如果多个设备设置的是IP地址自动获取,就会出现IP地址冲突的情况当局域网内有相同IP,并且该机器启动了防火墙,那就没办法自动更新到下一个IP的地址了,所以此时发生了冲突 ...

  5. January 15th, 2018 Week 03rd Monday

    We got things to do. Places to go. People to see. Futures to make. 我们有很多事情要做,有很多地方要去,有很多人要见,有很多美好的未来 ...

  6. webpack-dev-server 配置

    webpack.config.js 配置 var ExtractTextPlugin = require("extract-text-webpack-plugin"); var C ...

  7. oracle中nvarchar2字符集不匹配

    oracle当多表union时遇到nvarchar2类型时报错 字符集不匹配对使用nvarchar的地方,加上 to_char( nvarchar 的变量或字段 ) 如:select to_char( ...

  8. C#常见委托のdelegate定义,Func,Action,Predicate总结

    委托,顾名思义,就是让其他代理,本质就是为具有共性方法组定义一个方法模板:(交流可以加qq群:435226676) 委托常见的方式有一般委托显示定义,Func<T,TResult> (T, ...

  9. UVA11853-Paintball(对偶图)

    Problem UVA11853-Paintball Accept:229  Submit:1830 Time Limit: 3000 mSec Problem Description You are ...

  10. java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架

    1.安装JDK: 安装之后要配置环境变量,在系统变量里: 新建变量名JAVA_HOME,变量值C:\Program Files\Java\jdk1.8.0_77: 新建变量名CLASSPATH,变量值 ...