Zabbix监控实战

zabbix 监控

1、zabbix 监控架构

zabbix的监控架构在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。

1、server-client架构也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。
2、server-proxy-client架构其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控
3、master-node-client架构该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步.

普通监控:
Zabbix监控实战_第1张图片

分布式监控:
Zabbix监控实战_第2张图片

2、Zabbix 优点

开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合

3、Zabbix 缺点

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

4、Zabbix 监控系统监控对象

Zabbix监控实战_第3张图片

IPMI:智能平台管理接口(Intelligent Platform Management Interface)IPMI 能够横跨不同的操作系统、固件和硬件平台,可以智能的监视、控制和自动回报大量服务器的运作状况,以降低服务器系统成本。

SNMP:网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。

5、监控区别

​ 1.nagios图形不是特别好,也可以安装图形插件,但是也不怎么好看
​ 2.nagios一般情况下如果需要图形可以和cacti配合使用
​ 3.cacti的监控是轮询监控,效率低,图形相对nagios比较好看
​ 4.zabbix在性能和功能上都强大很多
​ 5.zabbix的图形相当漂亮
​ 6.zabbix支持多种监控方式 zabbix-agent snmp 等等
​ 7.zabbix支持分布式监控,能监控的agent非常多
​ 8.zabbix有图形的web配置界面,配置简洁
​ 9.zabbix支持自动发现功能

6、Zabbix监控方式

被动模式
主动模式

1、Server

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

2、数据库存储

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

3、Web界面

为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常跟Zabbix Server运行在同一台物理机器上。

4、Proxy 代理服务器

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。

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

5、数据流

监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。 因此,如果你想收到Server XCPU负载过高的告警,你必须: 1. 为Server 创建一个host并关联一个用于对CPU进行监控的监控项(Item)。 2. 创建一个Trigger,设置成当CPU负载过高时会触发 3. Trigger被触发,发送告警邮件 。

4、Zabbix常用术语的含义

1、主机 (host)

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

2、主机组 (host group)

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

3、监控项 (item)

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

4、触发器 (trigger)

  • 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式
    当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。

5、动作 (action)

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

6、媒介 (media)

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

7、远程命令 (remote command)

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

8、模版 (template)

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

9、web 场景 (web scenario)

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

10、前端 (frontend)

  • Zabbix提供的web界面

11、Zabbix agent

Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件,内存,处理器统计等)。
Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。

5、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.246.228 zabbix-server 开启监控功能
node1 192.168.246.226 zabbix-agent-none1 开启
node2 192.168.246.227 zabbix-agent-none2 开启

2、Zabbix的安装,安装server端

1)更新yum仓库

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

[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

而后更新我们的yum仓库:

[root@zabbix-server ~]# yum repolist
Loaded plugins: fastestmirror, langpacks  
Loading mirror speeds from cached hostfile
zabbix-non-supported                                                      4/4
repo id                     repo name                                   status
base                        base                                         9,363
epel                        epel                                        11,349
zabbix/x86_64               Zabbix Official Repository - x86_64             80
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported -       4
repolist: 20,796

安装:

[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
[root@zabbix-server ~]# yum install -y zabbix-get-3.4.0-1.el7.x86_64

2)安装设置数据库:

1、安装 mariadb.repo

[root@zabbix-server ~]# yum install -y mariadb mariadb-server

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

[root@zabbix-server ~]# systemctl restart mariadb
[root@zabbix-server ~]# systemctl enable mariadb
[root@zabbix-server ~]# mysqladmin -u root password 'zabbix'    #设置root密码

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

[root@zabbix-server ~]# mysql -uroot -p'zabbix'
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  # 创建zabbix数据库
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';										# 注意授权网段
MariaDB [(none)]> flush privileges;           # 刷新授权
MariaDB [(none)]> \q   #退出
Bye

4、导入表

我们直接把表导入至我们的数据库即可:

[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:                   #输入密码

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

[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -uzabbix -p
Enter password: 
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
.....
| proxy_dhistory             |
| proxy_history              |
| regexps                    |
| rights                     |
| screen_user                |
+----------------------------+
140 rows in set (0.001 sec)

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

3、配置 server 端

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

[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
 DBHost=localhost      #数据库对外的主机
 DBName=zabbix               #数据库名称
 DBUser=zabbix              #数据库用户
 DBPassword=zabbix             #数据库密码
 #这里的配置文件打开后:如果有的就不用添加了。如果是注释了的也不用取消注释。直接把内容复制粘贴过去就可以 了。

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

[root@zabbix-server zabbix]# systemctl start zabbix-server
[root@zabbix-server zabbix]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

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

[root@zabbix-server zabbix]# netstat -lntp | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1574/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      1574/zabbix_server

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

4、配置 web GUI

有一个/etc/httpd/conf.d/zabbix.conf文件,这个配置文件就是帮我们做映射的文件

[root@zabbix-server zabbix]# vim /etc/httpd/conf.d/zabbix.conf   #设置时区
#里面基本不用动。只需要添加一行时区即可
php_value date.timezone Asia/Shanghai       ---添加如下

Zabbix监控实战_第4张图片

接下来,我们就可以启动我们的httpd服务了:

[root@zabbix-server zabbix]# systemctl start httpd
[root@zabbix-server zabbix]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

在这里插入图片描述

我们的服务已经开启,接着我们就可以用浏览器来访问了。

5、浏览器访问并进行初始化设置

我们使用浏览器访问192.168.246.228/zabbix,第一次访问时需要进行一些初始化的设置,我们按照提示操作即可:
  
Zabbix监控实战_第5张图片Zabbix监控实战_第6张图片Zabbix监控实战_第7张图片Zabbix监控实战_第8张图片Zabbix监控实战_第9张图片Zabbix监控实战_第10张图片

点击Finish以后,我们就会跳转到登录页面,使用我们的账号密码登录即可:
Zabbix监控实战_第11张图片
  默认用户名为:Admin ,密码为:zabbix 。
  登陆进来就可以看到我们的仪表盘了:

Zabbix监控实战_第12张图片

6、配置 agent 端

当我们把监控端配置启动以后,我们需要来设置一下我们的被监控端,我们在被监控的主机安装好agent,设置好他的server,并把他添加到server端,就能将其纳入我们的监控系统中去了。

1)安装 zabbix

同样的,我们先来安装zabbix。两台机器都操作

[root@zabbix-agent-none1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix-agent-none1 ~]# yum install zabbix-agent zabbix-sender -y

安装完成以后,我们去修改配置文件。

2)修改配置文件

对配置文件做一个备份,然后去修改配置文件:

[root@zabbix-agent-none1 ~]# cd /etc/zabbix/
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.conf.bak  zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# vim zabbix_agentd.conf   ----修改如下
Server=192.168.246.228 zabbix服务器的地址 
ServerActive=192.168.246.228 主动模式 zabbix-server-ip 
Hostname=zabbix-agent-none1 
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符

Zabbix监控实战_第13张图片
是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.

修改完成之后,我们保存退出。然后就可以启动服务了:

[root@zabbix-agent-none1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent-none1 zabbix]# systemctl enable zabbix-agent

照例查看端口是否已开启

[root@zabbix-agent-none1 zabbix]# netstat -lntp | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      9369/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      9369/zabbix_agentd

已经开启成功。接着,我们就可以去server端添加了。
  non2也进行同样的操作,唯一不同的就是配置文件中的Hostname要设为zabbix-agent-none2

7、监控过程详解

1)修改密码及中文版

作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~
Zabbix监控实战_第14张图片Zabbix监控实战_第15张图片

记得刷新!

按如上操作即可,选择中文以后,点击下面的update即可更新成功,更新过后是这样子的~
Zabbix监控实战_第16张图片

同样的,为了安全起见,我们把密码改掉:
Zabbix监控实战_第17张图片
Zabbix监控实战_第18张图片
  修改完成后同样点击更新即可。

2)创建主机及主机群组

我们先来定义一个主机群组:
Zabbix监控实战_第19张图片
  然后我们就可以去添加主机了:
Zabbix监控实战_第20张图片
Zabbix监控实战_第21张图片

当然,上面有很多选择卡,有一个加密:
Zabbix监控实战_第22张图片
  设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:

Zabbix监控实战_第23张图片

3)监控项(items)

① 介绍

我们点击上图中none1的监控项,即可创建我们的监控项,首先,我们创建三个应用集:

Zabbix监控实战_第24张图片Zabbix监控实战_第25张图片Zabbix监控实战_第26张图片定义监控项

Zabbix监控实战_第27张图片Zabbix监控实战_第28张图片

任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为key

Zabbix监控实战_第29张图片

关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:

[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “system.cpu.intr”

在我们的agent端,也可以使用命令来查看intr的速率变化:

Zabbix监控实战_第30张图片

我们继续来看我们的监控项:

Zabbix监控实战_第31张图片

说了这么多,我们来简单定义一个:

② 定义一个不带参数的监控项

Zabbix监控实战_第32张图片

Zabbix监控实战_第33张图片

Zabbix监控实战_第34张图片

Zabbix监控实战_第35张图片
  设置完以后,点击更新,即可加入,并会自动跳转至下图页面:
Zabbix监控实战_第36张图片
  定义完成,我们回到所有主机,等待5秒,我们可以看到,我们node1节点后面的选项已经有变成绿色的了:如果不亮记得刷新
Zabbix监控实战_第37张图片
  我们也可以回到我们的仪表盘,可以看到,我们的监控项有一个处于启用状态:
Zabbix监控实战_第38张图片
  那么,我们的数据在哪里呢?可以点击最新数据,把我们的none1节点添加至主机,应用一下,就可以看到下面的状态了:
Zabbix监控实战_第39张图片
  可以看到,我们还有一个图形页面,点进去则可以看图形的分布:
Zabbix监控实战_第40张图片
  事实上,我们关注的指标有很多种,我们一一添加进来即可。
  刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:

③ 定义一个带参数的监控项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wwxoXFN-1582721175632)(assets/1564677663326.png)]
  图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说明:
  if表示是接口名;表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容通过ifconfig查看)
  我们来设置一下这个监控值:

Zabbix监控实战_第41张图片
Zabbix监控实战_第42张图片

Zabbix监控实战_第43张图片

Zabbix监控实战_第44张图片

Zabbix监控实战_第45张图片

Zabbix监控实战_第46张图片

Zabbix监控实战_第47张图片

同样的,我们也可以通过命令行来查看:

[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k "net.if.in[ens33,packets]"

我们来看看网页的显示情况:检测中 —> 最新数据 —> Network Interface Stats(图形),等待一会,或者刷新一下
Zabbix监控实战_第48张图片

④ 快速定义类似指标

如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。
  就以我们刚刚定义的net.if.in[ens33,packets]为例,如果我们想要在定义一个out的进行如下操作即可:
Zabbix监控实战_第49张图片
Zabbix监控实战_第50张图片
  如果我们要以字节为单位也要定义的话,进行同样的操作:
Zabbix监控实战_第51张图片

如果有需要的话也可以把byte再克隆成out。就不一一演示了~
  可以看一下,我们现在已经定义的指标:
Zabbix监控实战_第52张图片
  我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
Zabbix监控实战_第53张图片

⑤ 删除监控项

如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
Zabbix监控实战_第54张图片

4)触发器(trigger)

① 简介

当我们的采集的值定义完了以后,就可以来定义触发器了。
  我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。

一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
1. 最近N分钟所得结果的平均值
2. 最近N次所得结果的平均值

注:能用数值保存的就不要使用字符串

② 触发器表达式

基本的触发器表达式格式如下所示

{:.()}
  • server:主机名称;
  • key:主机上关系的相应监控项的key;
  • function:评估采集到的数据是否在合理范围内时所使用的函数,目前触发器所支持的函数有avg(平均)、count(计数)、change(变化)、date(日期)、dayofweek(星期)、delta(增量)、diff、iregexp、last()、max(最大值)、min(最小值)、nodata(无数据)、now(现在)、sum(总和)等
  • parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
③ 定义一个触发器

我们可以查看一下rate of packets(in)的值,并以其为标准确定我们的非正常的值:
Zabbix监控实战_第55张图片
  图中我们可以看出,我们的最大值为74,最小值为4,平均值为24。这样的话,我们可以定义5以上的都是非正常的值。
  下面我们来定义一个触发器:
  进入:配置 —> 主机 —> none1 —> 触发器 —> 创建触发器
Zabbix监控实战_第56张图片
  我们的表达式可以直接点击右侧的添加,然后定义自己所需的内容,即可自动生成:

Zabbix监控实战_第57张图片

生成完毕后,我们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:
Zabbix监控实战_第58张图片
  然后我们去看一下我们刚刚定义了触发器的那个监控项:
Zabbix监控实战_第59张图片
  我们可以看出,这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状态,看起来非常直观。
  但是,现在即使超过了这根线,也仅仅会产生一个触发器事件而不会做其他任何事。因此,我们就需要去定义一个动作(action)。

5)定义动作(action)

① 简介

我们需要去基于一个对应的事件为条件来指明该做什么事,一般就是执行远程命令或者发警报。

第一,我们要事先定义一个媒介,第二,还要定义这个媒介上用户接收消息的端点(当然,在用户上,我们也称之为用户的媒介)。
  我们可以去看一下系统内建的媒介类型:
Zabbix监控实战_第60张图片
  这只是大的媒介类型,里面还有更多的细分,我们以Email为例:
Zabbix监控实战_第61张图片
  同样的,同一个类型我们也可以定义多个,还是以Email为例,我们可以定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。

② 定义一个媒介(media)

我们还是以Email为例。来简单的定义一个媒介:
Zabbix监控实战_第62张图片

这样定义以后,我们去更新一下就可以了。
  媒介定义好了,那么我们怎么才能够然后用户接收到邮件呢?比如让我们的Admin用户接收邮件
  进入 管理 —> 用户 —> Admin —> 报警媒介
  我们来添加一条进来:
Zabbix监控实战_第63张图片
  添加过后是这样的:
Zabbix监控实战_第64张图片
  然后我们更新就可以了。
  一个用户可以添加多个接收的媒介类型。

③ 定义一个动作(action)

我们之前说过了,动作是在某些特定条件下触发的,比如,某个触发器被触发了,就会触发我们的动作。
  现在,我么基于redis来定义一个动作。
  首先,我们在agent端使用yum安装一下redis

[root@zabbix-agent-none1 ~]# yum install -y redis

修改一下配置文件:

[root@zabbix-agent-none1 ~]# vim /etc/redis.conf 
bind 0.0.0.0        #不做任何认证操作

修改完成以后,我们启动服务,并检查端口:

[root@zabbix-agent-none1 ~]# systemctl start redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis 
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1353/redis-server 0

接着,我们就可以去网站上来定义相关的操作了:

创建一个应用集:

配置-----主机—none1—应用集—创建应用集:

Zabbix监控实战_第65张图片

1.定义监控项

进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项
Zabbix监控实战_第66张图片
  填写完毕以后,我们点击下方的添加。
Zabbix监控实战_第67张图片
  该监控项已成功添加。
  我们可以去查看一下他的值:
  检测中 —> 最新数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgxJoQNm-1582721175719)(assets/1204916-20171202113122433-2129349774.png)]

2.定义触发器

定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
  进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器
Zabbix监控实战_第68张图片
Zabbix监控实战_第69张图片  填写完毕以后,我们点击下方的添加。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKxvmKbI-1582721175728)(assets/1204916-20171202113142604-1237551286.png)]
  该触发器已成功添加。
  我们去查看一下:
  监测中 —> 最新数据
Zabbix监控实战_第70张图片
  我们来手动关闭redis服务来检测一下:

[root@zabbix-agent-none1 ~]# systemctl stop redis

进入 监测中 —> 问题
Zabbix监控实战_第71张图片
  可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:

[root@zabbix-agent-none1 ~]# systemctl start redis

Zabbix监控实战_第72张图片

3.定义动作(action)

现在我们就可以去定义action了。
  进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)
Zabbix监控实战_第73张图片

Zabbix监控实战_第74张图片
  我们可以进行操作添加:
Zabbix监控实战_第75张图片
  我们可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:

[root@zabbix-agent-none1 ~]# visudo          #相当于“vim /etc/sudoers”
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)   ALL
 93 zabbix    ALL=(ALL)   NOPASSWD: ALL     #添加的一行,表示不需要输入密码

[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
    EnableRemoteCommands=1          #允许接收远程命令
    LogRemoteCommands=1             #把接收的远程命令记入日志

[root@zabbix-agent-none1 ~]# systemctl restart zabbix-agent.service

我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:
Zabbix监控实战_第76张图片
  添加完成以后,我们可以看一下:
Zabbix监控实战_第77张图片
  操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:
Zabbix监控实战_第78张图片
  至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面:
Zabbix监控实战_第79张图片
  现在我们可以手动停止服务来进行测试:

[root@zabbix-agent-none1 ~]# systemctl stop redis.service

然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会
Zabbix监控实战_第80张图片
 
也可以去agent端查看端口是否开启:

[root@zabbix-agent-none1 ~]# systemctl stop redis 
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis 
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis 
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1957/redis-server 0

可以看出端口正常开启,我们的动作触发已经完成。

补充:我们也可以使用脚本来发送警报,我们的脚本存放路径在配置文件中可以找到,定义为:AlterScriptsPath=/usr/lib/zabbix/alertscripts

然后我们将这个动作关闭掉为后期的邮件报警做准备。

Zabbix监控实战_第81张图片

6)zabbix可视化

① 简介

数据日积月累,如果我们想要更直观的了解到各项数据的情况,图形无疑是我们的最佳选择。zabbix提示了众多的可视化工具提供直观展示。

② 自定义图形(Graphs)

自定义图形中可以集中展示多个时间序列的数据流。支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形。
  具体的设置过程如下:
  进入 配置 —> 主机 —> none1 —> 图形,选择右上角创建图形:
Zabbix监控实战_第82张图片
  我们来看一看四种状态:
Zabbix监控实战_第83张图片
Zabbix监控实战_第84张图片

包括我们的主机都可以自定义,不过一般来说,线型是看的最清晰的,我们通常会使用这个。
  我们一共添加了三个图形,我们可以在 监测中 —> 图形 来查看
Zabbix监控实战_第85张图片

解决字体乱码问题:

在Windows-控制面板-字体中选择自己喜欢的字体下载下来,并上传到zabbix服务器中

注意:把新字体文件改名成原来字体文件的名字,不然需要修改如下配置文件

如果有字体文件:

cp 字体文件 /usr/share/zabbix/fonts/graphfont.ttf

先将字体文件上传到zabbix服务器中
[root@zabbix-server ~]# cd /usr/share/zabbix/fonts/
[root@zabbix-server fonts]# ls
graphfont.ttf
[root@zabbix-server fonts]# cp graphfont.ttf graphfont.ttf.bak
[root@zabbix-server fonts]# ls
graphfont.ttf  graphfont.ttf.bak
[root@zabbix-server fonts]# rm -rf graphfont.ttf       
[root@zabbix-server fonts]# mv /root/simhei.ttf .
[root@zabbix-server fonts]# ls
graphfont.ttf.bak  simhei.ttf
[root@zabbix-server fonts]# mv simhei.ttf graphfont.ttf
[root@zabbix-server fonts]# ls
graphfont.ttf  graphfont.ttf.bak

使用xshell上传字体。如果使用其他客户端上传字体,会出现问题。

Zabbix监控实战_第86张图片

7)模板

① 创建模板

之前我们说过,每一个主机的监控项都很多,我们一个一个的添加实在是太头疼了,更何况,可能不止一个主机。
  但是我们可以把一个redis的监控项添加进一个模板里,这样更方便于我们以后的添加。
  具体操作如下:
  进入 配置 —> 模板 —> 选择右上角创建模板
Zabbix监控实战_第87张图片
  填写完以后,我们点击下方的添加即可。
  我们可以基于组过滤一下,就能看到我们刚刚定义的模板:
Zabbix监控实战_第88张图片
  一样的,我们可以向里面添加应用集、监控项、触发器、图形等等,添加完成以后,后期我们再有主机需要添加就直接套用模板即可。

需要注意的一点是,我们现在添加的是模板,所以不会立即采用数据,只有链接到主机上以后,才会真正生效。

2、 模板的应用

我们的软件已经创建了许多模板,我们可以使用一个模板来看看效果。

进入 配置 —> 主机 —> node1 —> 模板
  我们就可以选择要添加的模板了:
Zabbix监控实战_第89张图片
  到这里我们就可以点击更新了。一旦我们成功链接至模板,我们的主机数据就会更新了:
Zabbix监控实战_第90张图片
  注意:1、一个主机可以链接多个模板.
  2、如果我们有多个主机,同时这些主机也在一个主机组里,这样的话,我们只需要在这个主机组里添加模板。

3、移除模板链接

当我们一个主机的模板不想要用了,我们就可以移除模板链接,具体操作步骤如下:
  进入 配置 —> 主机 —> none1 —> 模板
  我们就可以把不需要的模板移除:
Zabbix监控实战_第91张图片
  我们来删除掉试试看,移除并清理以后,我们点击更新。就会自动跳转至如下界面:
Zabbix监控实战_第92张图片
  可以看出,我们的模板已经被移除了。

5、用户参数

1、介绍和用法

① 介绍

自定义用户参数,也就是自定义key

有时,你可能想要运行一个代理检查,而不是Zabbix的预定义

你可以编写一个命令检索需要的数据,并将其包含在代理配置文件("UserParameter"配置参数)的用户参数

用法格式 syntax
UserParameter=<key>,<command>
 A user parameter also contains a key  一个用户参数也包含一个键
 The key will be necessary when configuring an item   在配置监控项时,key是必需的
 Note: Need to restart the agent   注意:需要重新启动agent 服务 

2、用法展示

(1)修改agent 端的配置,设置用户参数

①自己需要查找的参数的命令

[root@zabbix-agent-none1 ~]# free | awk '/^Mem/{print $3}'

Zabbix监控实战_第93张图片

② 修改配置文件,把查找参数的命令设为用户参数

[root@zabbix-agent-none1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-agent-none1 zabbix_agentd.d]# vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'

③ 重启agent 服务

[root@zabbix-agent-none1 zabbix_agentd.d]# systemctl restart zabbix-agent.service

(2)在zabbix-server 端,查询

[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.used"

Zabbix监控实战_第94张图片

(3)在监控上,设置一个item监控项,使用这个用户参数

配置–>主机–>none1–>监控项–>创建监控项

Zabbix监控实战_第95张图片

(4)查询graph 图形

Zabbix监控实战_第96张图片

3、用法升级

(1)修改agent 端的配置,设置用户参数

① 命令行查询参数的命令

Zabbix监控实战_第97张图片

② 修改配置文件,把查找参数的命令设为用户参数

[root@zabbix-agent-none1 zabbix_agentd.d]# ls
memory_usage.conf  userparameter_mysql.conf
[root@zabbix-agent-none1 zabbix_agentd.d]# vim memory_usage.conf  ----继续添加
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'     --添加到文件中注意去掉反斜杠
[root@zabbix-agent-none1 zabbix_agentd.d]# systemctl restart zabbix-agent.service
注意:$$2:表示不是前边调位置参数的$1,而是awk 的参数$2
注意:$1是调用前边的[*],位置参数,第一个参数

(2)在zabbix-server 端,查询使用这个用户参数的key

传参:
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[MemTotal]"
999696
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Cache]"
243832
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Buffer]"
2108

Zabbix监控实战_第98张图片

(3)在监控上,设置一个item监控项,使用这个用户参数

① 添加Memory Total 的item监控项,使用memory.stats[MemTotal] 的用户参数

Zabbix监控实战_第99张图片

在进程中定义倍数,规定单位

Zabbix监控实战_第100张图片

② clone 克隆Memory Total 创建Memory Free 的监控项

memory.stats[MemFree] 用户参数

Zabbix监控实战_第101张图片

(4)上面2个监控项的graph 图形

① memory total

Zabbix监控实战_第102张图片

② memory free

Zabbix监控实战_第103张图片

6、Network discovery 网络发现(自动发现)

1、介绍

(1)介绍

网络发现:zabbix server扫描指定网络范围内的主机;
网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的主机或服务等
优点:
加快Zabbix部署
简化管理
在快速变化的环境中使用Zabbix,而不需要过度管理 

(2)发现方式:

ip地址范围;
可用服务(ftp, ssh, http, ...)
zabbix_agent的响应;
snmp_agent的响应;

(3)网络发现通常包含两个阶段:discovery发现 和actions动作

① discovery:
Zabbix定期扫描网络发现规则中定义的IP范围;
② actions:网络发现中的事件可以触发action,从而自动执行指定的操作,把discvery events当作前提条件;
添加/删除主机
启用/禁用host
向组中添加主机
移除组中的主机
从模板链接主机或取消链接

=======================================================

2、配置网络发现Network discovery

(1)利用第二台用于可被扫描发现的主机----192.168.246.227

① 安装agent 段的包

yum -y install zabbix-agent zabbix-sender

② 设置agent 配置,可以把之前设置好的none1的配置传过来

[root@zabbix-agent-none2 ~]# vim /etc/zabbix/zabbix_agentd.conf

Hostname=zabbix-agent-none2 #只需修改hostname

[root@zabbix-agent-none2 ~]# visudo #修改sudo的配置,添加如下信息

#Defaults !visiblepw

zabbix ALL=(ALL) NOPASSWD: ALL

Zabbix监控实战_第104张图片

④ 开启服务

[root@zabbix-agent-none2 ~]# systemctl start zabbix-agent

(2)设置自动发现规则discovery

配置–自动发现–创建自动发现规则

ip范围不要给的太大

Zabbix监控实战_第105张图片

Zabbix监控实战_第106张图片

注释:在zabbix-server端

[root@zabbix-server ~]# zabbix_get -s 192.168.246.227 -p 10050 -k "system.hostname"
zabbix-agent-none2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yddWUCh-1582721175827)(assets/1564811110285.png)]

② 更新间隔:1h就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了实验,设为1m

(3)自动发现成功

Zabbix监控实战_第107张图片

(4)设置自动发现discovery 的动作action

a) 创建

Zabbix监控实战_第108张图片

b) 设置action动作

Zabbix监控实战_第109张图片

① 设置A条件,自动发现规则=test net

② 设置B条件,自动发现状态=up

Zabbix监控实战_第110张图片

③ 要做什么操作

添加主机到监控

自动链接Template OS Linux 到此host

Zabbix监控实战_第111张图片

c) 配置action 完成,默认是disabled 停用的,如果不是停用的,也需要再次选择启动,激活一下。

Zabbix监控实战_第112张图片

d) 启用动作,查看效果

确实已经生效,添加主机成功,模板链接成功

Zabbix监控实战_第113张图片

(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源

7、web监控

1、介绍

(1)介绍

① Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码

2、创建设置web场景

配置–主机–none1–web场景–创建web场景

(1)创建

Zabbix监控实战_第114张图片

(2)配置web 监测

Zabbix监控实战_第115张图片

① 点击步骤,设置web page web页面

Zabbix监控实战_第116张图片

a) 设置名为home page,URL为http://192.168.246.226/index.html 的web页面

Zabbix监控实战_第117张图片

3、查看测试

8、主动/被动 监控

1、介绍

(1)主动/被动介绍

被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;

主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;主动监控能极大节约监控server 的资源。 

2、设置一个通过內建key发送数据的主动监控

(1)agent端所需要基本配置:

[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.246.228   给哪个监控server 发送数据
Hostname=zabbix-agent-none1   自己的主机名.

(2)设置一个主动监测

Zabbix监控实战_第118张图片

配置—主机–none1–监控项—创建监控项

Zabbix监控实战_第119张图片

① 选择进程,每秒更改,—添加

因为key:system.cpu.switches :上下文的数量进行切换,它返回一个整数值。为了监控效果,选择下一秒减上一秒的值作为监控

注释:可运行的线程数大于CPU的数量,那么OS最终会强行换出正在执行的线程,从而使其他线程能够使用CPU。这会引起上下文切换.

Zabbix监控实战_第120张图片

(3)已经有图形

Zabbix监控实战_第121张图片

9、zabbix-server 监控自己,数据库,nginx

1、下载安装,配置agent

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_agentd.conf # 配置agent,添加并修改

EnableRemoteCommands=1    允许远程命令
LogRemoteCommands=1    记录远程命令
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix-server
[root@zabbix-server ~]# systemctl start zabbix-agent

2、自动生成Zabbix server 的主机

配置—主机

Zabbix监控实战_第122张图片

3、在主机中添加模板

配置–主机—zabbix–server—模板—选择Template DB MYsql -----添加 -----更新

Zabbix监控实战_第123张图片

Zabbix监控实战_第124张图片

4、启用Zabbix server

Zabbix监控实战_第125张图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gF10VBDm-1582721175884)(assets/1564765941629.png)]

5、监控到数据

Zabbix监控实战_第126张图片

你可能感兴趣的:(Zabbix监控实战)