企业级 Zabbix 监控

1、Zabbix监控架构

监控中心zabbix-server

|

------------------------------

| |

---proxy--- ---proxy---

agent agent agent agent

2、zabbix 监控邮件报警

Postfix

邮局(MTA)------邮递员(smtp 25)------邮局(MTA)

| |

MDA maildrop dovecote MDA

| |

邮递员(smtp 25) 邮递员(pop3 110 imap 143)

| dns |

邮筒(MUA) 邮筒(MUA)

| |

lilei(user1) han×××(user2)

agent 代理 proxy代理

3、Zabbix 优点

开源,无软件成本投入

Server 对设备性能要求低

支持设备多,自带多种监控模板

支持分布式集中管理,有自动发现功能,可以实现自动化监控

开放式接口,扩展性强,插件编写容易

当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的 item

然后取数据上传到 server 端。 这种方式对服务器的负载比较小。

Api 的支持,方便与其他系统结合

4、Zabbix 缺点

需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。

5、Zabbix 监控系统监控对象

数据库: MySQL,MariaDB,Oracle,SQL Server

应用软件:Nginx,Apache,PHP,Tomcat agent

-----------------------------------------------------------------------------------------------

集群: LVS,Keepalived,HAproxy,RHCS,F5

虚拟化: VMware,KVM,XEN agent

操作系统:Linux,Unix,Windows性能参数

------------------------------------------------------------------------------------------------

硬件: 服务器,存储,网络设备 IPMI

网络: 网络环境(内网环境,外网环境) SNMP

6、Zabbix监控方式

被动模式 主动模式

7、zabbix 架构

Zabbix由几个主要的软件组件构成,这些组件的功能如下。

1、Server

Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操

作数据的核心存储器。

2、数据库存储

所有配置信息和Zabbix收集到的数据都被存储在数据库中。

3、Web界面

为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的

一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。

如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。

4、Proxy 代理服务器

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

5、Agent监控代理

Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

6、数据流

此外,了解Zabbix内部的数据流同样很重要。监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。

因此,如果你想收到Server XCPU负载过高的告警,你必须: 1. 为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。 2. 创建一个Trigger,设置成当CPU负载过高时会触发 3. Trigger被触发,发送告警邮件 虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix这样的设计使得配置机制非常灵活易用。

8、Zabbix常用术语的含义

1、主机 (host)

一台你想监控的网络设备,用IP或域名表示

2、主机组 (host group)

主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。

3、监控项 (item)

你想要接收的主机的特定数据,一个度量数据。

4、触发器 (trigger)

一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式 当接收到的数据高于阈值时,触发器

从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。

5、事件 (event)

单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册

6、异常 (problem)

一个处在“异常”状态的触发器

7、动作 (action)

一个对事件做出反应的预定义的操作。 一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成

8、升级 (escalation)

一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列

9、媒介 (media)

发送告警通知的手段;告警通知的途径

10、通知 (notification)

利用已选择的媒体途径把跟事件相关的信息发送给用户

11、远程命令 (remote command)

一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令

12、模版 (template)

一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合 模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。

13、应用 (application)

一组监控项组成的逻辑分组

14、web 场景 (web scenario)

利用一个或多个HTTP请求来检查网站的可用性

15、前端 (frontend)

Zabbix提供的web界面

16、Zabbix API

Zabbix API允许你使用JSON RPC协议 (是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主) 来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务

17、Zabbix server

Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等

18、Zabbix agent

一个部署在监控对象上的,能够主动监控本地资源和应用的程序 Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。 Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。. Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。

19、被动(passive)和主动(active)检查

Zabbix agents可以执行被动和主动两种检查方式。 在passive check 模式中agent应答数据请求,Zabbix server(或者proxy)询问agent数据,如CPU 的负载情况,然后Zabbix agent回送结果。 Active checks 处理过程将相对复杂。 Agent必须首先从Zabbix sever索取监控项列表以进行独立处理,然后周期性地发送新的值给server。 执行被动或主动检查是通过选择相应的监测项目类型来配置的。item type. Zabbix agent处理监控项类型有’Zabbix agent’和’Zabbix agent (active)’。

20、Zabbix proxy

一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序 Zabbix Proxy是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix sever的进程,基本上是代表sever工作的。 所有收集的数据都在本地进行缓存,然后传送到proxy所属的Zabbix sever。 部署Proxy是可选的,,但是可能非常有益于分散单个Zabbix sever的负载。 如果只有proxy收集数据,sever上的进程就会减少CPU消耗和磁盘I / O负载。 Zabbixproxy是完成远程区域、分支机构、没有本地管理员的网络的集中监控的理想解决方案。 Zabbix proxy需要使用独立的数据库。

Zabbix 企业监控系统搭建

1、实验准备

 centos7.5 系统服务器3台、 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。

1)所有机器关闭防火墙和selinux

setenforing 0 (修改配置文件关闭)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

systemctl stop firewalld.service

2)根据架构图,实验基本设置如下:

机器名称            IP配置           服务角色            备注

Server                192.168.11.11                zabbix-server      开启监控功能

Node1                192.168.11.12                zabbix-agent            开启监控功能

Node2                192.168.11.13                zabbix-agent            开启监控功能

 

2、Zabbix的安装

我们去官网下载一个包 zabbix-release-3.4-2.el7.noarch.rpm ,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务:

1)更新yum仓库

第一步:下载安装官方yum源

yum -y install wget

wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-

2.el7.noarch.rpm

第二步:安装zabbix源(官方可参考)

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-

1.el7.noarch.rpm

安装:[root@server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-servermysql zabbix-web zabbix-web-mysql

 

2)安装设置数据库:

1、创建 mariadb.repo

vim /etc/yum.repos.d/mariadb.repo

写入以下内容:

[mariadb]

name = MariaDB

baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64

gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

2、yum 安装最新版本 mariadb

yum install MariaDB-server MariaDB-clien

首先,我们修改一下配置文件—— /etc/my.cnf.d/server.cnf :

[root@server ~]# vim /etc/my.cnf.d/server.cnf

[mysqld]

skip_name_resolve = ON                               #跳过主机名解析

innodb_file_per_table = ON                         #

innodb_buffer_pool_size = 256M                   #缓存池大小

max_connections = 2000                              #最大连接数

log-bin = master-log                                     #开启二进制日志

3、重启我们的数据库服务:

[root@server ~]# systemctl restart mariadb

[root@server ~]# mysql_secure_installation #初始化mariadb

4、创建数据库并授权账号

MariaDB [(none)]> create database zabbix character set 'utf8'; # 创建zabbix数据库

MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'192.168.37.%' identified by

'keer'; # 注意授权网段

MariaDB [(none)]> flush privileges; # 刷新授权

5、导入表 首先,我们来查看一下, zabbix-server-mysql 这个包提供了什么:

[root@server ~]# rpm -ql zabbix-server-mysql

/etc/logrotate.d/zabbix-server

/etc/zabbix/zabbix_server.conf

/usr/lib/systemd/system/zabbix-server.service

/usr/lib/tmpfiles.d/zabbix-server.conf

/usr/lib/zabbix/alertscripts

/usr/lib/zabbix/externalscripts

/usr/sbin/zabbix_server_mysql

/usr/share/doc/zabbix-server-mysql-3.2.6

/usr/share/doc/zabbix-server-mysql-3.2.6/AUTHORS

/usr/share/doc/zabbix-server-mysql-3.2.6/COPYING

/usr/share/doc/zabbix-server-mysql-3.2.6/ChangeLog

/usr/share/doc/zabbix-server-mysql-3.2.6/NEWS

/usr/share/doc/zabbix-server-mysql-3.2.6/README

/usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz #生成表的各种脚本

/usr/share/man/man8/zabbix_server.8.gz

/var/log/zabbix

/var/run/zabbix

我们来使用这个文件生成我们所需要的表:

[root@server ~]# gzip -d create.sql.gz

[root@server ~]# head create.sql #查看一下表头

CREATE TABLE `users` (

`userid` bigint unsigned NOT NULL,

`alias` varchar(100) DEFAULT '' NOT NULL,

`name` varchar(100) DEFAULT '' NOT NULL,

`surname` varchar(100) DEFAULT '' NOT NULL,

`passwd` char(32) DEFAULT '' NOT NULL,

`url` varchar(255) DEFAULT '' NOT NULL,

`autologin` integer DEFAULT '0' NOT NULL,

`autologout` integer DEFAULT '900' NOT NULL,

`lang` varchar(5) DEFAULT 'en_GB' NOT NULL,

我们查看表头发现没有创建数据库的命令,这也正是我们刚刚手动创建数据库的原因。 然后,我们直接把

这个表导入至我们的数据库即可:

[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p zabbix < create.sql

Enter password:

导入以后,我们进去数据库查看一下:

[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p

Enter password:

MariaDB [(none)]> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| zabbix |

+--------------------+

MariaDB [(none)]> use zabbix;

Database changed

MariaDB [zabbix]> show tables;

+----------------------------+

| Tables_in_zabbix |

+----------------------------+

| acknowledges |

| actions |

| alerts |

……

| usrgrp |

| valuemaps |

+----------------------------+

127 rows in set (0.00 sec)

可以看出来,我们的数据已经导入成功了。

3)配置 server 端

我们的数据库准备好了以后,我们要去修改server端的配置文件。

[root@server ~]# cd /etc/zabbix/

[root@server zabbix]# ls

web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf

#为了方便我们以后恢复,我们把配置文件备份一下

[root@server zabbix]# cp zabbix_server.conf{,.bak}

[root@server zabbix]# vim zabbix_server.conf

ListenPort=10051 #默认监听端口

SourceIP=192.168.37.111 #发采样数据请求的IP

日志的级别。一共有6个级别。我们可以根据自己的需要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、1、2、3四个级别都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单越好,只要在出错的时候,我们可以依据其进行排错即可。

DBHost=192.168.37.111 #数据库对外的主机

DBName=zabbix #数据库名称

DBUser=zbxuser #数据库用户

DBPassword=keer #数据库密码

DBPort=3306 #数据库启动端口

以上,我们的基本配置已经完成,可以开启服务了:

[root@server zabbix]# systemctl start zabbix-server.service

开启服务以后,我们一定要去确认一下我们的端口有没有开启:

[root@server zabbix]# ss -nutl |grep 10051

tcp LISTEN 0 128 *:10051 *:*

tcp LISTEN 0 128 :::10051 :::*

如果查到的端口没有开启,我们就要去检查一下配置文件有没有出问题了。 至此,我们server端的进程启

动已经ok了,接下来就可以使用web GUI来打开接口进行设定了

4)配置 web GUI

zabbix监控系统_第1张图片

之后是鼠标点击操作,不多加赘述。不清楚的继续搜索文档。