Zabbix:企业级开源监控,整体介绍及安装全过程【超万字长文】
目录
一、Zabbix介绍
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、 完整性。 Zabbix 使用灵活的告警机制, 允许用户为几乎任何事件配置基于邮件的告警。 这样用户可以快速响应服务器问题。 Zabbix 基于存储的数据提供出色的报表和数据可视化功能。
Zabbix 支持主动轮询( polling) 和被动捕获( trapping) 。 Zabbix所有的报表、 统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。 基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。 适当的配置后, Zabbix 可以在监控 IT 基础设施方面发挥重要作用。 无论是对于有少量服务器的小型组织, 还是拥有大量服务器的大企业而言, 同样适用。
Zabbix 是免费的。 Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。 这意味着产品源代码是免费发布的, 可供公共使用。
zabbix4.0阅读手册:https://www.zabbix.com/documentation/4.0/manual/definitions
1.1.zabbix特点:
数据采集:
可用性和性能检查;
支持 SNMP( 包括主动轮询和被动捕获) 、 IPMI、 JMX、 VMware 监控;
自定义检查;
按照自定义的时间间隔采集需要的数据;
通过 Server/Proxy 和 Agents 来执行数据采集。
灵活的阈值定义:
您可以参考后端数据库定义非常灵活的告警阈值, 即触发器
高度可配置化的告警
可以根据递增计划、 接收者、 媒介类型自定义发送告警通知;
使用宏变量可以使告警通知变得更加高效有用;
自动操作包含远程执行命令。
实时图形:
使用内置图形功能可以将监控项实时绘制成图形。
Web 监控功能
Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作, 来检查 Web 网站的功能和响应时间。
丰富的可视化选项
可以组合多个监控项到单个视图中, 创建自定义图表;
网络拓扑图;
以仪表盘样式展示自定义聚合图形和幻灯片演示;
报表;
监控资源的更高层次展示视图( 业务视图) 。
历史数据存储:
存储在数据库中的数据;
历史配置;
内置数据管理机制( housekeeping) 。
配置简单:
将被监控设备添加为主机;
主机一旦添加到数据库中, 就会采集数据用于监控;
将模板用于监控设备。
使用模板:
模板中分组检查;
模板可以关联模板, 继承已关联模板的属性。
网络发现:
自动发现网络设备;
Zabbix Agent 发现设备后自动注册;
自动发现文件系统、 网络接口和 SNMP OIDs 值。
快捷的 Web 界面:
基于 PHP 的 Web 前端;
可以从任何地方访问;
您可以定制自己的操作方式;
您可以通过审计日志来查看你的操作。
Zabbix API:
Zabbix API 为 Zabbix 提供可编程接口, 用于批量操作、 第三方软件集成和其他用途。
权限管理系统:
安全的用户身份验证;
指定的用户只能查看指定的权限范围内的视图。
功能强大且易于扩展的 Zabbix Agent:
部署于被监控对象上;
支持 Linux 和 Windows ;
二进制守护进程:
为了更好的性能和更少的内存占用, 采用 C 语言编写;
便于移植。
适应更复杂的环境:
使用 Zabbix Proxy 代理, 可以轻松实现分布式远程监控。
1.2.zabbix的整体架构:
重要组件说明:
1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3)web interface:zabbix的GUI接口;
4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。
监控系统运行流程:
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbixserver将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
【主动监测】通信过程如下:
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的*RefreshActiveChecks*的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:
获取ACTIVE ITEMS列表
· Agent打开TCP连接(主动检测变成Agent打开)
· Agent请求items检测列表
· Server返回items列表
· Agent 处理响应
· 关闭TCP连接
· Agent开始收集数据
· 主动检测提交数据过程如下:
· Agent建立TCP连接
· Agent提交items列表收集的数据
· Server处理数据,并返回响应状态
· 关闭TCP连接
【被动监测】通信过程如下:
· Server打开一个TCP连接
· Server发送请求agent.ping\n
· Agent接收到请求并且响应1
· Server处理接收到的数据1
· 关闭TCP连接
二、常用的监控架构平台
2.1.server-agentd模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。
2.2.server-proxy-agentd模式:
这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。
三、详解zabbix的架构和常用的术语
3.1.端口:
zabbix server :10051
zabbix agent:10050
3.2.基本监控原理:
zabbix agent服务将从系统中获取相关数据传送给zabbix server,然后zabbix server服务将获取的数据分析之后通过前端页面展示出来。
3.3.相关名词介绍:
Zabbix agent:zabbix客户端,负责数据收集上传。
Zabbix server:zabbix的服务端,负责数据汇总,处理,告警策略,告警发送等等。
Zabbix web:zabbix前端页面,提供了友好的展示和操作界面,负责数据的展示,监控系统的配置管理,用户权限配置管理等功能。
database :数据和配置存储数据库,zabbix支持多种数据库,包括mysql,Oracle,DB2等等
Java gateway:java网关,负责通过JMX监控手机java应用性能数据。
Zabbix proxy:zabbix代理,分布式部署架构会用到,主要是手机设备的监控数据并将数据发送到对应的zabbix server。
监控功能下面的进程都是负责监控数据收集的
poller进程: 主要负责server主动拉取类型的监控数据
trapper进程: 主要负责agent主动上报的监控数据
Http poller进程: 主要负责URL监控类型的数据收集
Icmp pinger进程: 负责ping存活监控数据收集
Java gateway进程: 负责和java gateway通信处理数据
Java poller进程: 负责拉取JMX类型数据获取
Ipmi poller进程: 负责IPMI类型数据获取
timer进程: 负责处理和时间有关的数据以及告警
Vmware collector进程: 负责收集VMware虚拟化环境监控数据
Unreachable poller进程: 负责处理无法到达类的监控处理
3.4.zabbix的基本术语:
组件功能:
Frontend: 前端
Zabbix API: zabbix的接口
Zabbix server: zabbix服务端
Zabbix agent: zabbix客户端
Zabbix proxy: zabbix代理
Network discovery: 网络自动发现
Active agent auto-registration: 主动agent自动注册
low-level discovery: 低级自动发现
数据收集:
Host: 主机
Host group: 主机组 就是主机的逻辑分组
Item: 监控项 可以理解为监控的一个指标,如CPU使用率,负载等
Value preprocessing:预处理 数据在存入数据库之前按照指定的规则预处理
Template: 模板 可以应用到多个监控设备的监控集合
Application: 应用
Web scenario Web: 场景 监控web的一个或多个http请求
Macros: 宏 可以认为是一个变量
数据展示:
Graph: 图表 可以将一个或多个监控项的监控数据放入同一张图表中
Screen: 聚合图表
Maps: 拓扑图 拓扑图展示监控
Slide shows: 幻灯片演示
告警相关:
Trigger: 触发器 当监控的项达到监控指标时,就触发报警
Event: 事件 告警状态的变化,客户端注册成功都是事件
Problem: 异常状态
OK: 正常状态
Action: 操作 根据事件以及条件定义的一系列动作
Escalation: 升级
Media: 媒介 指告警通知的方式,短信,邮件,微信
Notification: 通知
Remote command: 远程命令 预先定义的,指定条件下会被执行
Maintenance: 维护模式
认证和权限:
User: 用户
User group: 用户组
Permission: 权限
User type: 用户类型
四、zabbix-server安装
4.1.安装依赖:
#yum -y install gcc libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel libevent libevent-devel OpenIPMI
rpm -ivh libevent-devel-2.0.21-4.el7.x86_64.rpm
rpm -ivh libssh2-1.8.0-3.el7.x86_64.rpm
rpm -ivh libssh2-devel-1.8.0-3.el7.x86_64.rpm
rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
rpm -Uvh OpenIPMI-modalias-2.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh OpenIPMI-libs-2.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh OpenIPMI-devel-2.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh OpenIPMI-2.0.27-1.el7.x86_64.rpm --nodeps --force
安装LAMP扩展支持
yum -y install libxml2* openssl* libcurl* libjpeg* libpng* freetype* libmcrypt*
安装LAMP
yum -y install httpd
yum -y install mariadb*
cd /media/Packages
yum -y install php*
启动并测试LAMP
启动http
#systemctl start httpd.service
启动maria
#systemctl start mariadb.service
测试http浏览器打开http://localhost
测试http+php
在默认的站点根目录下创建php脚本文件
vim /var/www/html/test.php
<?php
phpinfo();
?>
测试http浏览器打开http://localhost/test.php
测试http+php+mysql
创建数据库root管理员密码
mysqladmin -uroot password "123.com"
登入数据库
mysql -uroot -p123.com
在默认的站点根目录下创建php脚本文件
vim /var/www/html/testdb.php
<?php
$link=mysql_connect ('localhost','root','123.com');
if($link) echo "mysql is ok";
mysql_close();
?>
测试http浏览器打开http://localhost/testdb.php
4.2.创建zabbix用户:
# groupadd zabbix
# useradd -g zabbix -m -s /sbin/nologin zabbix
# tar -xzvf zabbix-4.0.25.tar.gz
# mv ./zabbix-4.0.25 /usr/src/zabbix
# cd /usr/src/zabbix
4.3.编译、安装zabbix:
#./configure --prefix=/usr/local/zabbix \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--enable-agent \
--enable-proxy \
--enable-ipv6 \
--with-mysql \
--with-net-snmp \
--with-jabber=/usr/local \
--with-libxml2 \
--with-unixodbc \
--with-ssh2 \
--with-libevent=/opt/libevent \
-with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre
# make && make install
报错:jabber。。。。
解决方法:
# cd
# tar -xzvf iksemel-1.4.tar.gz
# cd iksemel-1.4
# ./configure
# make && make install
报错:configure: error: Unable to use libevent (libevent check failed)
解决方法:
# cd
# tar -xzvf libevent-1.4.14b-stable.tar.gz
# cd libevent-1.4.14b-stable
# ./configure --prefix=/opt/libevent
# make && make install
编译安装过程中常见错误:
1、configure: error: Jabber library not found
#yum install iksemel-devel即可
2、configure: error: LIBXML2 library not found
#yum install libxml2-devel
3、configure: error: unixODBC library not found
#yum install unixODBC-devel
4、configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h
#yum install OpenIPMI-devel
5、configure: error: Unable to find "javac" executable in path
#yum install java*
生产环境可去掉--enable-java选项(不用再安装jdk)
安装java环境(暂时不做)
#mkdir -p /usr/local/java
#tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java/
#vim /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_151
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
#source /etc/profile
#java -version
6、configure: error: Curl library not found
#yum install curl-devel
4.4.创建zabbix库和导入数据:
# mysql -uroot -p123.com
创建数据库
# mysql>CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
创建数据库用户并授权
# mysql>grant all privileges on zabbix.* to 'zabbix'@'%' identified by '12345678';
# mysql>grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '12345678';
刷新权限
# mysql>flush privileges;
# mysql>exit
导入数据库
# cd /usr/src/zabbix/database/mysql
# mysql -uzabbix -p12345678 -h192.168.65.135 zabbix < schema.sql
# mysql -uzabbix -p12345678 -h192.168.65.135 zabbix < images.sql
# mysql -uzabbix -p12345678 -h192.168.65.135 zabbix < data.sql
1、配置zabbix_server
# vim /etc/zabbix/zabbix_server.conf
修改内容(只修改以下五行)
# egrep -v "^$|*#" /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=12345678
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
#以下配置跟随主机情况配置,建议先默认,后期修改!
StartPollers=80
StartPollersUnreachable=20
StartTrappers=120
StartPingers=10
ListenIP=10.250.0.88
CacheSize=2G
CacheUpdateFrequency=300
StartDBSyncers=16
HistoryCacheSize=1024M
HistoryIndexCacheSize=512M
TrendCacheSize=1024M
ValueCacheSize=1G
Timeout=30
#脚本目录
AlertScriptsPath=/usr/local/zabbix/alertscripts
ExternalScripts=/usr/local/zabbix/externalscripts
2、创建脚本目录,优化启动
# mkdir /usr/local/zabbix/alertscripts
# mkdir /usr/local/zabbix/externalscripts
复制启动脚本
# cp /usr/src/zabbix/misc/init.d/fedora/core/zabbix_* /etc/init.d/
添加执行权限
# chmod +x /etc/init.d/zabbix_*
编辑脚本
# vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
3、添加开机启动
# chkconfig --add /etc/init.d/zabbix_server
# chkconfig --add /etc/init.d/zabbix_agentd
# chkconfig zabbix_server on
# chkconfig zabbix_agentd on
4、创建web文件
#mkdir /var/www/html/zabbix
#cp -r /usr/src/zabbix/frontends/php/* /var/www/html/zabbix
#chown -R apache.apache /var/www/html/zabbix/
5、访问
浏览器访问: http://127.0.0.1/zabbix
用户名:Admin 密码:zabbix
可能会遇到刚启动server就出现server is dead。。。这种一般情况是没有连接数据库!可以通过查看日志来分析错误原因,tail -20 /tmp/zabbix_server.log查看报错原因。
安装过程中如果有php option错误请设置默认php.ini设置项。
【报错显示示例】
Minimum required size of PHP post is 16M (configuration option "post_max_size").
Minimum required limit on execution time of PHP scripts is 300 (configuration option "max_execution_time").
Minimum required limit on input parse time for PHP scripts is 300 (configuration option "max_input_time").
Time zone for PHP is not set (configuration parameter "date.timezone").
Asia/Shanghai PRC
PHP bcmath extension missing (PHP configuration parameter --enable-bcmath).
PHP mbstring extension missing (PHP configuration parameter --enablembstring).
【修复】
#vim /etc/php.ini
如果缺少扩展请安装下面几个扩展
#rpm -ivh libmcrypt-2.5.8-13.el7.x86_64.rpm --nodeps
#rpm -ivh php-bcmath-5.4.16-48.el7.x86_64.rpm --nodeps
#rpm -ivh php-mbstring-5.4.16-48.el7.x86_64.rpm --nodeps
4.5.被控主机zabbix-agent安装:
1.下载以及安装
# useradd -r -s /sbin/nologin zabbix
# tar -zxvf zabbix-4.0.25.tar.gz
# mv zabbix-4.0.25 /usr/src/zabbix_agentd
# cd /usr/src/zabbix_agentd
# ./configure --prefix=/usr/local/zabbix_agentd \
--sysconfdir=/etc/zabbix/ \
--enable-agent
# make && make install
2、修改配置文件
主动被动模式(混动)
# egrep -v "^$|*#" /etc/zabbix/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=10.250.0.88 #主监控服务器server ip
ServerActive=10.250.0.88 #主监控服务器server ip
Hostname=10.250.0.89 #这里填本机ip!
RefreshActiveChecks=90
BufferSize=2048
MaxLinesPerSecond=100
Timeout=10
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
3、添加快捷启动
# cp /usr/src/zabbix_agentd/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# chmod +x /etc/init.d/zabbix_*
# vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix_agentd
4、关闭防火墙
# systemctl stop firewalld.service
5、添加开机启动
# /etc/init.d/zabbix_agentd start
# chkconfig --add /etc/init.d/zabbix_agentd
# chkconfig zabbix_agentd on
# /etc/init.d/zabbix_agentd status
错误说明:
./zabbix_server -c /etc/zabbix/zabbix_server.conf -R log_level_increase=2367 tail /tmp/zabbix_server.log
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '12345678';
./zabbix_server: error while loading shared libraries: libiksemel.so.3: cannot open shared object file: No such file or directory 则执行:
updatedb
locate libiksemel.so.3
ldd zabbix_server
ln -s /usr/local/lib/libiksemel.so.3 /lib64/ //在/lib创建一个软链接即可
4.6.检查是否能够访问:
https://www.cnblogs.com/biaopei/p/9877747.html
https://blog.csdn.net/zhengyshan/article/details/81218057
五、部署完成后的图形界面监控配置及各项补充:
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)