Zabbix是什么
Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。
Zabbix的特点
Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。
数据收集
- 可用性和性能检查
- 支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
- 自定义检查
- 按照自定义的间隔收集需要的数据
- 由Server/Proxy和agents执行
灵活的阀值定义
- 您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值
高度可配置化的告警
- 可以根据升级计划,接收方和媒体类型来定制发送告警通知
- 使用宏变量可以使告警通知更有意义更高效
- 自动化动作包含执行远程命令
实时图表绘制
- 使用内置图表绘制功能可以将监控项的内容立即绘制成图表
Web监控功能
- Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间
丰富的可视化选项
- 能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
- 网络拓扑图
- 以仪表盘的样式展现自定义的展现和幻灯片
- 报告
- 监控资源的高级(业务)视图
历史数据存储
- 数据存储在数据库中
- 可配置历史数据
- 内置数据管理机制
配置简单
- 将被监控对象添加为主机
- 主机被创建用于监控,在数据库中是唯一存在的
- 应用模板来监控设备
使用模板
- 在模板中分组检查
- 模板可以关联其他模板
网络发现
- 自动发现网络设备
- 监控代理自动注册
- 发现文件系统,网络接口和SNMP OID值
简洁的Web界面
- Web前端基于PHP
- 可从任何地方访问
- 你可以定制自己的操作方式
- 审核日志
Zabbix API
- Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的
权限管理系统
- 安全用户认证
- 特定用户可以限制访问特定的视图
功能强大并易于扩展的监控代理
- 部署在被监控对象上
- 可以部署在Linux和Windows上
二进制代码
- 为了性能和更少内存的占用,用C语言编写
- 便于移植
为复杂环境准备
- 使用Zabbix proxy代理服务器,使得远程监控更简单
Zabbix概述
结构
Zabbix由几个主要的软件组件构成,这些组件的功能如下。
Server
Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。
数据库存储
所有配置信息和Zabbix收集到的数据都被存储在数据库中。
Web界面
为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。
Proxy代理服务器
Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。
Agent监控代理
Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
数据流
此外,了解Zabbix内部的数据流同样很重要。为了创建一个监控项用于采集数据,必须先创建一个主机。转换到Zabbix功能的其他部分,你必须先有一个监控项来创建触发器,你必须有一个触发器来创建动作。 因此,如果你想收到X服务器CPU负载过高的告警,你必须先为X服务器创建一个主机实体并关联一个用于对CPU进行监控的监控项,然后如果CPU负载太高便会激活触发器,接着会执行一个动作,给你发送告警邮件。虽然看起来有很多步骤,但是使用模板的话可以会很简单。同时,这个设计可以创建一个非常灵活的配置。
定义
主机 (host)
- 一台你想监控的网络设备,用IP或域名表示
主机组 (host group)
- 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
监控项 (item)
- 你想要接收的主机的特定数据,一个度量数据。
触发器 (trigger)
- 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式
当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
事件 (event)
- 单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册
异常 (problem)
- 一个处在“异常”状态的触发器
动作 (action)
- 一个对事件做出反应的预定义的操作。
一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成
升级 (escalation)
- 一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列
媒介 (media)
- 发送告警通知的手段;告警通知的途径
通知 (notification)
- 利用已选择的媒体途径把跟事件相关的信息发送给用户
远程命令 (remote command)
- 一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
模版 (template)
- 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
应用 (application)
- 一组监控项组成的逻辑分组
web 场景 (web scenario)
- 利用一个或多个HTTP请求来检查网站的可用性
前端 (frontend)
- Zabbix提供的web界面
Zabbix API
- Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
Zabbix server
- Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
Zabbix agent
- 一个部署在监控对象上的,能够主动监控本地资源和应用的程序
Zabbix proxy
- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
Zabbix架构
监控范畴
Zabbix监控Java应用
安装、配置Zabbix
机器名称 | IP配置 | 服务角色 | 备注 |
---|---|---|---|
cairui | 120.25.255.87 | zabbix-server | 开启监控功能 |
VM_0_7_centos | 118.25.47.241 | zabbix-agent | 开启 |
环境查看:
代码语言:javascript复制[root@VM_0_7_centos zabbix-3.4.7]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@VM_0_7_centos zabbix-3.4.7]# uname -a
Linux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@cairui ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@cairui ~]# uname -a
Linux cairui 2.6.32-696.6.3.el6.x86_64 #1 SMP Wed Jul 12 14:17:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
代码语言:javascript复制[root@VM_0_7_centos zabbix-3.4.7]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@VM_0_7_centos zabbix-3.4.7]# /usr/sbin/sestatus
SELinux status: disabled
[root@cairui ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@cairui ~]# /usr/sbin/sestatus
SELinux status: disabled
服务端安装配置:
代码语言:javascript复制[root@cairui software]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
[root@cairui software]# yum install -y zabbix-server-mysql zabbix-web-mysql
创建数据库:
代码语言:javascript复制mysql> create database zabbix character set gbk collate gbk_chinese_ci;
mysql> show grants for zabbix@localhost;
------------------------------------------------------------
| Grants for zabbix@localhost |
------------------------------------------------------------
| GRANT USAGE ON *.* TO 'zabbix'@'localhost' |
| GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' |
------------------------------------------------------------
导入数据:
代码语言:javascript复制[root@cairui software]# zcat /usr/share/doc/zabbix-server-mysql-3.0.15/create.sql.gz |mysql -uzabbix -p zabbix
Enter password:
配置zabbix-server连接mysql:
代码语言:javascript复制[root@cairui software]# vim /etc/zabbix/zabbix_server.conf
[root@cairui software]# grep "DB" /etc/zabbix/zabbix_server.conf | grep -v "#"
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
修改php.ini:
vim /application/php/lib/php.ini 主要为下面几个参数
post_max_size 16M
max_execution_time 300
max_input_time 300
timezone Asia/Shanghai
重启php-fpm
代码语言:javascript复制[root@cairui html]# /etc/init.d/zabbix-server start
[root@cairui html]# cp -rf /usr/share/zabbix/* /opt/nginx/html/
[root@cairui html]# cd /opt/nginx/html/conf/
[root@cairui conf]# cp zabbix.conf.php.example zabbix.conf.php
[root@cairui conf]# vim zabbix.conf.php
[root@cairui conf]# cat zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
出错:
FastCGI sent in stderr: "PHP message: PHP Warning: require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /app/nginx/html/zabbix/include/classes/core/ZBase.php on line 292
PHP message: PHP Fatal error: require_once(): Failed opening required '/etc/zabbix/web/mainte
”
解决办法:
chmod -R 755 /etc/zabbix/web
出错解决办法:
代码语言:javascript复制[root@cairui bcmath]# yum install *bcmath* --skip-broken
[root@cairui bin]# find / -name bcmath
/home/cairui/software/php-7.1.15/ext/bcmath
[root@cairui bin]# cd /home/cairui/software/php-7.1.15/ext/bcmath
[root@cairui bcmath]# /opt/php/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
[root@cairui bcmath]# ./configure --with-php-config=/opt/php/bin/php-config
make && make install
[root@cairui bcmath]# vim /opt/php/lib/php.ini
加入下面一句:
[root@cairui bcmath]# tail -1 /opt/php/lib/php.ini
extension=bcmath.so
成功!
不支持切换语言解决办法:
代码语言:javascript复制[root@cairui web]# yum install *gettext* --skip-broken
[root@cairui web]# find / -name gettext
/usr/lib64/perl5/vendor_perl/auto/Locale/gettext
/usr/lib64/ocaml/gettext
/usr/lib64/gettext
/usr/bin/gettext
/usr/share/doc/gettext-devel-0.17/javadoc2/gnu/gettext
/usr/share/glib-2.0/gettext
/usr/share/gettext
/usr/share/php/gettext
/bin/gettext
/home/cairui/software/php-7.1.15/ext/gettext
/opt/boost/boost_1_59_0/tools/build/example/gettext
[root@cairui web]# cd /home/cairui/software/php-7.1.15/ext/gettext
[root@cairui gettext]# /opt/php/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
[root@cairui gettext]# ./configure --with-php-config=/opt/php/bin/php-config
make && make install
[root@cairui gettext]# vim /opt/php/lib/php.ini
[root@cairui gettext]# tail -2 /opt/php/lib/php.ini
extension=bcmath.so
extension=gettext.so
客户端配置
代码语言:javascript复制[root@VM_0_7_centos ~]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
warning: /var/tmp/rpm-tmp.iT0tW6: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
[root@VM_0_7_centos ~]# yum install zabbix-agent -y
[root@VM_0_7_centos ~]# cat /etc/zabbix/zabbix_agentd.conf | grep 'Server'|grep -v "#"
Server=120.25.255.87
ServerActive=127.0.0.1
[root@VM_0_7_centos ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
检测连通性
服务端安装zabbix-get检测工具
代码语言:javascript复制[root@cairui gettext]# yum install zabbix-get
代码语言:javascript复制[root@cairui gettext]# zabbix_get -s 118.25.47.241 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
配置新主机
自定义监控与监控报警
说明:zabbix自带的模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。
自定义的key能被server和agent认可
代码语言:javascript复制#正确的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.uname'
Linux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64
#没有登记的,自定义的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'
ZBX_NOTSUPPORTED: Unsupported item key.
#写错的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.unama'
ZBX_NOTSUPPORTED: Unsupported item key.
自定义语法:
代码语言:javascript复制UserParameter=<key>,<shell command>
UserParameter=login-user,who|wc -l
UserParameter=login-user,/bin/sh /server/scripts/login.sh
agent注册:
代码语言:javascript复制[root@VM_0_7_centos zabbix_agentd.d]# vim userparameter_login.conf
[root@VM_0_7_centos zabbix_agentd.d]# cat userparameter_login.conf
UserParameter=login-user,who|wc -l
UserParameter=login-user2,who|wc -l
注意:key要唯一,多个key要以行分
[root@VM_0_7_centos zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'
1
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user2'
1
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user3'
ZBX_NOTSUPPORTED: Unsupported item key.
在server端操作(web网页):
创建应用集
创建监控项
创建触发器
触发器的作用:当监控项获取到的值达到一定数量时就触发报警(根据需求创建)
创建图形
关联主机模板
配置》主机
一个主机可以关联多个模板