企业级 Zabbix 监控

2/26 星期三 企业级 Zabbix 监控
作业:zabbix 如何监控cpu的温度
1、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同步.
普通监控:

分布式监控:

2、Zabbix 优点 需要背过
开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合
3、Zabbix 缺点
需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据很大,瓶颈主要在数据库。
4、Zabbix 监控系统监控对象 ipmi平台管理接口

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
安装: zabbix-get 可以获取 两台被监控机器 的信息
[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)]>c
±-------------------+
| 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.
 开启服务以后,我们一定要去确认一下我们的端口有没有开启:
zabbix-server的端口 :10051
[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 —添加如下

接下来,我们就可以启动我们的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,第一次访问时需要进行一些初始化的设置,我们按照提示操作即可:

点击Finish以后,我们就会跳转到登录页面,使用我们的账号密码登录即可:
  默认用户名为:Admin ,密码为:zabbix 。   登陆进来就可以看到我们的仪表盘了:

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是不可以启用特殊字符

是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
  修改完成之后,我们保存退出。然后就可以启动服务了:
[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)修改密码及中文版
  作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~

按如上操作即可,选择中文以后,点击下面的update即可更新成功,更新过后是这样子的~

修改完成后同样点击更新即可。
2)创建主机及主机群组

然后我们就可以去添加主机了:

当然,上面有很多选择卡,有一个加密:

设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:  
 
3)监控项(items)
① 介绍
  我们点击上图中none1的监控项,即可创建我们的监控项,首先,我们创建三个应用集:

然后我们来定义监控项:

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

关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “system.cpu.intr”
  在我们的agent端,也可以使用命令来查看intr的速率变化:
  我们继续来看我们的监控项:

说了这么多,我们来简单定义一个:
② 定义一个不带参数的监控项

定义完成,我们回到所有主机,等待5秒,我们可以看到,我们node1节点后面的选项已经有变成绿色的了:如果不亮记得刷新

我们也可以回到我们的仪表盘,可以看到,我们的监控项有一个处于启用状态:

那么,我们的数据在哪里呢?可以点击最新数据,把我们的none1节点添加至主机,应用一下,就可以看到下面的状态了:   可以看到,我们还有一个图形页面,点进去则可以看图形的分布:   事实上,我们关注的指标有很多种,我们一一添加进来即可。   刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:
③ 定义一个带参数的监控项
  图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说明:   if表示是接口名;表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容通过ifconfig查看)   我们来设置一下这个监控值:
  同样的,我们也可以通过命令行来查看:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “net.if.in[ens33,packets]”
  我们来看看网页的显示情况:检测中 —> 最新数据 —> Network Interface Stats(图形),等待一会,或者刷新一下
④ 快速定义类似指标
  如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。   就以我们刚刚定义的net.if.in[ens33,packets]为例,如果我们想要在定义一个out的进行如下操作即可:   如果我们要以字节为单位也要定义的话,进行同样的操作:   如果有需要的话也可以把byte再克隆成out。就不一一演示了~   可以看一下,我们现在已经定义的指标:   我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
⑤ 删除监控项
  如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
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)的值,并以其为标准确定我们的非正常的值:   图中我们可以看出,我们的最大值为74,最小值为4,平均值为24。这样的话,我们可以定义5以上的都是非正常的值。   下面我们来定义一个触发器:   进入:配置 —> 主机 —> none1 —> 触发器 —> 创建触发器   我们的表达式可以直接点击右侧的添加,然后定义自己所需的内容,即可自动生成:
      生成完毕后,我们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:   然后我们去看一下我们刚刚定义了触发器的那个监控项:   我们可以看出,这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状态,看起来非常直观。   但是,现在即使超过了这根线,也仅仅会产生一个触发器事件而不会做其他任何事。因此,我们就需要去定义一个动作(action)。
    5)定义动作(action)
    ① 简介
      我们需要去基于一个对应的事件为条件来指明该做什么事,一般就是执行远程命令或者发警报。
    第一,我们要事先定义一个媒介,第二,还要定义这个媒介上用户接收消息的端点(当然,在用户上,我们也称之为用户的媒介)。   我们可以去看一下系统内建的媒介类型:   这只是大的媒介类型,里面还有更多的细分,我们以Email为例:   同样的,同一个类型我们也可以定义多个,还是以Email为例,我们可以定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。
    ② 定义一个媒介(media)
      我们还是以Email为例。来简单的定义一个媒介:   这样定义以后,我们去更新一下就可以了。   媒介定义好了,那么我们怎么才能够然后用户接收到邮件呢?比如让我们的Admin用户接收邮件   进入 管理 —> 用户 —> Admin —> 报警媒介   我们来添加一条进来:   添加过后是这样的:   然后我们更新就可以了。   一个用户可以添加多个接收的媒介类型。
    ③ 定义一个动作(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—应用集—创建应用集:
    1.定义监控项
      进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项   填写完毕以后,我们点击下方的添加。   该监控项已成功添加。   我们可以去查看一下他的值:   检测中 —> 最新数据
    2.定义触发器
      定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:   进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器   填写完毕以后,我们点击下方的添加。
      该触发器已成功添加。   我们去查看一下:   监测中 —> 最新数据   我们来手动关闭redis服务来检测一下:
    [root@zabbix-agent-none1 ~]# systemctl stop redis
      进入 监测中 —> 问题   可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:
    [root@zabbix-agent-none1 ~]# systemctl start redis
    3.定义动作(action)
      现在我们就可以去定义action了。   进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)
      我们可以进行操作添加:   我们可以看出,还需要在虚拟机上进行两项操作,一是修改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
我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:   添加完成以后,我们可以看一下:   操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:   至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面:   现在我们可以手动停止服务来进行测试:
[root@zabbix-agent-none1 ~]# systemctl stop redis.service
  然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会   也可以去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
然后我们将这个动作关闭掉为后期的邮件报警做准备。
6)zabbix可视化
① 简介
  数据日积月累,如果我们想要更直观的了解到各项数据的情况,图形无疑是我们的最佳选择。zabbix提示了众多的可视化工具提供直观展示。
② 自定义图形(Graphs)
  自定义图形中可以集中展示多个时间序列的数据流。支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形。   具体的设置过程如下:   进入 配置 —> 主机 —> none1 —> 图形,选择右上角创建图形:   我们来看一看四种状态:   包括我们的主机都可以自定义,不过一般来说,线型是看的最清晰的,我们通常会使用这个。   我们一共添加了三个图形,我们可以在 监测中 —> 图形 来查看
解决字体乱码问题:
在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上传字体。如果使用其他客户端上传字体,会出现问题。
7)模板
① 创建模板
  之前我们说过,每一个主机的监控项都很多,我们一个一个的添加实在是太头疼了,更何况,可能不止一个主机。   但是我们可以把一个redis的监控项添加进一个模板里,这样更方便于我们以后的添加。   具体操作如下:   进入 配置 —> 模板 —> 选择右上角创建模板   填写完以后,我们点击下方的添加即可。   我们可以基于组过滤一下,就能看到我们刚刚定义的模板:   一样的,我们可以向里面添加应用集、监控项、触发器、图形等等,添加完成以后,后期我们再有主机需要添加就直接套用模板即可。
需要注意的一点是,我们现在添加的是模板,所以不会立即采用数据,只有链接到主机上以后,才会真正生效。
2、 模板的应用
我们的软件已经创建了许多模板,我们可以使用一个模板来看看效果。
  进入 配置 —> 主机 —> node1 —> 模板   我们就可以选择要添加的模板了:   到这里我们就可以点击更新了。一旦我们成功链接至模板,我们的主机数据就会更新了:   注意:1、一个主机可以链接多个模板.   2、如果我们有多个主机,同时这些主机也在一个主机组里,这样的话,我们只需要在这个主机组里添加模板。
3、移除模板链接
  当我们一个主机的模板不想要用了,我们就可以移除模板链接,具体操作步骤如下:   进入 配置 —> 主机 —> none1 —> 模板   我们就可以把不需要的模板移除:   我们来删除掉试试看,移除并清理以后,我们点击更新。就会自动跳转至如下界面:   可以看出,我们的模板已经被移除了。
5、用户参数
1、介绍和用法
① 介绍
自定义用户参数,也就是自定义key
有时,你可能想要运行一个代理检查,而不是Zabbix的预定义
你可以编写一个命令来检索需要的数据,并将其包含在代理配置文件("UserParameter"配置参数)的用户参数中
用法格式 syntax
UserParameter=,
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}’
② 修改配置文件,把查找参数的命令设为用户参数
[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”
(3)在监控上,设置一个item监控项,使用这个用户参数
配置–>主机–>none1–>监控项–>创建监控项
(4)查询graph 图形
3、用法升级
(1)修改agent 端的配置,设置用户参数
① 命令行查询参数的命令
② 修改配置文件,把查找参数的命令设为用户参数
[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 KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' --添加到文件中注意去掉反…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
(3)在监控上,设置一个item监控项,使用这个用户参数
① 添加Memory Total 的item监控项,使用memory.stats[MemTotal] 的用户参数
在进程中定义倍数,规定单位
② clone 克隆Memory Total 创建Memory Free 的监控项
memory.stats[MemFree] 用户参数
(4)上面2个监控项的graph 图形
① memory total
② memory free
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
Server=192.168.246.228 zabbix服务器的地址
ServerActive=192.168.246.228 主动模式 zabbix-server-ip
Hostname=zabbix-agent-none2
UnsafeUserParameters=1 是否限制用户自定义 keys(自定义监控脚本) 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
[root@zabbix-agent-none2 ~]# visudo #修改sudo的配置,添加如下信息
#Defaults !visiblepw
zabbix ALL=(ALL) NOPASSWD: ALL
④ 开启服务
[root@zabbix-agent-none2 ~]# systemctl start zabbix-agent
(2)设置自动发现规则discovery
配置–自动发现–创建自动发现规则
ip范围不要给的太大
注释:在zabbix-server端
[root@zabbix-server ~]# zabbix_get -s 192.168.246.227 -p 10050 -k “system.hostname”
zabbix-agent-none2
② 更新间隔:1h就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了实验,设为1m
(3)自动发现成功
(4)设置自动发现discovery 的动作action
a) 创建
b) 设置action动作
① 设置A条件,自动发现规则=test net
② 设置B条件,自动发现状态=up
③ 要做什么操作
添加主机到监控
自动链接Template OS Linux 到此host
c) 配置action 完成,默认是disabled 停用的,如果不是停用的,也需要再次选择启动,激活一下。
d) 启用动作,查看效果
确实已经生效,添加主机成功,模板链接成功
(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源
7、web监控
1、介绍
(1)介绍
① Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码;
2、创建设置web场景
配置–主机–none1–web场景–创建web场景
(1)创建
(2)配置web 监测
① 点击步骤,设置web page web页面
a) 设置名为home page,URL为http://192.168.246.226/index.html 的web页面
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)设置一个主动监测
配置—主机–none1–监控项—创建监控项
① 选择进程,每秒更改,—添加
因为key:system.cpu.switches :上下文的数量进行切换,它返回一个整数值。为了监控效果,选择下一秒减上一秒的值作为监控
注释:可运行的线程数大于CPU的数量,那么OS最终会强行换出正在执行的线程,从而使其他线程能够使用CPU。这会引起上下文切换.
(3)已经有图形
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 的主机
配置—主机
3、在主机中添加模板
配置–主机—zabbix–server—模板—选择Template DB MYsql -----添加 -----更新
4、启用Zabbix server
5、监控到数据

你可能感兴趣的:(linux)