设为首页 收藏本站
查看: 15977|回复: 1

[经验分享] ZABBIX详细部署过程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-17 09:06:50 | 显示全部楼层 |阅读模式
前言:
从2014年7月15日,那时我刚刚开始接触ZABBIX,到现在刚好整整一年时间,这一年里,谈不上对ZABBIX进行深入研究,接触过两个ZABBIX的项目,平时或多或少的对这两个项目进行修修补补。直到最近的两个月内,公司决定采用ZABBIX进行二次开发成自己的产品(之前一直在SCOM与ZABBIX之间纠结),所以有了充足的时间对ZABBIX进行系统学习,逐步对ZABBIX有了更深入的了解,也积累了一些学习笔记。
最近打算整理一下笔记,对这年来关于ZABBIX的知识做一些梳理,并将尽量围绕项目要求上共享一些文章,跟大家一起交流在企业项目部署、运维ZABBIX过程中遇到的问题与细节。

项目实践环境:
主机名
IP
角色
操作系统
ZABBIX01
172.16.0.101
ZABBIX_SERVER、APACHE、PHP
rhel-server-6.1
ZABBIXDB01
172.16.0.102
MYSQL
rhel-server-6.1
注:为了减轻ZABBIX监控的负担,在项目环境中,建议大家将ZABBIX SERVER与数据库分开部署,不然随着监控指标的增大,会严重影响ZABBIX SERVER采集数据的性能;如果需要频繁调用API的话,那么建议APACHE与ZABBIX SERVER分开部署。

ZABBIX官网推荐部署资源规划:
场景
平台
CPU/内存
数据库
监控主机数量
小型
CentOS
Virtual  Appliance
MySQL  InnoDB
100
中型
CentOS
2  CPU cores/2GB
MySQL  InnoDB
500
大型
RedHat  Enterprise Linux
4  CPU cores/8GB
RAID10  MySQL InnoDB 或 PostgreSQL
>1000
超大型
RedHat  Enterprise Linux
8  CPU cores/16GB
Fast  RAID10 MySQL InnoDB 或 PostgreSQL
>10000
注:个人建议如果硬件资源充足的话,还是在此配置上配置上适当增加资源

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


数据库系统要求列表:
软件
版本
备注

MySQL
5.0.3 或以后版本
必须为InnoDB引擎

Oracle
10g 或以后版本
PostgreSQL
8.1或以后版本
为了获得更好的性能,建议使用不低于PostgreSQL 8.3版本


SQLite
3.3.5 或以后版本
IBM DB2
9.7 或以后版本

前端要求:
软件
版本
Apache
1.3.12或以后版本
PHP
5.3.0或以后版本

其他组件要求:
组件名称
备注
OpenIPMI
如果需要使用IPMI监控时,则安装该组件
libssh2
如果需要使用SSH监控时,则安装该组件
Fping
使用ping判断监控的主机是否存活,一般选择安装
libcurl
如果需要监控WEB场景时,这安装该组件,一般选择安装
libiksemel
如果需要使用Jabber方式警报,这安装该组件
net-snmp
如果需要使用SNMP监控时,则安装该组件;SNMP常用于用于监控网络设备等硬件,所以一般选择安装该组件

数据库硬盘空间计算:
参数
所需磁盘空间公式 (字节)

ZABBIX配置
固定值,一般小于10M

历史数据
公式:保存天数*(监控项总数/刷新频率)*24*3600*50字节
  说明:
  监控项总数:监控系统中所有监控项的数量,可在WEB主页查看到该数值
  保存天数:历史数据保留的天数,一般为7天
  刷新频率:所有监控项的平均刷新频率
  字节:保存一条历史记录所需的字节,数取决于数据库引擎,通常为50个字节。





趋势数据
公式:保存天数*(监控项总数/3600)*24*3600*128字节
  说明:
  监控项总数:监控系统中所有监控项的数量,可在WEB主页查看到该数值
  保存天数:趋势数据保留的天数,一般为一年即365天
  字节:保存一条趋势数据所需的字节,数取决于数据库引擎,通常为128个字节。




事件数据
公式:保存天数*事件个数*24*3600*130字节
  说明:
  事件个数: 每秒产生的事件个数。该值需要根据你监控的环境进行自行估算出大概值。
  保存天数: 事件数据保留的天数,默认为7天
  字节: 保存一条事件记录所需的字节,数取决于数据库引擎,通常为130个字节。




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

ZABBIX部署安装过程:
一、安装依赖组件:
这里为了方便安装,我们先使用本地源进行yum安装,如果需要对环境进行安全加固,后续再使用源码包对LAMP环境进行升级。
ZabbixServer上:
#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
wKioL1WnyKuToWNGAAHA8Y49PGk731.jpg
# rpm -ivhphp-bcmath-5.3.3-3.el6_2.8.x86_64.rpm
# rpm -ivhphp-mbstring-5.3.3-3.el6_2.8.x86_64.rpm
wKiom1WnxwHxKowGAAH455_EcJQ253.jpg
启动服务并设置开机自启:
# service snmpd start
# service httpd start
# chkconfig --level 35 snmpd on
# chkconfig --level 35 httpd on

ZabbixDB 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数据库监控
wKioL1WnyRjBk0gcAADi2IJmCl4173.jpg
wKiom1Wnx1XhwTrzAAPLHRwmDWw239.jpg
编译成功后输入make install进行安装
#make install
wKioL1WnyUvBECeJAAAlbSSD-ss821.jpg
wKioL1WnyXLTcAyzAAdKjmGsR3Y172.jpg
连接并初始化mysql数据库
在ZABBIXDB01上创建数据库上并建立账号允许从远程访问数据库
[iyunv@ZABBIXDB01 /]# mysqladmin -urootpassword 'p@ssw0rd'
[iyunv@ZABBIXDB01 /]# mysql -uroot-pp@ssw0rd

mysql> create schema zabbix characterset utf8;

mysql> create user 'zabbix'@'%'identified by 'zabbix';

mysql> grant all on zabbix.* to'zabbix'@'%';

mysql> flushprivileges;
wKiom1Wnx--SezOvAAMHB6pEROQ516.jpg
修改防火墙配置文件允许访问数据库
#vi /etc/sysconfig/iptables
加入下面一行
-A INPUT -m state --state NEW-m tcp -p tcp --dport 3306 -j ACCEPT
wKioL1WnyeWzUSeSAAG_lTtGBSA905.jpg
修改完毕后重启防火墙服务
# service iptables restart
wKioL1WnymagHlm7AAB9rwKy7R0805.jpg
在ZABBIX01服务器上测试使用zabbix账号是否能够成功访问mysql
# mysql -u zabbix -pzabbix -h 172.16.0.102
wKioL1WnyiiwBgUiAAHRkI5Vusg232.jpg

初始化zabbix数据库
Zabbix初始数据文件存放在zabbix解压目录下的database目录中
wKioL1Wnyqmj9vk1AACvc-ll0u4870.jpg
将相应数据库的数据文件复制到ZABBIXDB01服务器上的相应目录中,并进入该目录下进行数据库的导入。这里我们将数据文件复制到ZABBIXDB01服务器上的/tmp目录下
# cd /tmp/
wKiom1WnyPHQlYYIAAEpGOAkG2g035.jpg
#cd .mysql/
wKiom1WnyUHDxCeRAACkcoI4bIs238.jpg
登录数据库
# 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
wKiom1WnyXHghBL-AAAu63BZpsU085.jpg
修改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
wKioL1Wny3DD2Fy4AAA5HOPJdRA489.jpg
新建Zabbix日志文件目录并修改目录权限
#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix
wKiom1WnybPzqFCNAABKVhmsQ7o562.jpg
修改zabbix_server服务启动脚本
将zabbix_server启动脚本复制到 /etc/init.d/目录下进行修改。
[iyunv@ZABBIX01 ~]# cd /tmp/zabbix-2.2.4
[iyunv@ZABBIX01 zabbix-2.2.4]# cpmisc/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
       ...
}
wKioL1Wny7byeq0pAAFe_UOWLVw798.jpg
设置zabbix_server服务开机启动
#chkconfig --add zabbix_server
#chkconfig --level 35 zabbix_server on
#/etc/init.d/zabbix_server start
wKiom1WnyfbDBtcVAACIVuGq-NE027.jpg
配置zabbix的web前端
从zabbix的解压目录复制前端文件到http网页目录下
#mkdir /var/www/html/zabbix
#cp -a /tmp/zabbix-2.2.4/frontends/php/* /var/www/html/zabbix
#chown -R zabbix.zabbix /var/www/html/zabbix/
wKioL1Wny-ijNJmnAACNA5F4b4M606.jpg
# vi /etc/httpd/conf/httpd.conf
修改以下内容
DirectoryIndex index.php
ServerName localhost:80
wKiom1WnyjCSLyoAAAAofZF6RM0399.jpg
wKioL1WnzE_QDLQQAAATkNW6nms811.jpg

配置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
wKiom1WnyorjmZRQAAA-asBeIFA890.jpg

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

配置完成后下载配置文件并存放到指定目录(按照窗口提示,将配置文件zabbix.conf.php上传到"/var/www/html/zabbix/conf/zabbix.conf.php"中)
wKiom1Wny1TQBR_pAAOw2IxaWDk999.jpg
最后完成安装
wKioL1WnzUfwGkvDAAH-8zLZo28740.jpg
zabbix前端已经安装就绪,默认的用户名是Admin,密码是zabbix
wKiom1Wny4OSCwiAAAFOg25l9cY493.jpg
zabbix主界面如图
wKioL1WnzXiwZv61AATCSqtIUmw564.jpg
为了安全起见,登录后第一件事先更改超级管理员密码
wKioL1WnzYmiAl9uAANwJRYJPw4530.jpg
wKiom1Wny8LD3vQnAAIlrQZTSdk970.jpg
为了防止其他人随意更改zabbix配置,我们禁用ZABBIX重新安装
默认
wKiom1Wny9_BPnk1AAETXhCfWuE714.jpg
# vi/var/www/html/zabbix/include/menu.inc.php
注释掉以下内容:
wKiom1Wny_Lia1lkAAHEQX9Jl6c095.jpg
刷新页面
wKioL1WnzeLSkqMuAAEUaN3it4c705.jpg
四、安全设置:
Selinux设置
重启开启selinux服务
# setenforce 1
设置以下规则
# chcon -R -t httpd_sys_content_rw_t/var/www/html
# setsebool -Phttpd_can_network_connect=true
# semanage port -a -t http_port_t -p tcp10051
wKiom1WnzDTyu8XgAAB9GuDshPo791.jpg
注:若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
wKiom1WnzEmDaj-pAAGZ6M5kLkk488.jpg
重启防火墙服务
# service iptables restart
wKioL1WnzjaDEHXHAADFrB-OjNU954.jpg
至此,ZABBIX部署完毕
接下来,我会针对ZABBIX中LAMP环境进行升级与安全加固…


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87475-1-1.html 上篇帖子: Zabbix server is not running:the information displayed may not be current 下篇帖子: zabbix之web监控,并模拟登录

尚未签到

发表于 2017-10-27 15:19:58 | 显示全部楼层
Zabbix二次开发,可以试试8年经验的:乐维监控
www.91lewei.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表