一、监控存在的缘由php
- 站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大
二、常见开源监控软件python
- cacti、nagios、zabbix、smokeping、open-falcon等等,其中nagios、zabbix流行度很是高;
- cacti、smokeping偏向于基础监控,成图很是漂亮,适合监控网络设备 cacti监控网络的设备;
- cacti、nagios、zabbix服务端监控中心,须要php环境支持(用Apache的php,用nginx的php均可以),其中zabbix和cacti都须要mysql做为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而能够成图
三、目前业界都流行用zabbix。mysql
- zabbix配置简单,优点明显,早起使用nagios的企业,慢慢的转向使用zabbix;
- nagios,须要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比,nagios 更注重的是某一个监控的状态,不关注历史;
- zabbix,则是把每一次监控的数值反馈出来,数值存到数据库里面,方便后期数据图去分析监控整个状态;
- nagios不须要mysql的支持,不能成图,若须要画图,得安装插件之后才支持web界面;
- ccti 也须要mysql的支持,也能够成图,能够记录历史数据
- zabbix 在web界面下管理得很是完全,能够增长监控节点,报警预知等等。
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
- open-falcon软件适合大企业使用,小企业能够去研究它的思想。
- 监控软件比较新的: prometheus grafana
一、zabbix简介linux
- C/S架构,有一个服务端,去客户端抓数据。在客户端必需要有一个服务启动运行才能够抓取数据;数据能够主动的上报服务端,也可让服务端去链接客户端获取(经过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),
- zabbix软件基于C++开发,监控中心须要一个PHP的web环境,由于要开启一个web界面配置和管理 单台server节点(即一台server),理论上 能够支持上万台客户端
二、zabbix瓶颈:ios
- 在于采集数据的量,虽然支持上万台,但监控的项目过多,仍是会致使zabbix效率下降;因此,当服务器大到必定规模的时候,就须要对zabbix进行优化;
- 解决方法:能够增长一些代理点,这些代理点充当server,替代server去采集数据,最终获得分析结果再汇报给主服务端server;
三、zabbix架构里,包括了5个组件:nginx
- zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操做数据
- 数据存储 存放数据,好比mysql
- web界面 也叫web UI,在web界面下操做配置是zabbix简单易用的主要缘由(若是没有web界面,就没法在浏览器上配置它)
- zabbix-proxy 可选组件,它能够代替zabbix-server的功能,减轻server的压力(当机器量不少的时候,可使用zabbix-proxy)
- 有时候,服务器分布在多个机房里,每一个机房的服务器之间都是一个单独的内网,这时候就能够在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器
- zabbix-agent 客户端软件(每一台客户端都须要安装agent),负责采集各个监控服务或项目的数据,并上报。
ying01安装web
下载官方提供的repo源sql
[root@ying01 ~]# rpm -i https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm 警告:/var/tmp/rpm-tmp.4JVpyA: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY [root@ying01 ~]# ls /etc/yum.repos.d/zabbix.repo //查看下载的repo源 /etc/yum.repos.d/zabbix.repo
用yum安装zabbix相关的包数据库
[root@ying01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
安装包释义:vim
- zabbix-agent //客户端软件
- zabbix-get //服务端用的一个工具,这个工具能够经过命令行的形式,得到客户端某些监控项目的数据
- zabbix-server-mysql //这个是服务端跟mysql打交道相关的组件
- zabbix-web //webUI ,web界面
- zabbix-web-mysql //web和mysql相关组件
数据库设置
zabbix 是基于php环境的,也就是说用的是php 的代码编写的web界面,也就说这个zabbix至关于一个站点 须要安装mysql;
在mysql配置文件添加如下语句;
[root@ying01 ~]# vim /etc/my.cnf character_set_server = utf8 //目的支持zabbix的web界面显示中文
重启mysql,进入mysql;
[root@ying01 ~]# mysql -uroot -pyinglinux //进入mysql mysql> create database zabbix character set utf8; //建立zabbix数据库,并设置utf8 Query OK, 1 row affected (0.00 sec) mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'ying-zabbix'; Query OK, 0 rows affected (0.00 sec) //建立用户,以及登陆密码 mysql> quit Bye
建立的用户是须要让web(php)代码链接mysql的,监控中心zabbix mysql服务,启动的前提就是要链接mysql;
客户端采集了数据,须要把这些数据传递给服务端,那么服务端怎么把这些数据写入到MySQL去,这时就涉及到了mysql 的用户,涉及到了mysql 的数据库;用哪个用户,去写入那一个库。
给新建的zabbix库,导入原始的数据;
[root@ying01 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ [root@ying01 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@ying01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz //解压包 [root@ying01 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@ying01 zabbix-server-mysql-3.2.11]# mysql -uroot -pyinglinux zabbix < create.sql //导入zabbix库 Warning: Using a password on the command line interface can be insecure. [root@ying01 zabbix-server-mysql-3.2.11]# cd
启动zabbix-server前,须要排查80端口是否是被占用,由于80端口须要给httpd用;
[root@ying01 ~]# systemctl start zabbix-server [root@ying01 ~]# ps aux |grep zabbix //zabbix没有彻底启动 zabbix 2573 0.0 0.1 254628 3496 ? S 13:54 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 2581 0.0 0.0 112720 984 pts/0 S+ 13:54 0:00 grep --color=auto zabbix [root@ying01 ~]# ps aux |grep nginx //nginx占用80端口 root 988 0.0 0.0 45832 1272 ? Ss 11:44 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 989 0.0 0.2 48184 3900 ? S 11:44 0:00 nginx: worker process nobody 992 0.0 0.2 48184 3900 ? S 11:44 0:00 nginx: worker process root 2585 0.0 0.0 112724 980 pts/0 S+ 13:55 0:00 grep --color=auto nginx [root@ying01 ~]# /etc/init.d/nginx stop //关闭ngnix服务 Stopping nginx (via systemctl): [ 肯定 ] [root@ying01 ~]# !ps ps aux |grep nginx root 2610 0.0 0.0 112720 984 pts/0 S+ 13:55 0:00 grep --color=auto nginx
在zabbix_server配置文件中,按下面设置
[root@ying01 ~]# vim /etc/zabbix/zabbix_server.conf DBHost=127.0.0.1 //添加的 DBName=zabbix //配置文件中的参照位置 DBUser=zabbix //配置文件中的参照位置 DBPassword=ying-zabbix //添加的
注意:
- mysql和zabbix装在同一台机器上,这里的 DBHost能够写localhost或者127.0.0.1;
- 若是是在生产环境上,有时候为了提高zabbix的性能,可能会把MySQL装在其余机器上,这是的DBHost,就须要写上mysql的ip
重启zabbix-server服务,并查看端口100051,说明zabbix-server彻底启动了
[root@ying01 ~]# systemctl restart zabbix-server [root@ying01 ~]# ps aux |grep zabbix //查看进程,此处省略 [root@ying01 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 586/rpcbind tcp 0 0 0.0.0.0:37584 0.0.0.0:* LISTEN 844/rpc.statd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 845/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 661/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 801/master tcp 0 0 0.0.0.0:42272 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 3009/zabbix_server tcp6 0 0 :::42925 :::* LISTEN - tcp6 0 0 :::111 :::* LISTEN 586/rpcbind tcp6 0 0 :::80 :::* LISTEN 2652/httpd tcp6 0 0 :::20048 :::* LISTEN 845/rpc.mountd tcp6 0 0 :::39733 :::* LISTEN 844/rpc.statd tcp6 0 0 :::22 :::* LISTEN 661/sshd tcp6 0 0 ::1:25 :::* LISTEN 801/master tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::10051 :::* LISTEN 3009/zabbix_server tcp6 0 0 :::3306 :::* LISTEN 2084/mysqld
web测试:
在浏览器输入:192.168.112.136/zabbix/,出现zabbix监控主页
进入下一步,发现页面有,php的timezone时区,状态为 fail
进入php的配置文件;给它定义时区
[root@ying01 ~]# vim /etc/php.ini [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = Asia/Shanghai //定义时区为 上海
重启httpd服务(php是httpd的一个模块存在)
[root@ying01 ~]# systemctl restart httpd
此时刷新后,状态显示,所有为OK
点击下一步,进入简单设置,按下图设置;
点击下一步,填写端口10051,name自定义
下一步,你设置的信息会所有显示出来;
点击下一步,出现设置成功页面;
在菜单栏点击 Administration ,而后选择 Users;
进入新页面,设置密码,并选择中文;
退出登陆,输入新密码登陆;
刷新浏览器,此时显示为中文;
客户机 ying02 :
一样须要在客户机安装repo源,只是只须要yum安装zabbix-agent
[root@ying02 ~]# rpm -i https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm 警告:/var/tmp/rpm-tmp.4JVpyA: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY [root@ying02 ~]# cat /etc/yum.repos.d/ cat: /etc/yum.repos.d/: 是一个目录 [root@ying02 ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo [root@ying02 ~]# [root@ying02 ~]# yum install -y zabbix-agent
编辑zabbix_agentd配置文件;
[root@ying02 ~]# vim /etc/zabbix/zabbix_agentd.conf Server=127.0.0.1 改成 Server=192.168.112.136 //定义服务端的ip(被动模式) ServerActive=127.0.0.1 改成 ServerActive=192.168.112.136 //不填写服务端的IP,那么就只能使用被动模式; Hostname=Zabbix server 改成 Hostname=ying02 //自定义主机名
启动zabbix_agentd服务,并查看其端口为10050
[root@ying02 ~]# systemctl start zabbix-agent [root@ying02 ~]# ps aux |grep zabbix zabbix 3117 0.0 0.0 80776 1280 ? S 15:36 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 3118 0.0 0.0 80776 1368 ? S 15:36 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 3119 0.0 0.0 80776 1844 ? S 15:36 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 3120 0.0 0.0 80776 1844 ? S 15:36 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 3121 0.0 0.0 80776 1844 ? S 15:36 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 3122 0.0 0.1 80908 2228 ? S 15:36 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 3128 0.0 0.0 112720 984 pts/0 R+ 15:36 0:00 grep --color=auto zabbix [root@ying02 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 568/rpcbind tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 936/nginx: master p tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 835/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1043/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3117/zabbix_agentd tcp6 0 0 :::111 :::* LISTEN 568/rpcbind tcp6 0 0 :::22 :::* LISTEN 835/sshd tcp6 0 0 ::1:25 :::* LISTEN 1043/master tcp6 0 0 :::10050 :::* LISTEN 3117/zabbix_agentd [root@ying02 ~]# systemctl enable zabbix-agent //设置开机启动 Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
在mysql下,进入zabbix库,在user表中的passwd为其密码;
update users set passwd=md5('www1234') where alias='Admin' 此命令为 更新密码;
[root@ying01 ~]# mysql -uroot -pyinglinux mysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; //查看库下的表,里面有users表 127 rows in set (0.00 sec) mysql> desc users; //显示user表的项目,里面有passwd +----------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+---------------------+------+-----+---------+-------+ | userid | bigint(20) unsigned | NO | PRI | NULL | | | alias | varchar(100) | NO | UNI | | | | name | varchar(100) | NO | | | | | surname | varchar(100) | NO | | | | | passwd | char(32) | NO | | | | | url | varchar(255) | NO | | | | | autologin | int(11) | NO | | 0 | | | autologout | int(11) | NO | | 900 | | | lang | varchar(5) | NO | | en_GB | | | refresh | int(11) | NO | | 30 | | | type | int(11) | NO | | 1 | | | theme | varchar(128) | NO | | default | | | attempt_failed | int(11) | NO | | 0 | | | attempt_ip | varchar(39) | NO | | | | | attempt_clock | int(11) | NO | | 0 | | | rows_per_page | int(11) | NO | | 50 | | +----------------+---------------------+------+-----+---------+-------+ 16 rows in set (0.05 sec) mysql> update users set passwd=md5('www1234') where alias='Admin'; //更新密码,括号内,为新密码 Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from users; +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+ | userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+ | 1 | Admin | Zabbix | Administrator | 566a1fc42bc3fa17a3920221d2b24d34 | | 1 | 0 | zh_CN | 30 | 3 | default | 0 | 192.168.112.1 | 1532414568 | 50 | | 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 900 | en_GB | 30 | 1 | default | 0 | | 0 | 50 | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+ 2 rows in set (0.00 sec) mysql> quit Bye
- 主动或者被动是相对客户端来说的
- 被动模式,服务端会主动链接客户端获取监控项目数据,客户端被动地接受链接,并把监控信息传递给服务端,服务端请求之后,客户端接受到请求之后,才把相应的数据汇报给服务中心
- 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收便可
- 定义完策略以后,到达定义的时间之后,就会主动汇报数据给服务中心,好比系统的负载,网络的网卡流量等
- 当客户端数量很是多时,建议使用主动模式,这样能够下降服务端的压力。
- 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
在菜单栏 点设置——主机群设置 ,设置群名 ying-test
选择 设置——主机——建立主机,群组选择以前刚设置好的ying-test
选择 设置——主机——建立模板,名字自定义;
点击 连接的模板 按图选择好模板;
点 主机——ying02——模板,选择连接模板 ying
查看图形的时候,点击预览,发现出现整齐的方块,说明字库有问题;
[root@ying01 ~]# vim /usr/share/zabbix/include/defines.inc.php define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18) define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
- ZBX_FONTPATH:定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts;
- ZBX_GRAPH_FONT_NAME:所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont
打开字体目录查看;
[root@ying01 ~]# ls /usr/share/zabbix/fonts/ graphfont.ttf [root@ying01 ~]# ls -l /usr/share/zabbix/fonts/ //软链接指向其余目录 总用量 0 lrwxrwxrwx 1 root root 33 7月 24 17:25 graphfont.ttf -> /etc/alternatives/zabbix-web-font [root@ying01 ~]# ls -l /etc/alternatives/zabbix-web-font //继续指向其余文件 lrwxrwxrwx 1 root root 38 7月 24 17:26 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf [root@ying01 ~]# ls -l /usr/share/fonts/dejavu/DejaVuSans.ttf //此时他就是一个字体 -rw-r--r-- 1 root root 720012 2月 24 2011 /usr/share/fonts/dejavu/DejaVuSans.ttf
找到这个字体DejaVuSans.ttf,那么咱们再windows字库找个支持中文的字体,好比simsun
[root@ying01 ~]# ls /root/simsun.ttc //我用xfp工具传到root下 [root@ying01 ~]# mv simsun.ttc /usr/share/zabbix/fonts/ //移到zabbix字体目录下 [root@ying01 ~]# cd /usr/share/zabbix/fonts/ [root@ying01 fonts]# mv graphfont.ttf graphfont.ttf.bak //把graphfont.ttf备份 [root@ying01 fonts]# ln -s simsun.ttc graphfont.ttf //作一个软链接 [root@ying01 fonts]# ls -l /usr/share/zabbix/fonts/ 总用量 17788 lrwxrwxrwx 1 root root 10 7月 24 23:22 graphfont.ttf -> simsun.ttc lrwxrwxrwx 1 root root 33 7月 24 13:15 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font -rw-r--r-- 1 root root 18214472 7月 24 23:17 simsun.ttc [root@ying01 fonts]# systemctl restart zabbix-server 重启服务
改完配置后,刷新浏览器,能够看到方块消失;
在主机ying02 —— 自动发现规则,进入页面
按图进入;
设置更新时间;
监控一天的分布图;
需求:监控某台web的80端口链接数,并出图
两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示
对于第一步,须要到客户端ying02 定义脚本
vim /usr/local/sbin/estab.sh #!/bin/bash ##获取80端口并发链接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
给予755权限,否则zabbix执行不了这个脚本;
[root@ying02 ~]# chmod 755 /usr/local/sbin/estab.sh
客户端 ying02上编辑配置文件 ,把增长如下内容:
[root@ying02 ~]# vim /etc/zabbix/zabbix_agentd.conf # UnsafeUserParameters=0 //默认 UnsafeUserParameters=1 //表示使用自定义脚本 # UserParameter= //默认的 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,若是没有参数则能够省略,脚本为/usr/local/sbin/estab.sh
进入web界面:
建立监控项:按下图配置
建立相应的图形:按下图配置
建立相应的触发器:按下图配置
如今查看图形,右下角绿色的线条;
使用163或者QQ邮箱发告警邮件 首先登陆你的163邮箱,设置开启POP三、IMAP、SMTP服务 开启并记录受权码 而后到监控中心设置邮件告警 “管理”,“报警媒介类型”,“建立媒体类型” {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
[root@ying01 ~]# vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@ying01 ~]# ls /usr/lib/zabbix/alertscripts [root@ying01 ~]# cd /usr/lib/zabbix/alertscripts [root@ying01 alertscripts]# vim 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.qq.com' gport = 25 sys.setdefaultencoding('utf8') import getopt import smtplib from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart #!/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 #!/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.126.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] ##定义邮箱的帐号和密码,你须要修改为你本身的帐号和密码(请不要把真实的用户名和密码放到网上公开,不然你会死的很惨) sendqqmail('txwd188@126.com','省略','txwd188@126.com',to,subject,content) if __name__ == "__main__": main()
给予755权限,不然不会执行此脚本;
[root@ying01 alertscripts]# chmod 755 mail.py
测试给邮箱发邮件,进行测试;
[root@ying01 alertscripts]# python mail.py txwd188@126.com "0000000" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "111" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "qq" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "xyz" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "212" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "999" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "wwq" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "cda" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com "12345" "OK OK OK"
虽然出现这种诡异现象,可是次日,从新测试,结果都能发送;
进入web页面,进行设置
一、管理 —— 报警媒介类型 —— 建立媒体类型,而后按下图设置
二、管理 —— 用户 —— ying ,按下图选择群组
三、点击 报警媒介 ,点击 添加;此时默认为baojing,写入邮箱;
四、管理 —— 用户组 —— zabbix administrors
五、点击 权限,选中 读写,点击选择,把全部内容全选;
六、回到用户,此时用户的权限 已经为读写权限;
七、点击 报警媒介 ,此时若是想再增长邮箱,能够点击添加;
八、配置 动做,按下图 填写;
配置-->动做-->建立动做
- 动做名称:中英文均可以,这里叫 发邮件
- 条件:维护状态 非在 维护,就表示 维护状态机器不进行发邮件
- 新的触发条件,当触发器示警度(也就是信息,警告,通常严重...)
- 大于等于未分类(未分类 表示 全部状态,都会发信息)
配置-->动做-->操做
- HOST:{HOST.NAME} {HOST.IP} //(定义主机名)
- TIME:{EVENT.DATE} {EVENT.TIME} //(定义事件发生时间)
- LEVEL:{TRIGGER.SEVERITY} //(定义示警度)
- NAME:{TRIGGER.NAME} //(定义哪个触发器发出的报警)
- messages:{ITEM.NAME}:{ITEM.VALUE} // (发出告警会出现什么状态码)
- ID:{EVENT.ID} //(发生事件的id)
配置-->动做-->恢复操做
- HOST:{HOST.NAME} {HOST.IP}
- TIME:{EVENT.DATE} {EVENT.TIME}
- LEVEL:{TRIGGER.SEVERITY}
- NAME:{TRIGGER.NAME}
- messages:{ITEM.NAME}:{ITEM.VALUE}
- ID:{EVENT.ID}
九、设置恢复操做。即问题解决后,也给指定邮箱发邮件;
十、在web端已经配置好,发邮件的一切配置;
开始试验:
一、想产生动做,必需要有信号;所以新建一个触发器;
二、点击仪表盘,最近20项内容,处查看,已经有报警,并且已经执行了动做,即发邮件
三、打开邮箱,此时可以看出此邮件,刚刚发送;
四、那把触发器改大于1,此时报警接触,在菜单栏 问题 查看;发现恢复操做 的动做,也完成了;即回复邮件;
五、此时再查看邮箱,已经收到 邮件 OK;