1 Zabbix简介

Wu Jun 2019-01-05 17:03:34
09 DevOps > 7 Zabbix

Zabbix 手册:https://www.zabbix.com/documentation/3.4/zh/manual

Zabbix 3.0 从入门到精通(zabbix使用详解):https://www.cnblogs.com/clsn/p/7885990.html

一、概述

Zabbix能监控各种网络参数,以及服务器健康性和完整性。提供了灵活的通知机制,以快速反馈服务器的问题。提供了Web的前端页面,以访问报告、统计信息和配置参数。

1、组成结构

zabbix由Zabbix server、Zabbix proxy和Zabbix agent组成

Zabbix server

核心程序,通过主动轮询和被动捕获数据,计算是否满足触发器条件,向用户发送通知。
分三个不同组件:Zabbix服务器、Web前端和数据库存储。

Zabbix proxy

可选部署,替Zabbix Server收集数据,分担负载压力。
所有收集的数据都在本地进行缓存,然后传送到proxy所属的Zabbix sever。需要使用独立的数据库。

Zabbix agent

部署在监控目标,调用本地系统监控性能,收集数据,报告给Zabbix Server。
可以执行被动和主动两种检查方式。

2、工作原理

zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web 根据数据在前端进行展现和绘图。

agent收集数据分为两种模式:

被动模式

server/proxy向agent请求获取监控项的数据,agent应答数据请求,回送结果。
默认采用,客户端量大之后,pull任务会出现积压,出现延迟和卡顿。
被动模式端口不可用时,也可选用主动模式

主动模式

agent先请求server获取主动的监控项列表,再主动将收集数据周期性提交给server/proxy。
更改为主动模式后,监控项也要选择主动模式。

3、常用架构

在实际监控架构中,zabbix根据网络环境、监控规模等分了三种架构:

server-client架构

最简单的架构,监控机和被监控机之间不经过任何代理,直接由zabbix server和zabbix agentd之间进行数据交互。 适用于网络比较简单,设备比较少的监控环境。

server-proxy-client架构

proxy沟通server、client,分担负载压力,没有前端,缓存agentd数据,再提交给server。 适用于跨机房、跨网络的中型网络架构的监控。

master-node-client架构

每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。 适用于跨网络、跨机房、设备较多的大型环境。

二、安装

Zabbix server

依赖

依赖Apache、MySQL、PHP,需事先装好LAMP环境。

从部署包安装

以CentOS 7 、zabbix3.2为例

  1. 安装源码库配置部署包。
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
  1. 安装Zabbix部署包。
yum install zabbix-server-mysql zabbix-web-mysql
  1. 安装初始化数据库
shell> mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';
mysql> quit;
  1. 导入初始架构和数据。
cd /usr/share/doc/zabbix-server-mysql-3.2.11
zcat create.sql.gz | mysql -uroot zabbix
  1. 修改Zabbix前端的Apache配置文件

更改时区

vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
  1. 启动Zabbix Server进程
systemctl start zabbix-server
  1. 重启Apache Web服务器
systemctl start httpd
  1. 访问/setup.php初始化

访问http://zabbix-frontend-hostname/zabbix/setup.php,配置数据库等信息。

默认的用户名/密码为 Admin/zabbix。

配置通知脚本
  1. 将通知脚本放入默认路径:/usr/lib/zabbix/alertscripts。
  2. 在“报警媒介类型”添加通知脚本。

Zabbix Agent

yum install zabbix-agent
被动模式配置

1、agent端

StartAgents=3//被动模式,启动客户端数不为0
Server=x.x.x.x//允许获取数据的地址,可配置0.0.0.0/0允许任意ip获取数据
Hostname=zabbix_client//与服务端设置的名字相同

2、zabbix-server端
zabbix监控模板默认使用的就是被动模式,直接添加就好

主动模式配置

1、agent端

StartAgents=0//主动模式,不启动客户端
ServerActive=x.x.x.x//配置服务器地址,可配置域名,域名如用nginx需要tcp转发10051端口
Hostname=zabbix_master//与服务端设置的名字相同

2、zabbix-server端
克隆默认的模板,将配置项和自动发现改为主动模式,主机连接主动模式模板

三、迁移

在新服务器上安装好相同版本Zabbix server。

不保留历史数据

只需迁移配置文件。

Zabbix server配置文件:/etc/zabbix/zabbix_server.conf
Zabbix web配置文件:/etc/httpd/conf.d/zabbix.conf
通知脚本:/usr/lib/zabbix/alertscripts

保留历史数据

还需迁移数据库。

1.导出zabbix数据库

mysqldump -uroot -p --opt  zabbix > zabbix.sql

2.传送sql文件到新的服务器上(新服务器上基本环境应搭建好)

scp zabbix.sql root@x.x.x.x:/tmp

3.在新服务器上导入sql文件

mysql -uroot -p zabbix < zabbix.sql

四、使用

为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。

或者对主机使用模板。

添加用户
  1. 以具有“超级管理员”权限的用户登陆。
  2. 在“管理”→“用户”页面下,点击“创建用户”以增加用户。
  3. 填写基本信息,选择用户组,
  4. 在“报警媒介”标签下,添加邮箱和微信报警
  5. 在“权限”标签下,选择用户类型
添加主机
  1. 以具有“超级管理员”权限的用户登陆。
  2. 在“配置”→“主机”页面下,点击“创建主机”以新增主机。
  3. 主机名称和IP地址都填写IP地址,选择主机组。
添加监控项
  1. 在“主机”→“监控项”页面下,点击“创建监控项”以新增监控项。
  2. 类型根据客户端选择“Zabbix客户端”或“Zabbix客户端(主动式)”
  3. 键值填写 Zabbix Agent预定义值 中的一种。
  4. “历史数据保留时长”填写7天。
添加触发器
  1. 在“主机”→“触发器”页面下,点击“创建触发器”以新增触发器。
  2. 填写名称、选择表达式
添加报警媒介
  1. 在“管理”→“报警媒介类型”页面下,点击“创建报警媒介”以新增报警媒介。
  2. 添加类型为脚本,名称为/usr/lib/zabbix/alertscripts下通知脚本的报警媒介
  3. 在“配置”→“动作”页面下,点击“创建动作”以新增报警媒介的动作。
添加模版
  1. 在“配置”→“模版”页面下,点击“创建模版”以新增模版。
  2. 为模板添加监控项,之后就可给主机链接模板,复用监控项