ZABBIX企业监控实践(1):ZABBIX详细部署过程

乡下的树 2015年07月16日 632次浏览

项目实践环境:

image-1648376138096
注:为了减轻ZABBIX监控的负担,在项目环境中,建议大家将ZABBIX SERVER与数据库分开部署,不然随着监控指标的增大,会严重影响ZABBIX SERVER采集数据的性能;如果需要频繁调用API的话,那么建议APACHE与ZABBIX SERVER分开部署。

ZABBIX官网推荐部署资源规划:

image-1648376189964
注:个人建议如果硬件资源充足的话,还是在此配置上配置上适当增加资源

Zabbix支持操作系统平台:

  • Linux
  • IBM AIX
  • FreeBSD
  • NetBSD
  • OpenBSD
  • HP-UX
  • Mac OS X
  • Solaris
  • Windows: 2000, Server 2003, XP, Vista, Server 2008, 7, 8, Server 2012 (只支持Zabbix agent)

数据库系统要求列表:

image-1648376251002

前端要求:

image-1648376268334

其他组件要求:

image-1648376292938

数据库硬盘空间计算:

image-1648376364761
故ZABBIX数据库硬盘空间=配置文件大小+历史数据+趋势数据+事件数据
注:对于硬盘空间的预算,我们在部署前是无法计算的,只能在前期项目部署时先申请适当的硬盘空间,到项目后期时才根据监控项的数目进行计算扩容,后面会写一遍文章关于磁盘扩容的操作。

ZABBIX部署安装过程:

一、安装依赖组件:

这里为了方便安装,我们先使用本地源进行yum安装,如果需要对环境进行安全加固,后续再使用源码包对LAMP环境进行升级。
Zabbix Server上:

#yum install -y net-snmp*
#yum install -y httpd*
#yum install -y php*
#yum install -y gcc*
#yum install -y mysql-devel*
#yum install -y curl-devel
#yum install -y libxml2*
#yum install -y policycoreutils-python
#yum install -y unixODBC*

注:由于默认系统镜像中没有包含php-bcmath和php-mbstring这两个包,我们需要到网上自行下载来安装,大家可以到该网站搜索下载:http://rpm.pbone.net,注意版本要与你安装的php版本一致。

# rpm -qa | grep php

image-1648376414089

# rpm -ivh php-bcmath-5.3.3-3.el6_2.8.x86_64.rpm
# rpm -ivh php-mbstring-5.3.3-3.el6_2.8.x86_64.rpm

image-1648376441457
启动服务并设置开机自启:

# service snmpd start
# service httpd start
# chkconfig --level 35 snmpd on
# chkconfig --level 35 httpd on

Zabbix DB Server上:

#yum install -y mysql*

启动服务并设置开机自启:

# service mysqld start 
# chkconfig --level 35 mysqld on

二、Zabbix Server部署:

编译安装Zabbix Server
解压缩Zabbix Server包

# tar -zxvf zabbix-2.2.4.tar.gz

在解压出来的Zabbix目录对zabbix安装进行编译。

# cd zabbix-2.2.4
#./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 -with-unixodbc

参数说明:
–prefix:指定zabbix安装目录
–enable-server:支持zabbix服务器
-enable-agent:支持zabbix代理
–with-mysql:使用mysql客户端
–with-libcurl:支持web监控
–with-libxml2:支持虚拟机监控
–with-net-snmp:支持SNMP监控
-with-unixodbc:支持odbc数据库监控
image-1648376524812
image-1648376532541

编译成功后输入make install进行安装

#make install

image-1648376556680
image-1648376562306

连接并初始化mysql数据库
在ZABBIXDB01上创建数据库上并建立账号允许从远程访问数据库

[root@ZABBIXDB01 /]# mysqladmin -uroot password 'p@ssw0rd'
[root@ZABBIXDB01 /]# mysql -uroot -pp@ssw0rd
mysql> create schema zabbix character set utf8;
mysql> create user 'zabbix'@'%' identified by 'zabbix';
mysql> grant all on zabbix.* to 'zabbix'@'%';
mysql> flush privileges;

image-1648376587051
修改防火墙配置文件允许访问数据库

#vi /etc/sysconfig/iptables

加入下面一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

image-1648376608579
修改完毕后重启防火墙服务

# service iptables restart

image-1648376615013
在ZABBIX01服务器上测试使用zabbix账号是否能够成功访问mysql

# mysql -u zabbix -pzabbix -h 172.16.0.102

image-1648376638212
初始化zabbix数据库
Zabbix初始数据文件存放在zabbix解压目录下的database目录中
image-1648376643435
将相应数据库的数据文件复制到ZABBIXDB01服务器上的相应目录中,并进入该目录下进行数据库的导入。这里我们将数据文件复制到ZABBIXDB01服务器上的/tmp目录下

# cd /tmp/

image-1648376649593

#cd .mysql/

image-1648376666876
登录数据库

# mysql -uroot -pp@ssw0rd

执行以下脚本导入数据库

mysql> set sql_log_bin=0;
mysql> use zabbix;	
mysql> source ./schema.sql;
mysql> source ./images.sql;
mysql> source ./data.sql;
mysql> set sql_log_bin=1;

注:导入数据需要按照上面的顺序导入,否则会导入失败。

修改zabbix server配置文件与启动脚本

# vim /usr/local/zabbix/etc/zabbix_server.conf

image-1648376691423
修改zabbix server配置文件以下内容

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=172.16.0.102  (ZABBIXDB01数据库服务器的IP地址)
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306

添加zabbix用户和组

# groupadd zabbix
# useradd -g zabbix zabbix

image-1648376716063
新建Zabbix日志文件目录并修改目录权限

#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix

image-1648376725185
修改zabbix_server服务启动脚本
将zabbix_server启动脚本复制到 /etc/init.d/目录下进行修改。

[root@ZABBIX01 ~]# cd /tmp/zabbix-2.2.4
[root@ZABBIX01 zabbix-2.2.4]# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
#vi /etc/init.d/zabbix_server

修改如下:

...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONF_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
        ...
        daemon $ZABBIX_BIN -c $CONF_FILE
        ...
}

image-1648376760247
设置zabbix_server服务开机启动

#chkconfig --add zabbix_server
#chkconfig --level 35 zabbix_server on
#/etc/init.d/zabbix_server start

image-1648376769516

配置zabbix的web前端
从zabbix的解压目录复制前端文件到http网页目录下

#mkdir /var/www/html/zabbix
#cp -a /usr/zabbix/zabbix-2.2.0/frontends/php/* /var/www/html/zabbix
#chown -R zabbix.zabbix /var/www/html/zabbix/

image-1648376780740

# vi /etc/httpd/conf/httpd.conf

修改以下内容

DirectoryIndex index.php 
ServerName localhost:80

image-1648376802860
image-1648376809990

配置php

# vi /etc/php.ini

配置/etc/php.ini以下选项:

memory_limit = 256M
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
session.auto_start = 0  ;必须为0
mbstring.func_overload = 2
date.timezone = PRC

重启http服务

#service httpd restart

image-1648376825414

三、前端页面设置:

为了方便,这里先暂时关闭防火墙和Selinux,等配置完前端在进行防火墙和Selinux规则的设置
使用浏览器登陆zabbix前端进行setup设置
http://172.16.0.101/zabbix
image-1648376846259
PHP配置验证(此处必须验证通过才可以进入下一步,一般错误原因为版本太低、配置过低或者没有对应的库)
image-1648376854717
数据库连接验证,这里我们数据库类型我们选择MYSQL,数据库服务器输入ZABBIXDB01的IP地址172.16.0.101,数据库名和用户输入前面创建的”zabbix”,然后单击“Test Connection”验证通过,进入下一步
image-1648376861823
配置zabbix_server地址与端口信息(host填写IP、NAME填写主机名)
image-1648376866968
配置概览
image-1648376872228

配置完成后下载配置文件并存放到指定目录(按照窗口提示,将配置文件zabbix.conf.php上传到"/var/www/html/zabbix/conf/zabbix.conf.php"中)
image-1648376881310
最后完成安装
image-1648376886180
zabbix前端已经安装就绪,默认的用户名是Admin,密码是zabbix
image-1648376892305
zabbix主界面如图
image-1648376898726
为了安全起见,登录后第一件事先更改超级管理员密码
image-1648376905466
image-1648376911703
为了防止其他人随意更改zabbix配置,我们禁用ZABBIX重新安装
默认
image-1648376919616

# vi /var/www/html/zabbix/include/menu.inc.php

注释掉以下内容:
image-1648376931116
刷新页面
image-1648376935737

四、安全设置:

Selinux设置
重启开启selinux服务

# setenforce 1

设置以下规则

# chcon -R -t httpd_sys_content_rw_t /var/www/html 
# setsebool -P httpd_can_network_connect=true
# semanage port -a -t http_port_t -p tcp 10051

image-1648376961408
注:若semanage命令提示不存在,是因为没有安装policycoreutils-python

防火墙设置

# vim /etc/sysconfig/iptables

添加以下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

image-1648376971791
重启防火墙服务

# service iptables restart

image-1648376981197
至此,ZABBIX部署完毕
接下来,我会针对ZABBIX中LAMP环境进行升级与安全加固…