配置监控服务器

监控非常重要,一个公司的服务器架构可以不够成熟,但是监控不能没有。目前,比较流行的开源监控软件有Cacti、Nagios、Zabbix、smokeping、open-falcon等。

Cacti擅长监控网络流量,Cacti、smokeping偏向基础监控,成图专业,多用于IDC机房。Cacti、Nagios以及Zabbix都是C/S架构,需要安装一个服务端,然后还需要在被监控的机器上安装客户端,三个都需要LAMP的支持;

Nagios监控一目了然,它监控某个指标不会返回具体数据,而是返回一个状态,告诉我们正常或不正常。它不需要历史数据,所以它不需要数据库支持,当某个指标不正常,它就会直接发送告警邮件或者短信。

Zabbix和Cacti都需要数据库支持,用来存储数据。Zabbix可以很方便地画图,支持查询历史数据,另外,Zabbix可以很方便地自定义监控项目,可以定制化监控某个指标。

open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。


19.1 Zabbix介绍

Zabbix不仅适合中小型企业,也适合大型企业,它是C/S结构,分为服务端(server)和客户端(client),单个服务端节点可以支持上万台客户端。在硬件和网络足够强悍的情况下,单台服务器理论上可以支持5万个客户端。

Zabbix官网,最新版本是3.4,下载地址,其中也有安装步骤的介绍。


Zabbix组件

Zabbix整个体系架构中有5个主要的组成角色。

zabbix-server

zabbix-server是整个监控体系中最核心的组件,它负责接受客户端发送的报告信息,所有配置、统计数据及操作数据都由它组织。

数据存储

存储着收集到的所有信息。

web界面

web界面即GUI,这让Zabbix更简单易用。运行web界面需要有PHP环境支持。

zabbix-proxy

zabbix-proxy为可选组件,用于监控节点非常多的分布式环境中,它可以代理zabbix-server的功能,减轻zabbix-server的压力。

zabbix-agent

zabbix-agent为部署在各客户端上的组件,用于采集各监控项目的数据,并把采集的数据传输给zabbix-proxy或zabbix-server。


Zabbix架构

Zabbix的运行流程如下图:
配置监控服务器_第1张图片


19.2 部署Zabbix

大致了解了Zabbix的架构和工作流程之后,我们试着搭建一套Zabbix监控系统。

在一台机器上可以安装Zabbix所有的组件,这里我拿两台机器来做实验,其中IP为192.168.33.128作为Zabbix服务端,192.168.33.129作为客户端。

zabbix-server		192.168.33.128

zabbix-agent		192.168.33.129

安装Zabbix

  • 服务端安装Zabbix:
# cd /usr/local/src/

# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

# yum list |grep zabbix				#列出与zabbix相关可用的包

安装Zabbix,需要安装的包有zabbix-agent、zabbix-get、zabbix-server-mysql、zabbix-web、zabbix-web-mysql。各个包的作用如下:

zabbix-agent:客户端程序
zabbix-get:服务器上命令行获取客户端检测项目的工具
zabbix-server-mysql:zabbix-server MySQL版
zabbix-web:web界面
zabbix-web-mysql:web界面MySQL相关

  • yum安装上面所有包:
会连带安装httpd和PHP,如果mysql没安装,需要另外安装

# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

配置Nginx

默认httpd中Zabbix的配置文件是/etc/httpd/conf.d/zabbix.conf,该配置文件定义了Zabbix的web界面程序程序所在路径。如果是线上的机器,并且安装了nginx,我们可以让httpd监听8080端口,然后让nginx去代理httpd。

  • 修改httpd.conf使httpd监听8080端口:
# vim /etc/httpd/conf/httpd.conf
Listen 80				#改为 Listen 8080

# systemctl start httpd

# netstat -lntp |grep httpd
tcp6       0      0 :::8080                 :::*                    LISTEN      2099/httpd

# systemctl enable httpd				#开机启动httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
  • 然后创建nginx的虚拟主机配置文件:
# vim /usr/local/nginx/conf/vhost/zabbix.conf				#写入下面内容
server
{
    listen 80;
    server_name 192.168.33.128;				#把zabbix服务端的IP作为主机名

    location /
    {
        proxy_pass      http://192.168.33.128:8080/;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# /usr/local/nginx/sbin/nginx -t				#检查上面配置是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx -s reload				#重载配置

配置MySQL

Zabbix需要MySQL的支持,如果机器上还没有安装MySQL,可以根据之前讲过的内容安装。
接下来就是配置MySQL。

  • 编辑mysql配置文件:
# vim /etc/my.cnf				#在[mysql]模块下面增加下面内容
character_set_server = utf8

[root@localhost src]# /etc/init.d/mysqld start				#重启mysql服务
Starting MySQL SUCCESS! 

# mysql -uroot -S /tmp/mysql.sock -p123456				#进入mysql

mysql> create database zabbix character set utf8;				#创建zabbix库,字符集为UTF-8,不要忘记末尾分号
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'lzxlzx';				#创建zabbix用户并授权
Query OK, 0 rows affected (0.01 sec)

mysql> quit 
  • 导入zabbix相关的数据:
# cd /usr/share/doc/zabbix-server-mysql-3.4.11/

# gzip -d create.sql.gz 

# mysql -uroot -S /tmp/mysql.sock -p123456 zabbix < create.sql				#导入mysql
Warning: Using a password on the command line interface can be insecure.

# systemctl enable httpd				#开机启动httpd
  • 修改zabbix-server的配置文件后启动服务:
# vim /etc/zabbix/zabbix_server.conf				#增加下面内容
DBHost=127.0.0.1
DBPassword=lzxlzx

# systemctl start zabbix-server				#启动zabbix-server服务

# systemctl enable zabbix-server				#开机启动zabbix-server服务
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

# netstat -lntp |grep zabbix				#检查zabbix-server服务,但是没有,遇到错误

# ps aux |grep zabbix
root       2537  0.0  0.0 112720   968 pts/0    S+   15:45   0:00 grep --color=auto zabbix				#这里查看也没有zabbix-server服务

# cat /var/log/zabbix/zabbix_server.log				#查看zabbix-server日志
  2467:20180723:154243.227 using configuration file: /etc/zabbix/zabbix_server.conf
  2467:20180723:154243.227 cannot set resource limit: [13] Permission denied
  2467:20180723:154243.227 cannot disable core dump, exiting...				#有这样的报错信息,是权限问题

# getenforce				#查看selinux状态
Enforcing

# setenforce 0				#关闭selinux

# getenforce 
Permissive

# systemctl start zabbix-server				#再次启动zabbix-server服务

# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      3305/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      3305/zabbix_server				#服务启动成功

配置Web界面

在服务端配置完毕,下面在浏览器输入http://192.168.33.128/zabbix(IP是服务端的IP),会出现下面的界面:

配置监控服务器_第2张图片

点击右下角的Next step,会出现一个关于date.timeout的警告,如下图:

配置监控服务器_第3张图片

  • 编辑zabbix的httpd配置文件:
# vim /etc/httpd/conf.d/zabbix.conf				#增加下面内容
php_value date.timezone Asia/Shanghai				#设置时区

# systemctl restart httpd				#重启httpd服务

刷新浏览器,刚刚的问题已经解决:

配置监控服务器_第4张图片

继续点击右下角的Next step,出现MySQL相关配置页面:

配置监控服务器_第5张图片

继续点击Next step,如果这一步出现问题,可以将nginx服务关闭,将80端口改回给httpd服务(这里我遇到的问题是填完密码,下一步的时候,浏览器显示502 BAD GATEWAY)。

出现zabbix server details对话框:
配置监控服务器_第6张图片

这一步的目的是让我们填写zabbix server本机的相关信息,目的是监控它。由于没有配置zabbix-agent,所以直接跳过。

继续点击Next step,出现汇总页面:

配置监控服务器_第7张图片

再点击Next step,出现Congratulations页面:

配置监控服务器_第8张图片

说明安装完成,点击Finish完成安装,出现登录页:

配置监控服务器_第9张图片

默认账号是Admin,密码是zabbix,点击Sign in ,进入zabbix管理控制台:

配置监控服务器_第10张图片

登录进来后,第一件事就是更改Admin密码,这个初始密码大家都知道,很不安全。

AdministrationUsersAdmin

配置监控服务器_第11张图片

改完密码后,选择Chinese,然后再点击Update,刷新浏览器,出现中文页面:

配置监控服务器_第12张图片


Zabbix客户端部署

上面都是在服务端配置,已经完成,下面还需要配置客户端程序,在客户端上执行。

  • 安装zabiix-agent:
# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm  

# yum install -y zabbix-agent
  • 修改zabbix-agent的配置文件:
# vim /etc/zabbix/zabbix_agentd.conf				#修改下面配置
Server=192.168.33.128				#定义服务端的IP(被动模式)
ServerActive=192.168.33.128				#定义服务端的IP(主动模式)
Hostname=lzx				#自定义主机名,后面需要在web界面下设置同样的主机名

主动或被动是相对于客户端来讲的。如果是被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端;如果是主动模式,客户端会主动把监控数据汇报给服务端,服务端只需要接收即可。当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。

  • 修改完参数后,启动zabbix-agent服务:
# systemctl start zabbix-agent				#启动zabbix-agent服务

# systemctl enable zabbix-agent				#开机启动zabbix-agent服务
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1477/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1477/zabbix_agentd				#zabbix-agent监听10050端口

19.3 Zabbix配置和使用

客户端配置完成,接下来要到web界面的管理后台去配置Zabbix。


忘记Admin密码

Zabbix管理员用户默认为Admin,密码默认为zabbix,所以刚刚第一次进入管理后台的时候就应该修改默认密码。但是如果该密码忘记了,还可以按照下面的方法重置密码。

  • 在服务端进入mysql命令行,选择zabbix库:
# mysql -uroot -p123456 zabbix				#进入zabbix库
mysql> select database();
+------------+
| database() |
+------------+
| zabbix     |
+------------+
1 row in set (0.00 sec)

mysql> update zabbix.users set passwd=md5('lzxlzx') where alias='Admin';				#重置密码为lzxlzx
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

添加主机

添加主机即把被监控的主机加入到监控中心,这样就可以监控它的一些项目的了。

在添加主机之前,需要添加一个主机组,依次点击:配置主机群组创建主机群组设置组名,组名填写lzx-test,如下图:

配置监控服务器_第13张图片

添加完主机组后,才可以添加主机,依次点击配置主机创建主机,主机名称填写lzx,可见名称也是lzx,群组选择lzx-test,IP地址填写192.168.33.129,如下图:

配置监控服务器_第14张图片

点击添加按钮,主机被成功添加,然后在主机列表里会看到刚刚添加的主机lzx,状态为已启用,如下图:

配置监控服务器_第15张图片

上面图中出现了几个概念:应用集、监控项、触发器、图形、自动发现、Web监测。

监控项:要监控的项目,比如内存使用、CPU使用等
应用集:多个监控项的组合,比如CPU相关的应用集
触发器:针对某个监控项做的告警规则,比如CPU使用超过95%就会告警
图形:监控情况的变化,以图形展现
自动发现:zabbix特有机制,会自动去发现服务器上的监控项目
Web监测:可以去监控指定网站的某个URL访问是否正常


添加模板

依次点击配置模板,就可以看到zabbix自带的模板了,这些模板其实就是多个应用集、监控项、触发器、图形、聚合图形、自动发现、Web监测的组合。比如FTP模板,就是针对FTP服务设置的一个监控模板,里面的应用集、监控项、触发器等全部都是针对FTP服务的。

我们可以先自定义一个模板,然后在各个模板里面选需要的应用集或监控项,把它们复制到自定义模板里,这样就算添加了一个模板。这里我自定义一个名字为lzx-1的模板。

点击模板创建模板,模板名称写lzx-1,可见名称写lzx-1,群组这里选择Templates,点击添加,如下图:
配置监控服务器_第16张图片

此时,模板列表页最上面出现了我们刚刚创建的lzx-1模板,如下图:

配置监控服务器_第17张图片

接下来,选择Tempalte OS Linux模板,找到该模板点击监控项,在Available memoryChecksum of /etc/passwdCPU user timeProcessor load (1 min average per core)前面打勾,然后点击下面的复制按钮,之后目标类型选择模板,在lzx-1模板前面打勾,再点击下面的复制按钮,如下图:

配置监控服务器_第18张图片

点击配置模板,可以看到lzx-1模板的监控项里已经有了4项,就是刚刚添加的那4项。如下图:
配置监控服务器_第19张图片

Available memory:监控剩余内存大小
Checksum of /etc/passwd:监控/etc/passwd文件是否被修改
CPU user time:监控CPU的user使用率
Processor load (1 min average per core):监控1分钟每个核CPU的负载是多少

还可以在模板中设置触发器,即告警规则。点击lzx-1模板的触发器创建触发器,名称填{HSOT.NAME}1分钟负载(每核),其中{HOST.NAME}是zabbix的内置变量,就是主机名。严重性根据实际需求选择,从左至右级别越来越高,这里选择警告,表达式里面就是具体的告警规则,点击添加选择,群组选择Templates,主机选择lzx-1,在下面列出来的监控项里面选择Processor load (1 min average per core)。功能选择最新的T值>N,这里“T”可以指定为时间,也可以指定为次数,不设置默认就是时间,间隔留空(即为0),N设置为2,即表示当负载大于2时告警。如下图:

配置监控服务器_第20张图片

配置监控服务器_第21张图片

点击插入后回到触发器界面,其它选项保持默认即可,最后点击添加按钮,第一条触发器添加成功。如下图:

这里写图片描述

下面来添加图形,图形是查看指标历史数据或趋势必不可少的手段。点击图形创建图形,名称填写1分钟负载,其它都保持默认,监控项右侧点击添加,在弹出来的界面选择Processor load (1 min average per core),点击选择添加。如下图:

配置监控服务器_第22张图片

下面接着来添加自动发现,类似于监控项,我们继续从Tempalte OS Linux模板的自动发现里面,参考Mounted filesystem discoveryNetwork interface discovery两项内容的配置,创建一模一样的规则过来。

另外,还可以使用模板的导出和导入功能。具体方法:先把Tempalte OS Linux模板导出,然后对导出的模板(下载的XML文件)做处理(只保留上面两个自动发现规则),再导入为lzx-1 for discovery模板。如下图:

配置监控服务器_第23张图片


主机链接模板

监控的主机如果有很多,我们只需要配置模板就行,而不是每个主机都去配置一遍监控项、触发器、图形等,这样也太繁琐。相对于上面一步一步的操作,下面的操作更快更方便。

  • 首先,先自定义一个lzx-1模板,点击链接的模板

配置监控服务器_第24张图片

之后再点击选择,选中Template OS Linux之后再点击最下面的选择,点击添加更新,回到了模板列表页,但是lzx-1的应用集等都有了变化,有些选项并不是我想添加的,删除它们(在删除应用集之前需要先删除监控项),但是遇到了意外情况,如下图:

配置监控服务器_第25张图片

  • 提示无法删除,在回到lzx-1里面,点击链接的模板,可以看到取消链接取消链接并清理,点击取消链接之后再点击更新

配置监控服务器_第26张图片

可以看到,虽然取消了链接,但是应用集等还是存在的,这是再删除监控项就没问题了,如下图:

配置监控服务器_第27张图片

  • 对于应用集,删除后面没有数字的,其余保留:

配置监控服务器_第28张图片

  • 对于图形,删除下图中选中的,其余保留:

配置监控服务器_第29张图片

另外,触发器自动发现规则不做修改,因为这就是我们之前想要的。

  • 上面做完,接下来就是选择lzx主机链接lzx-1模板,与上面类似的步骤:

配置监控服务器_第30张图片

图形中的中文乱码

之前把Zabbix设置为中文,现在就出现了一个问题,图形中的中文被显示为小方块。依次点击监测中图形,群组选择lzx-test,主机选择lzx,图形选CPU load,如下图:

配置监控服务器_第31张图片

要解决这个问题,就要找一款合适的字体放到zabbix对应的目录下面。

  • 首先确定字体所在的目录,编辑zabbix web界面配置文件:
# vim /usr/share/zabbix/include/defines.inc.php				# server上执行,搜索ZBX_FONTPATH
define('ZBX_FONTPATH',         realpath('fonts')); // where to search for font (GD > 2.0.18)				#路径为相对路径,显示为fonts,绝对路径为/usr/share/zabbix/fonts
define('ZBX_GRAPH_FONT_NAME',       'graphfont'); // font file name				#字体文件为graphfont,绝对路径为/usr/share/zabbix/fonts/graphfont
  • 然后去Windows上找一个合适的字体,路径为C:\Windows\Fonts\,找到simfang.ttf(仿宋简体),复制到桌面上,利用lrzsz传到linux上:
# rz

# ls
anaconda-ks.cfg  simfang.ttf  zabbix-release-3.4-2.el7.noarch.rpm

# mv simfang.ttf /usr/share/zabbix/fonts/

# cd /usr/share/zabbix/fonts/

# ls
graphfont.ttf  simfang.ttf

# mv graphfont.ttf graphfont.ttf.bak

# mv simfang.ttf graphfont.ttf

刷新刚才的图形,已经能正常显示中文,如下图:

配置监控服务器_第32张图片


添加自定义监控项目

Zabbix的优势之一就是很方便地添加自定义监控项目,它虽然提供了丰富的模板,但依然不能满足各种各样的特殊需求。

假如我的需求是:监控某台Web服务器的80端口的并发连接数,并设置图形。

先分析该需求,有两步,第一步是要创建自定义监控项,第二步是要针对该监控项设置成图形。监控项目有一个核心元素就是数据源,有了数据源才可以创建监控项。

  • 首先在zabbix-agent端上编辑自定义脚本:
# vim /usr/local/sbin/estab.sh
#!/bin/bash
## 获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED				# netstat -an可查看系统TCP连接数,ESTABLISHED表示正在连接中的状态,另外80后面多个空格是为了精确,避免包含8080端口
  • 保存后,需要修改脚本权限(让zabbix用户也能执行):
# chmod 777 /usr/local/sbin/estab.sh 
  • 还需要编辑zabbix-agent的配置文件,定义监控项的key:
# vim /etc/zabbix/zabbix_agentd.conf				#增加下面两行
UnsafeUserParameters=1				#表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh				#自定义监控项的key为my.estab.count,后面的[*]里面写脚本参数,没有可以省略,脚本为/usr/local/sbin/estab.sh
  • 保存配置文件后重启zabbix-agent服务:
# systemctl restart zabbix-agent
  • 然后到服务端做个验证,查看刚刚配置是否正确,在服务端执行命令:
# zabbix_get -s 192.168.33.129 -p 10050 -k 'my.estab.count'
0				#因为129服务器上没有任何80端口的访问,所以为0,只要能够获取到客户端的数据,就说明刚刚配置没有问题
  • 再到Web界面配置一下:

依次点击配置主机,找到lzx主机,然后点击监控项创建监控项,名称写80端口并发连接数,键值写my.estab.conf,类型保持默认,及被动模式,如果选择Zabbix客户端(主动式)则为主动模式。其它项保持默认,点击最下面的添加按钮,如下图:

配置监控服务器_第33张图片

  • 检查刚刚是否添加成功,依次点击监测中最新数据,主机那里选择lzx,名称写80端口,然后点击应用,则会过滤出刚刚添加的80端口并发连接数监控项,如果没有,说明上一步有问题,如下图:

配置监控服务器_第34张图片

  • 接下来就是设置图形了,依次点击配置主机,再点击lzx图形创建图形,名称写80端口并发连接数,点击监控项那一栏的添加,在80端口并发连接数打勾,然后点击选择,再点击最下面的添加,如下图:

配置监控服务器_第35张图片

配置监控服务器_第36张图片


配置告警

监控系统必须要有配置响应的告警方式,通常为邮件、短信、微信。这里,我以163邮箱为例,配置邮件告警。

  • 首先,开启163邮箱的POP3/SMTP服务

登录163邮箱,点击设置POP3/SMTP/IMAP,开启两项服务,记住授权码(第一次设置的话还会给绑定手机发验证码),如下图:

配置监控服务器_第37张图片

配置监控服务器_第38张图片

  • 再到Web管理后台去配置告警

依次点击管理报警媒介类型创建媒体类型,名称写baojing,类型写脚本,脚本名字写mail.py。脚本参数这里点击添加,填写{ALERT.SENDTO};继续点添加,填写{ALERT.SUBJECT};继续点添加,填写ALERT.MESSAGE}。最后点击最下面的更新,如下图:

配置监控服务器_第39张图片

  • 通过zabbix-server端的配置文件确定告警邮件的脚本存放位置,再编写mail.py
# grep 'AlertScriptsPath=' /etc/zabbix/zabbix_server.conf				#查看脚本存放路径

# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

# vim /usr/lib/zabbix/alertscripts/mail.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.163.com'				#这里是QQ邮箱的话就是smtp.qq.com
    gport = 25

    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err


def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码
    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)				#填写自己的邮箱和授权码(上面的aaaaaaaaaa表示授权码)

if __name__ == "__main__":
    main()
# chmod 777 /usr/lib/zabbix/alertscripts/mail.py				#给予执行权限

这是一个python脚本,CentOS 7默认自带Python2.7。可以使用下面命令测试看能否发邮件:

# cd /usr/lib/zabbix/alertscripts/

# python mail.py [email protected] "lzx" "123123"				#看自己能否收到标题为lzx、内容为123123的邮件

这里可以看到我在网页上成功发送,而且也接收到,如下图:

配置监控服务器_第40张图片

这就说明上面的邮件脚本没有问题。

  • 接收告警需要有一个邮件账户,而邮件账户需要在zabbix的用户里设置。依次点击管理用户创建用户,设置用户属性,这里按照自己情况随意设置即可,如下图:

配置监控服务器_第41张图片

再设置报警媒介,点击添加,输入163邮箱账户,点击最下面添加,如下图:

配置监控服务器_第42张图片

再设置权限,这一项基本上不需要改动,保持默认即可,如下图:

配置监控服务器_第43张图片

  • 点击管理用户群组Zabbix administrators权限,选中所有群组给读写权限,否则邮件也无法收到,如下图:

配置监控服务器_第44张图片

再回到lzx用户里面查看权限,可以看到已经有了读写权限,如下图:
配置监控服务器_第45张图片

  • 设置完用户后,还需要一个动作来完成发邮件的功能。依次点击配置动作创建动作,首先在动作页中,名称填sendmail,还要添加触发条件,如下图:

配置监控服务器_第46张图片

  • 切换到操作页,只需要修改默认信息,内容如下:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}				#都是zabbix的内部变量

然后点击操作下面的新的。会出现操作细节,选择用户为lzx,仅发送到选择baojing,继续点击添加(不是最下面的添加),如下图:

配置监控服务器_第47张图片

  • 切换到恢复操作页面,默认信息改为上面同样内容,然后点击新的,出现操作细节,也要指定发送用户为lzx,仅发送到选择baojing,操作过程与上面类似,如下图:

配置监控服务器_第48张图片

完成上面两个操作之后,点击最下面的添加

  • 为了测试告警,需要为主机lzx新链接一个模板,依次点击配置主机,进入主机页面,点击模板,点击右侧选择,找到Template Module ICMP Ping打勾,点击选择添加,最后点击更新

配置监控服务器_第49张图片

  • 现在进行测试告警,在客户端上执行命令:
# iptables -I INPUT -p icmp -j DROP				#禁掉ICMP协议,这样服务端就无法ping通客户端

稍等一会,就收到了这样的告警邮件,如下图:

配置监控服务器_第50张图片

Web界面也有显示:

配置监控服务器_第51张图片

  • 再把iptables规则删除:
# iptables -D INPUT -p icmp -j DROP

同样会收到故障恢复的邮件,如下图:

配置监控服务器_第52张图片

Web界面也有显示:

配置监控服务器_第53张图片

至此,整个Zabbix监控的部署已经完成。


更多参考资料:

zabbix监控交换机(思科)

zabbix分布式部署

你可能感兴趣的:(#,Linux基础)