Zabbix-监控过程详解

#一、修改密码及中文版

作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkVTNhod-1585731121820)(https://upload-images.jianshu.io/upload_images/21294643-e195afc6a0af336f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

image.png

更改完毕记得点击下方更新

#二、创建主机及主机群组

  • 先定义一个主机群组:
    image.png

image.png

  • 然后就可以添加主机了:
    image.png

image.png

  • 设置完成后,点击添加。这个主机就出现在列表中了

#三、监控项(items)
###1. 首先创建三个应用集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRCzUQqH-1585731121821)(https://upload-images.jianshu.io/upload_images/21294643-ecc44713889fdd4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ika5yFwl-1585731121821)(https://upload-images.jianshu.io/upload_images/21294643-04148d4180728281.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

image.png

  • 略过创建另外两个应用集
    image.png

###2. 定义监控项:

image.png

image.png

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

下面监控的是cpu的每秒中断次数

in 每秒CPU的中断次数,包括时间中断
image.png

  • 关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.19.130 -p 10050 -k "system.cpu.intr"
1101429
  • 在我们的agent端,也可以使用命令来查看intr的速率变化:
    image.png
    zabbix会收集历史数据(所有的数据都成为过去,O(∩_∩)O哈!),以及还会收集每小时的平均数据作为趋势数据,每小时才收集一次,所以trends(趋势)暂用的资源很小,

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFvii8iY-1585731121823)(https://upload-images.jianshu.io/upload_images/21294643-9876e81bef1be4e4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

image.png

  • 设置完以后,点击更新,会自动跳转至下图页面:
    image.png

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

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

image.png

  • 那么,我们的数据在哪里呢?可以点击最新数据,把我们的none1节点添加至主机,应用一下,就可以看到下面的状态了:
    image.png

  • 可以看到,我们还有一个图形页面,点进去则可以看图形的分布:
    image.png

  • 事实上,我们关注的指标有很多种,我们一一添加进来即可。

#####2.2 定义一个带参数的带参数的监控项

刚刚我们定义的监控项是很简单的,指定一个key即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:
image.png
图中的[]就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个例子来说明:
if表示是接口名;<mode>表示是哪种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容可以通过ifconfig查看)

image.png

image.png

image.png

image.png

  • 同样的,我们也可以通过命令行来查看:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.19.130 -p 10050 -k "net.if.in[ens33,packets]"
36836
  • 我们来看看网页的显示情况:
    image.png

image.png

###3. 快速定义类似指标

  • 如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。
  • 就以我们刚刚定义的net.if.in[ens33,packets]为例,如果我们想要在定义一个out的进行如下操作即可:
    image.png

image.png

image.png

  • 如果我们要以字节为单位也要定义的话,进行同样的操作:
    image.png

  • 如果有需要的话也可以把byte再克隆成out。就不一一演示了~

  • 可以看一下,我们现在已经定义的指标:
    image.png

  • 我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
    image.png

###4. 删除监控项

  • 如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
  • 配置–>主机–>监控项–>选择一个不要的监控项
    image.png

#四、触发器(trigger)
###1. 简介

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

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

  1. 最近N分钟所得结果的平均值
  2. 最近N次所得结果的平均值

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

###2. 触发器表达式

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

{<server>:<key>.<function>(<parameter>)}<operator><constant>
  • 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次取值之和;

###3. 定义一个触发器

我们可以查看一下rate of packets(in)的值,并以其为标准确定我们的非正常的值:
image.png
图中我们可以看出,我们的最大值为7,最小值为4,平均值为4.59。这样的话,我们可以定义5以上的都是非正常的值。

  • 下面我们来定义一个触发器:
    image.png
    右上角创建触发器
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUNLOgI4-1585731121829)(https://upload-images.jianshu.io/upload_images/21294643-eff1b21ccf90f02f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    生成完毕后,我们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:
    image.png
  • 然后我们去看一下我们刚刚定义了触发器的那个监控项:
    image.png

我们可以看出,这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状态,看起来非常直观。
但是,现在即使超过了这根线,也仅仅会产生一个触发器事件而不会做其他任何事。因此,我们就需要去定义一个动作(action)。

#五、定义动作(action)
###1. 简介

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

第一,我们要事先定义一个媒介,第二,还要定义这个媒介上用户接收消息的端点(当然,在用户上,我们也称之为用户的媒介)。

  • 我们可以去看一下系统内建的媒介类型:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Add7SDZy-1585731121830)(https://upload-images.jianshu.io/upload_images/21294643-146faa7d082213ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

这些是大的媒介类型,里面还有更多的细分,我们以Email为例:
image.png
同样的,同一个类型我们也可以定义多个,还是以Email为例,我们可以定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。

###2. 定义一个媒介(media)

我们还是以Email为例。来简单的定义一个媒介:
image.png

  • 媒介定义好了,那么我们怎么才能够然后用户接收到邮件呢?比如让我们的Admin用户接收邮件
    进入 管理 —> 用户 —> Admin —> 报警媒介
    我们来添加一条进来:
    image.png
    添加过后是这样的:
    image.png
    然后我们更新就可以了。
    一个用户可以添加多个接收的媒介类型。

###3. 定义一个动作(action)

动作是在某些特定条件下触发的,比如,某个触发器被触发了,就会触发我们的动作。

  • 我们基于redis来定义一个动作。首先,我们在agent端使用yum安装一下redis
[root@zabbix-client ~]# yum -y install epel-release; yum -y install redis

修改一下配置文件:

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

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

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

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

  • 创建一个redis应用集:
    image.png

#####3.1 定义监控项

image.png

image.png
该监控项已成功添加。

  • 我们可以去查看一下他的值:
    image.png

#####3.2 定义触发器

定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:

  • 配置 —> 主机 —> zabbix-client —> 触发器(trigger)—> 创建触发器
    image.png

  • 该触发器已成功添加。我们去查看一下
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LvPsjmfl-1585731121831)(https://upload-images.jianshu.io/upload_images/21294643-fbfd54c15ecef504.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 我们来手动关闭redis服务来检测一下:

[root@zabbix-client ~]# systemctl stop redis

image.png

  • 可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:
[root@zabbix-client ~]# systemctl start redis

image.png

#####3.3 定义动作(action)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rni74SqU-1585731121832)(https://upload-images.jianshu.io/upload_images/21294643-7994e10282815b77.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xBFK2UL-1585731121832)(https://upload-images.jianshu.io/upload_images/21294643-9f1bdc3b71d5f7b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
image.png
image.png

  • 我们可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:
[root@zabbix-client ~]# vim /etc/sudoers
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL     #添加此行

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

[root@zabbix-client ~]# systemctl restart zabbix-agent
  • 我们已经添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:
    image.png
    image.png
  • 添加完成以后,我们可以看一下:
    image.png
  • 操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:
    image.png
  • 添加完成会自动跳转至如下页面:
    image.png
  • 现在我们可以手动停止服务来进行测试:
[root@zabbix-client ~]# systemctl stop redis
  • 然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bByvQ21x-1585731121834)(https://upload-images.jianshu.io/upload_images/21294643-87df2cfbe9740b3c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    也可以去agent端查看端口是否开启:
[root@zabbix-client ~]# netstat -lntp|grep redis
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      2744/redis-server 0 

#查看邮件是否发送成功
[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 [email protected]  Tue Mar 24 17:16  20/867   "Resolved: redis service down"
&

可以看出端口正常开启,我们的动作触发已经完成。
补充:我们也可以使用脚本来发送警报,我们的脚本存放路径在配置文件中可以找到,定义为:AlterScriptsPath=/usr/lib/zabbix/alertscripts

  • 然后我们将这个动作关闭掉为后面的邮件报警做准备。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHHhUse8-1585731121834)(https://upload-images.jianshu.io/upload_images/21294643-e43433bbbafcc61f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
发布了92 篇原创文章 · 获赞 0 · 访问量 1425

猜你喜欢

转载自blog.csdn.net/Forgetfanhua/article/details/105249849