一、Zabbix简介

Zabbix是一个企业级的、开源的、分布式的监控套件

Zabbix 可以监控网络和服务的监控状况. Zabbix 利用灵活的告警机制,允许用户对事件发送基于 Email 的告警.这样可以保证快速的对问题作出相应. Zabbix 可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.

Zabbix 支持 polling 和 trapping 两种方式. 所有的 Zabbix 报告都可以通过配置参数在 WEB 前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix 可以通过尽可能的配置来扮演监控你的IT 基础框架的角色,而不管你是来自于小型组织还是大规模的公司.

Zabbix是零成本的. 因为 Zabbix 编写和发布基于 GPL V2 协议. 意味着源代码是免费发布的.

Zabbix 公司也提供商业化的技术支持


Zabbix架构图

Zabbix 3.0介绍及简单实现_第1张图片


Zabbbix原理图

Zabbix 3.0介绍及简单实现_第2张图片

二、开源监控软件对比

Cacti

     采集数据 
     保存数据 
     数据展示 
     数据分析及报警

Nagios(报警工具)

    只关心正常与否的状态 
    依赖关系

Zabbix(数据采集&报警,综合cacti和nagios)

    自动发现监控设备 
    支持分布式监控有代理

三、Zabbix功能简要介绍

Zabbix监控方式

    SNMP :通过SNMP协议来监控,一般用于监控路由交换设备 
    Zabbix Agent:通过zabbix自己的agent进行监控(推荐使用) 
    JMX:用于检测java应用 
    IPMI Agent(硬件接口):IPMI接口监控,服务器特有的硬件接口

Zabbix 可以监控web的功能

    响应时间 
    下载速度 
    响应代码 
    响应内容中是否包含需要的内容 
    基于用户登录、登出判断是否正常 
    支持http和https

Zabbix的报警功能

    E-mail:邮件 
    SMS:短信 
    srcipt:自定义脚本

Zabbix 组件概述

    Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行; 
    Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据; 
    Web interface:zabbix的GUI接口,通常与server运行在同一台主机上; 
    Proxy:可选组件,常用于分布式监控环境中,代理server收集部分监控端的监控数据并同意发往server端; 
    Agent:部署在监控主机上,负责收集本地数据并发送到server端或proxy端。

Zabbix 常用术语

主机(host):要监控的网络设备,可由IP或DNS名称指定;

主机组(host group):主机的逻辑容器,可以包涵主机和模板,但同一个组内的主机和模板不能互相连接;主机组通常再给用户或用户组指派监控权限时使用;

监控项(item):一个特定监控指标的相关数据,这些数据来自于被监控对象;对于item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由“key”进行标识;

触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态从“OK”转变为“Problem”,当数据量再次回归到合理范围时,其状态将从“Problem”转换回“OK”;

事件(event):即发生的一个值得关注的事情,例如触发器的状体转变,新的agent或重新上线的agent的自动注册等。

动作(action):只对于特定时间事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)

报警升级(escalation):发送报警或执行远程命令的自定义方案,如每隔5分钟发送一次报警,共发5次;

媒介(media):发送通知的手段或通道,如Email、Jabber或SMS

通知(notification):通过选定的媒介向用户发送的有关某事件的信息;

远程命令(remote command):预定义的命令,可在被监控的主机处于某特定的条件下自动执行。

模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application、以及low-level discovery rule;模板可以直接连接至单个主机;

应用程序(application):一组item的集合

Web场景(web scennario):用于检测web站点的可用性的一个或多个HTTP请求

Zabbix Proxy

当我们的服务器数量非常多的时候,尤其是在多个机房,每个机房很多都有服务器,很显然每一个客户端都要跟server端通信,那很有可能被防火墙down掉,且单个server去统计数据时,无疑对server端增大了很大的压力,这个时候就需要Proxy,proxy可以将统计后的数据统一发送给server端


 Zabbix 3.0介绍及简单实现_第3张图片


Zabbix macros(宏)

  宏是一种抽象的概念,可以将其理解为变量,通过预先定义的规则来替换文本模式,zabbix有许多的内置宏,如{HOST,NAME},{HOST.IP},{TRIGGER.DESCRIPTION},{TRIGGER.NAME}…等

宏也可以自定义,但自定义宏格式略有不同,如{$MY_HOSTNAME},需要在其宏前面加$符号

详细信息请参考官方文档: 
https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location 


介绍完zabbix,下面我们就开始使用zabbix!

四、zabbix安装

zabbix-server端安装

# yum install zabbix-server-mysql zabbix-get
#  systemctl start zabbix-server

zabbix-agent端安装

# yum  install  zabbix-agent zabbix-sender
#  systemctl start zabbix-agent

zabbix-web GUI端安装

# yum install zabbix-web zabbix-web-mysql httpd php

zabbix-DB安装

# yum  install  mariadb-server
# systemctl  start  mariadb.service
mysql> CREATE DATABASE zabbix CHARSET  'utf8';
mysql> GRANT ALL ON zabbix.* TO zbxuser@'%' IDENTIFIED BY 'zbxpass';

本文安装环境及配置

zabbix-server 192.168.0.10
zabbix-web 192.168.0.10
zabbix-DB 192.168.0.10

zabbix-agent端安装

192.168.0.11

192.168.0.12

配置zabbix yum源

zabbix yum源地址(可以根据版本选择不同地址):http://repo.zabbix.com

# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/
gpgcheck=0
# yum install zabbix-server-mysql zabbix-get zabbix-web zabbix-web-mysql httpd php mariadb-server php-mysql -y

配置mariadb

# systemctl start mariadb.service
# mysql
MariaDB [(none)]> CREATE DATABASE zabbix;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> GRANT ALL ON zabbix.* TO zbxuser@'192.168.%.%' IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# gzip -d /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
# mysql -uzbxuser -h192.168.0.10 -p zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql

配置zabbix_server

# vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.0.10
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBSocket=/var/lib/mysql/mysql.sock
# systemctl start zabbix-server

配置agent服务

# yum install zabbix-agent zabbix-sender -y
# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.0.11
# systemctl restart zabbix-agent

配置web服务

# systemctl start httpd


访问web界面,安装配置

Zabbix 3.0介绍及简单实现_第4张图片

检查配置

Zabbix 3.0介绍及简单实现_第5张图片

数据库配置

Zabbix 3.0介绍及简单实现_第6张图片

检查配置Zabbix 3.0介绍及简单实现_第7张图片

Zabbix 3.0介绍及简单实现_第8张图片

安装完成

Zabbix 3.0介绍及简单实现_第9张图片

五、基于zabbix/agent的方式监控

新建HostGroup

Zabbix 3.0介绍及简单实现_第10张图片

Zabbix 3.0介绍及简单实现_第11张图片

新建Host


新建host

定义application

定义iteam

定义trigger

定义action

定义alert

定义media

定义template

zabbix-proxy

未完成。。。