第十九章 Linux监控平台搭建

19.1 Linux监控平台介绍

19.2 zabbix监控介绍

19.3 安装zabbix(上)

•vim /etc/my.cnf //需要增加配置

character_set_server = utf8

19.4 安装zabbix(中)

vim /etc/zabbix/zabbix_server.conf

vim /etc/php.ini

Admin

zabbix

更改Admin密码和语言

19.5 忘记Admin密码如何做

19.6 安装zabbix(下)

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

 yum install -y zabbix-agent

systemctl start zabbix-agent.service

systemctl enable zabbix-agent.service

19.7 主动模式和被动模式

19.8 添加监控主机

19.9 添加自定义模板

1)选择一个模板,把需要的监控项复制到aming模板里

群组里面选择Template

2)添加自动发现项的方法

链接模板-->选择-->添加-->更新-->再取消链接

点取消链接,就可以把不用的监控项删除了

19.10 处理图形中的乱码

把上面的aming 模板应用到主机上

从windows上复制一个文字库,上传到服务器上,做软链接,然后刷新。

vim /usr/share/zabbix/include/defines.inc.php

添加新的图形

19.11 自动发现

检测不到,是因为间隔时间太长

为了更快的生效,重新启动server端和agent端

更改图像

选择模板

选择自动发现规则——》network interface discovery

选择Network traffic on

然后就可以更改线条和颜色了

更改完以后的效果

19.12 添加自定义监控项目

客户端脚本并赋权限

更改配置文件

定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh

vim /etc/zabbix/zabbix_agentd.conf 

重启agent服务

systemctl restart zabbix-agent.service

服务端验证

监控中心创建监控项

创建图形

创建触发器

19.13 配置邮件告警(上)

脚本路径

脚本内容

#!/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.qq.com'
    gport = 25

    try:
        # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
        msg = MIMEText(content,'plan','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)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码


#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

脚本后面跟的邮箱地址,测试邮件

19.14 配置邮件告警(下)

创建用户

增加用户权限

选择所以组

再查看用户的权限

添加动作

添加操作

操作--》新的里面的内容

添加恢复操作

19.15 测试告警

自定义触发器

课堂串讲

19.1 Linux监控平台介绍
19.2 zabbix监控介绍
19.3/19.4/19.6 安装zabbix
19.5 忘记Admin密码如何做

19.1 Linux监控平台介绍

监控对于网站来说是非常重要,即使是大公司由于监控做得不到位,最终会导致因为服务器的不够稳定,客户对其不够信任,而流失大量客户。
通常监控软件有下面几款,cactinagioszabbixsmokepingopen-falcon等等。
cacti、smokeping偏向于基础监控(网络设备),成图非常漂亮,更加适合在IDC机房使用。

其中nagios和zabbix流行度比较高。几年前还是使用nagios,而近几年zabbix越来越受到欢迎。主要是因为zabbix配置比nagios简单得多,其优势也比nagios多。

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

cacti、nagios、zabbix服务端监控中心,即支持web页面来监控网站,因此需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。

总之,安装zabbix时要先安装好MySQL,其中PHPhttpd自带安装上,后续以介绍zabbix为主。

19.2 zabbix监控介绍

zabbix采用的是C/S架构,其中客户端用来采集数据,在上报给服务端。zabbix基于C++开发,监控中心支持web界面配置和管理。理论上单server节点可以支持上万台客户端。但如果监控的项目太多了,可以使用代理zabbix-proxy来采集数据,再让他来上报给监控中心。其最新版本3.4,官方中文文档在 https://www.zabbix.com/manuals 方便学习配置zabbix

  • zabbix有服务5个组件
    • zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
    • 数据存储 存放数据,比如mysql
    • web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
    • zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
    • zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据并上报。分主动模式和被动模式

zabbix工作流程

使用web页面来添加监控主机到监控中心,然后再对其配置监控项目。被监控的服务器和监控中心通讯了,监控中心就会采集数据并存入到数据库中。监控中心就会对采集的数据值进行判断是否超多告警的规则,并进行告警。

19.3/19.4 安装zabbix

准备两台机器,一台服务端 一台客户端
服务端:kun05 192.168.80.104
客户端:kun03 192.168.80.102

配置服务端

由于epel中的zabbix版本比较久,因此我们自己去官网上下载好zabbix的仓库 并安装他们
官网下载地址 www.zabbix.com/download

找到对应的版本

根据官方的提示来复制下面的路径到服务端上

步骤

1.下载官方给出的epel源包并安装

1
2
[root@kun05 ~]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@kun05 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

/etc/yum.repos.d/中就会多了个仓库zabbix.repo 该仓库可以指定下载对应的zabbix版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@kun05 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.4/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

2.分别安装zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

1
[root@kun05 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

zabbix-agent zabbix客户端软件
zabbix-get zabbix服务端上工具 ,可以获得客户端上监控项目的数据
zabbix-server-mysql zabbix监控中心所需的对应MySQL数据(用于导入数据到自建的zabbix库中)
zabbix-web web界面
zabbix-web-mysql web界面和MySQL的相关的数据

服务端上才需要安装以上的包 客户端只要安装zabbix-agent即可,此过程是自带安装httpdphp

1
2
3
4
5
6
7
8
9
10
11
作为依赖被安装:
  httpd.x86_64 0:2.4.6-80.el7.centos.1                  httpd-tools.x86_64 0:2.4.6-80.el7.centos.1              
  iksemel.x86_64 0:1.4-6.el7                            libevent.x86_64 0:2.0.21-4.el7                          
  libzip.x86_64 0:0.10.1-8.el7                          mailcap.noarch 0:2.1.41-2.el7                           
  nettle.x86_64 0:2.7.1-8.el7                           php.x86_64 0:5.4.16-45.el7                              
  php-bcmath.x86_64 0:5.4.16-45.el7                     php-cli.x86_64 0:5.4.16-45.el7                          
  php-common.x86_64 0:5.4.16-45.el7                     php-gd.x86_64 0:5.4.16-45.el7                           
  php-ldap.x86_64 0:5.4.16-45.el7                       php-mbstring.x86_64 0:5.4.16-45.el7                     
  php-mysql.x86_64 0:5.4.16-45.el7                      php-pdo.x86_64 0:5.4.16-45.el7                          
  php-xml.x86_64 0:5.4.16-45.el7                        t1lib.x86_64 0:5.1.2-14.el7                             
  trousers.x86_64 0:0.3.14-2.el7                        unixODBC.x86_64 0:2.3.1-11.el7

3.安装MySQL

由于以前已经安装过这里就不详细说明安装过程
查看是否启动MySQL

1
2
3
4
[root@kun05 ~]# ps aux |grep mysql
root       904  0.0  0.1 115388  1704 ?        S    06:29   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data --pid-file=/data/kun05.pid
mysql     1110  0.2 45.0 1300780 454052 ?      Sl   06:29   0:06 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/kun05.err --pid-file=/data/kun05.pid --socket=/tmp/mysql.sock
root      1493  0.0  0.0 112676   980 pts/0    R+   07:13   0:00 grep --color=auto mysql

4.编辑MySQL的配置文件添加中文所要的字符集并重启服务

1
2
3
4
5
[root@kun05 ~]# vim /etc/my.cnf

character_set_server=utf8

[root@kun05 ~]# service mysqld restart

character_set_server=utf8指定MySQL的字符集为utf8 用于在web中正确显示中文

5.进入MySQL 创建zabbix所需要的库,用户

1
[root@kun05 ~]# mysql -uroot -p38003800

创建库需要指定字符集为utf8

1
mysql> create database zabbix character set utf8;
1
mysql> grant all on zabbix.* to'zabbix'@'127.0.0.1' identified by '38003800';

ip为用户zabbix的来源ip 但数据库的zabbix server不在同一台机器上时候,要填zabbix server的IP地址

6.导入zabbix-server-mysql的数据到zabbix库中

1
[root@kun05 ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/

解压create.sql.gz包

1
[root@kun05 zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz

导入数据

1
[root@kun05 zabbix-server-mysql-3.4.11]# mysql -uroot -p38003800 zabbix < create.sql

7.启动httpd服务

由于之前已经安装过Nginx,先关闭他

1
2
3
4
5
[root@kun05 ~]# systemctl stop nginx
[root@kun05 ~]# systemctl disable nginx

[root@kun05 ~]# systemctl start httpd
[root@kun05 ~]# systemctl enable httpd

8.更改zabbix server的配置文件

1
[root@kun05 zabbix]# vim /etc/zabbix/zabbix_server.conf

修改下面参数

1
DBHost=127.0.0.1   ##指定数据的IP地址

在DBUser下面定义密码

1
2
DBUser=zabbix
DBPassword=38003800

这些配置内容和添加的MySQL用户zabbi的信息要一致

9.启动zabbix server服务

1
2
[root@kun05 zabbix]# systemctl start zabbix-server
[root@kun05 zabbix]# systemctl enable zabbix-server

10.查看zabbix server是否监听端口

1
2
3
[root@kun05 zabbix]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2220/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      2220/zabbix_server

zabbix_server默认监听10051端口

当启动不了或者不监听端口可以查看日志 路径是/var/log/zabbix/zabbix_server.log

11.配置web界面

浏览器上输入192.168.80.104/zabbix

这里是PHP缺少了配置timezone

回去服务端找到/etc/php.ini并配置timezone

1
2
3
[root@kun05 zabbix]# vim /etc/php.ini

date.timezone =Asia/Shanghai

重启httpd服务

1
[root@kun05 zabbix]# systemctl restart httpd

再回去继续下一步

填好数据库相关的用户 库 密码等信息

填写zabbix server名字

添加成功

填写用户名和密码 默认用户名Admin 密码zabbix

更改为自己的密码和语言 选择 Administration — Users — Admin 用户 —Change passwordLangueage

修改成功

19.5 忘记zabbix Admin密码

由于zabbix server的用户的数据是存放在MySQL中 因此只要修改MySQL的中zabbix用户的密码即可

步骤

1.进入MySQL中的zabbix库中查看到users表

1
2
3
4
5
6
7
[root@kun05 zabbix]# mysql -uroot -p38003800

mysql> use zabbix;

mysql> desc users;

mysql> select * from users;

2.修改user表的Admin的密码

1
2
3
mysql> update users set passwd=md5('111111') where alias= 'Admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

passwd=md5('111111')使用md5加密 新密码为111111

19.6 安装zabbix

配置客户端

步骤

1.下载官方给出的epel源包并安装

1
2
[root@kun03 ~]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@kun03 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

2.安装zabbix-agent

1
[root@kun03 ~]# yum install -y zabbix-agent

3.修改zabbix agent的配置文件

1
[root@kun03 ~]# vim /etc/zabbix/zabbix_agentd.conf

修改下面参数

1
2
3
4
5
Server=192.168.80.104

ServerActive=192.168.80.104

Hostname=kun03

Server指定zabbix server的IP地址 ServerActive开启server agent主动模式 不填默认为被动模式 Hostname指定客户端的主机名 以便分辨

4.启动zabbix agent服务

1
2
[root@kun03 ~]# systemctl start zabbix-agent
[root@kun03 ~]# systemctl enable zabbix-agent

5.查看是否监听端口

1
2
3
[root@kun03 ~]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1480/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1480/zabbix_agentd

zabbix_agent默认是监听10050端口

19.7 主动模式和被动模式
19.8 添加监控主机
19.9 添加自定义模板
19.10 处理图形中的乱码
19.11 自动发现

19.7 主动模式和被动模式

这里主动或者被动是相对客户端来讲的
被动模式,客户端被动地接受连接,并把监控信息传递给服务端,服务端会主动连接客户端获取监控项目数据。
主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。

  • 通常下面两种情况使用主动模式更加合适
    • 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
    • 服务端有公网ip,客户端只有内网ip,但却能连外网(通过iptable的nat表实现),这种场景适合主动模式。

19.8 添加监控主机

选择配置
主机群组 客户端机器的组 一般先添加组再到组里添加主机

模版 预设的监控项目的集合

主机 就是要添加的客户端

图上的zabbix server是服务端安装的zabbix agent 我们在服务端并没有启动

步骤

1.添加主机群组

主机群组 —- 添加主机群组 —-添加组名 —- 添加

2.添加主机

主机 —- 创建主机 —- 主机名称可见名称 —- 选择群组 —- 添加agent的IP地址 —- 添加


主机名称可见名称填写的主机名要和zabbix_agent的配置文件Hostname一致 ip填写客户端的ip地址

添加成功

应用集 监控项目的集合,即把监控项目分在多个组里

监控项 所有的监控的项目

触发器 针对某个监控项目而设定的告警规则

图形 把历史数据做出图表显示

自动发现规则 自动发现客户端系统的网卡流量 文件系统 磁盘 分区使用情况等

web场景 监控具体的网站的信息 (网页的状态码错误告警等)

19.9 添加自定义模板

当添加一些需要监控特定监控项目的客户端时,为了方便管理和提升效率 都是使用自定义模版

步骤

1.添加自定义模版

模版 —- 创建模版 —- 添加 模版名字可见的名称 —- 选择template—- 添加

2.添加监控项目到自定义模版中

选择其他模版(这里用 Template OS Linux)中的某个项目 —- 复制 —- 选择template 的 test

test模版已经添加我们自己需要监控的项目

同理可以使触发器 图形 应用集 添加主机需要的项目 但只有自动发现是不能通过此方法来添加的

添加自动发现规制到自定义模版

步骤

1.添加链接模版

选择 test —- 链接模版 —- 选择链接的模版 —- 添加 —- 更新

2.取消模版链接

选择test —- 链接的模版 —- 取消链接 —- 更新

取消链接并清理会同时把模版中的监控项目一并清理

3.删除不用监控的项目

4.把自定义模板添加到主机上

主机 —- 选kun03 —- 模版 —- 链接指示器 —- 选test — 添加 —- 更新

19.10 处理图形中的乱码

我们发现自定义主机中图形出现了乱码,这是因为zabbix中的没有中文字库,因此我们可以让win上的中文字库拷贝到zabbix server的字库上即可

步骤

在zabbix server上

1.编辑定义字库的配置文件

1
[root@kun05 ~]# vim /usr/share/zabbix/include/defines.inc.php

找到 ZBX_FONTPATH

1
2
define('ZBX_FONTPATH',                          realpath('fonts')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME',           'graphfont'); // font file name

第一行是定义字库目录的路径 路径是相对路径 绝对路径是 /usr/share/zabbix/fonts/
第二行是定义字库的名字为graphfont

2.找到字库的路径

1
2
3
4
5
[root@kun05 ~]# cd /usr/share/zabbix/fonts/
[root@kun05 fonts]# ll graphfont.ttf
lrwxrwxrwx 1 root root 33 7月   7 07:01 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@kun05 fonts]# ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 38 7月   7 07:01 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf

发现graphfont是软连接文件 起真正的字库是在 /usr/share/fonts/dejavu/DejaVuSans.ttf
因此我们可以把win上的中文字库拷贝到/usr/share/zabbix/fonts/下并让默认字库graphfont软连接到中文字库

3.使用xftp拷贝字库

win的字库在C:\Windows\Fonts这里下载了一个msyh.ttf字库

4.把下载的字库改为默认字库名的软连接文件

1
2
3
4
5
6
7
8
[root@kun05 fonts]# ls
graphfont.ttf  msyh.ttf

[root@kun05 fonts]# mv graphfont.ttf graphfont.ttf.bak ##把用来的字库改名
[root@kun05 fonts]# ln -s msyh.ttf graphfont.ttf  ##改为默认字库名的软连接文件

[root@kun05 fonts]# ll graphfont.ttf
lrwxrwxrwx 1 root root 8 7月   8 08:02 graphfont.ttf -> msyh.ttf ##默认字库指向到中文字库

5.回去监控中心查看图形

添加自定义图形

图形 —- 创建图形 —- 名称 —- 添加监控项 —- 添加

添加自定义图形成功

19.11 自动发现

为了让自动发现的规制形成图形 我们可以把发现的时间缩短

步骤

1.更改数据更新时间

这里选择网卡的自动发现 —- 数据更新间隔 60s —- 更新

2.重启zabbix server服务和zabbix agent服务

在kun05上

1
2
[root@kun05 ~]# systemctl restart zabbix-server
`

在kun03上

1
[root@kun03 ~]# systemctl restart zabbix-agent

现在图线就会有自动发现的图线可以选择了 图线出现后可以把数据更新间隔改回600s,减少机器的压力

检测中 —- 图形 —- Network traffic on ens33

定义图形细节

因为我们的自定义的主机是链接自定义模版的 因此需要在自定义模版中修改

模版 —-选择test模版 —- 自动发现 —- Network interface discovery —- 图形原型

更改成功

19.12 添加自定义监控项目
19.13/19.14 配置邮件告警
19.15 测试告警
19.16 不发邮件的问题处理

19.12 添加自定义监控项目

自定义监控项目一般都是在版本里面设置的,但如果遇到业务上的需求,则要在客户端上写脚本来获得具体的数字并通过监控项目来形成图标。
这里以“监控某台web的80端口连接数,并出图”为例子

步骤

在kun03上

1.在客户端上编辑脚本

1
[root@kun03 ~]# vim /usr/local/sbin/estab.sh

写入下面代码

1
netstat -ant |grep ':80' |grep -c 'ESTABLISHED'

netstat -ant 查看所有tcp协议的网络连接情况 grep -c 统计行数

2.更改脚本权限

1
[root@kun03 ~]# chmod 755 /usr/local/sbin/estab.sh

3.编辑客户端的zabbix agent的配置文件

1
[root@kun03 ~]# vim /etc/zabbix/zabbix_agentd.conf

找到下面参数并修改

1
UnsafeUserParameters=1

UnsafeUserParameters=1 表示开启自定义脚本 0则关闭

1
UserParameter=estab.count[*],/usr/local/sbin/estab.sh

estab.count表示脚本的键值名字 [*]表示脚本需要的参数,多个用,分开 *表示没有参数

4.重启zabbix agent服务

1
[root@kun03 ~]# systemctl restart zabbix-agent

在kun05上

5.在服务端上使用zabbix get来测试是否有数据

1
2
[root@kun05 ~]# zabbix_get -s 192.168.80.102 -p 10050 -k 'estab.count'
0

zabbix_get是zabbix server命令行工具 -s 指定客户端IP地址 -p指定客户端端口 不写默认指定10050 -k指定键值

6.去监控中心来增加自定义监控项目

配置 —- 主机 —- 监控项 —- 创建监控项 —- 填写上名称键值 —- 添加

7.创建对应的图表

主机 —- 图形 —- 创建图形 —- 填上名称 —- 选择对应的监控项

8.创建对应的触发器

主机 —- 触发器 —- 创建触发器 —- 填上名称严重性 —- 添加表达式 —- 选择对应的监控项 —- 填上对应的功能N值 —- 添加

19.13/19.14 配置邮件告警

我们在zabbix server上写发邮件脚本 并在监控中心上设置,这里使用的是163邮箱来做发告警信息

步骤

1.登录163邮箱 并设置 POP3、IMAP、SMTP服务

2.到监控中心自定义告警

管理 —- 报警媒介类型 —- 创建媒体类型 —- 名称 —- 类型 脚本 —- 脚本名称 —- 参数 —- 添加


{ALERT.SENDTO} 接受邮件的地址
{ALERT.SUBJECT} 主题
{ALERT.MESSAGE} 邮件内容

3.编辑脚本

1
[root@kun05 ~]# vim /usr/lib/zabbix/alertscripts/mail.py

输入下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/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'
    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)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

修改邮箱和密码 内容在 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
其中/usr/lib/zabbix/alertscripts/是zabbix server指定告警脚本的存放路径

4.更改脚本权限

1
[root@kun05 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

测试

使用命令来试试mial.py是否发邮件

1
[root@kun05 ~]# python /usr/lib/zabbix/alertscripts/mail.py [email protected] "test" "aaaa"

5.在监控中心处创建发送告警邮件的用户

先创建组,在创建用户

管理 —- 用户群组 —- 创建用户群组 —- 别名 —- 权限 —- 读写 —- 选择 所有 —- 添加

管理 —- 用户 —- 创建用户 —- 别名 —- 群组 —- 密码 —- 报警媒介 —- 添加 收件人 —- 添加

6.设置动作

配置 —- 动作 —- 创建动作 —- 名称 —- 条件


维护状态 非在 维护 是指定在维护时候不再发送邮件

操作 —- 消息内容 —- 发送到用户群组 —- 发送到用户 —- 仅送到 —- 添加

消息内容

1
2
3
4
5
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}

恢复操作 —- 消息内容 —- 发送到用户群组 —- 发送到用户 —- 仅送到 —- 添加

设置成功

19.15 测试告警

这里我们创建自定义的触发器来触发告警来测试是否有发邮件 我们以1分钟内系统负载小于1就告警有例子

配置 —- 主机 —- 触发器 —- 创建触发器

等一会就发现了问题了动作并写完成,再去163邮箱看看

发送成功

在把1分钟内系统负载改为大于1

也发送成功

猜你喜欢

转载自blog.csdn.net/weixin_37817498/article/details/83241693
今日推荐