zabbix邮件告警, zabbix监控nginx

邮件告警

  1. 使用阿里云邮件推送
  • 登陆阿里云,进入云通信 - 邮件推送页面(没有开通业务可以免费开通,每天可发送200封邮件)

在这里插入图片描述

  • 添加发信域名(左边栏)- 新建域名 - 填写域名
    在这里插入图片描述

  • 点击配置 - 需要在你的域名里添加提示的记录
    在这里插入图片描述

  • 进入你的域名的管理页面进行相应配置

主机记录为空,填写@

在这里插入图片描述

  • 配置完成后,点击验证,验证完成后,定义发信地址(左边栏)- 新建发信地址

在这里插入图片描述

  • 选择验证成功的域名,新建帐号,发信类型先择触发邮件
    在这里插入图片描述

  • 设置SMTP密码 - 此密码将用于发件的脚本里
    在这里插入图片描述

在这里插入图片描述
页面下方有提示的SMTP服务地址和端口号
在这里插入图片描述

  1. zabbix服务器上新建脚本和测试脚本
[root@draft ~]# vi mail.py			#新建文件;内容如下:

#!/usr/bin/python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText
import sys

mail_user = 'admin@***.cn'		#设置成你的发信地址;
mail_pass = 'qJq69vroCgsflhh'				#设置成你的SMTP密码;

def send_mail(to_list,subject,content):
    me = "zabbix 监控告警平台"+"<"+mail_user+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list

    try:
        s = smtplib.SMTP("smtpdm.aliyun.com", 25)		#设置SMTP服务地址;
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

[root@draft ~]# chmod 755 mail.py 			#修改权限;
[root@draft ~]# ./mail.py ***@163.com "测试邮件" "`cat /etc/my.cnf`"     #测试发件脚本;填写收件地址;
  1. 正确放置脚脚本
  • 脚本需要放置在/usr/lib/zabbix/alertscripts下
[root@draft ~]# mv ./mail.py /usr/lib/zabbix/alertscripts/
[root@draft ~]# ls !$
ls /usr/lib/zabbix/alertscripts/
mail.py
  • 由/etc/zabbix/zabbix_server.conf文件里配置的路径
AlertScriptsPath=/usr/lib/zabbix/alertscripts
  1. zabbix web界面配置
  • 进入Administration - Media types - Create media type
    默认的配置没有使用
    在这里插入图片描述

  • 填写Name - Type - Script name(脚本的名字) - Script parameters - Update(保存)
    在这里插入图片描述

  • 进入Administration - Users(配置用户)(在原有Admin的基础上配置)
    使用发邮件功能的是管理员,而且管理员才有权限监察所有机器
    在这里插入图片描述
    在这里插入图片描述

  • 点击Media - Add
    Type - 选择上面添加的Media;
    Send to - 填写收告警邮件的邮箱;
    其他不变,当然也可以调整生效的时间和发送邮件的事件级别;
    Add
    在这里插入图片描述

Permissions页里看到这个User的权限,发送警告邮件需要Read-write权限;

在这里插入图片描述

  • 点击Configuration - Actions,配置Actions
    把默认的Actions关闭
    Create action
    在这里插入图片描述

填写Name
在这里插入图片描述

点击Operations(这里设置是发现问题的时候,发送邮件)
下面的Operations - 点击New
添加Send to Users (也可以选择发送给组)
点击Select
在这里插入图片描述
选择Send only to (上面添加的Media)
在这里插入图片描述
Conditions - 点击New - 点击Add
在这里插入图片描述
在这里插入图片描述
再点击Add
在这里插入图片描述
在这里插入图片描述

点击Recovery operations - 点击New - Add User - 设置Send only to - Add (跟Operations设置差不多)
这里设置是问题恢复会发送邮件;
在这里插入图片描述
最后点击Add, Actions建立完成
在这里插入图片描述
在这里插入图片描述

  1. 测试邮件告警
  • 点击Configuration - Hosts - 选择监控中的主机 - 点击Triggers
    在这里插入图片描述

  • Create Trigger
    定义名字
    Expression - Add - Insert - Add
    添加一个必然会报警的项目,这里是设置网卡进流量小于10M就报警;
    在这里插入图片描述

  • 等待系统报警,检测间隔大概是一分钟
    出现了一条报警,Actions已成功
    在这里插入图片描述

  • 把Trigger调整,问题恢复,会再次发送邮件
    在这里插入图片描述

在这里插入图片描述

zabbix 监控nginx

  • agent虚拟主机配置
[root@draft ~]# vi /etc/nginx/conf.d/default.conf 		#将以下语句放在虚拟主机配置文件的最后面;正在使用default.conf;

location /nginx_status 
{
        stub_status on;		#主要语句;
        access_log   off;
        allow 127.0.0.1;
        deny all;
    }

[root@draft ~]# service nginx start		#启动服务;
Redirecting to /bin/systemctl start nginx.service
[root@draft ~]# nginx -s reload		#重新加载;
[root@draft ~]# curl -x127.0.0.1:80 127.0.0.1/nginx_status		#检查虚拟主机配置,以下为运行结果;
Active connections: 2 
server accepts handled requests
 2 2 7 					#服务器接受,处理和总请求数;
Reading: 0 Writing: 1 Waiting: 1   #说明如下;
  • 返回信息含义
字段含义
Active Connections当前活动连接数,其中也包括了等待状态的连接
accepts接收到的连接数
handled已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
requests总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
Reading正在读取请求头信息的连接数
Writing正在发送响应报文的连接数
Waiting处于闲置状态,等待客户端发送请求的连接数
  • agent编写监控脚本
[root@draft ~]# vi /usr/local/sbin/ngx_status.sh		#写入以下内容;

#!/bin/bash
url="http://127.0.0.1/nginx_status" 	#定义两个变量,放便使用;
curl=/usr/bin/curl

# 检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l 
}
# 检测nginx性能
function active {
    $curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    $curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    $curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    $curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1

[root@draft ~]# chmod 755 !$
chmod 755 /usr/local/sbin/ngx_status.sh
[root@draft ~]# ll !$
ll /usr/local/sbin/ngx_status.sh
-rwxr-xr-x. 1 root root 735 11月 16 16:09 /usr/local/sbin/ngx_status.sh
  • 脚本的使用情况
[root@draft sbin]# ngx_status.sh ping		#这个值是使用pidof命令查出nginx的进程号,再统计行数;存在就是1, 进程都显示在一行里;也可用pgrep命令实现;
1
[root@draft sbin]# ngx_status.sh active  #脚本运行情况,脚本可以把指定参数的值打印出来(对应于curl 127.0.0.1/nginx_status)里的各个值;
20
[root@draft sbin]# ngx_status.sh reading
0
[root@draft sbin]# ngx_status.sh writing
1
[root@draft sbin]# ngx_status.sh waiting
22
[root@draft sbin]# ngx_status.sh accepts
238
[root@draft sbin]# ngx_status.sh handled
242
[root@draft sbin]# ngx_status.sh requests
1593
  • 将脚本指定给zabbix agent使用
[root@second mysql]# vi /etc/zabbix/zabbix_agentd.conf # 增加

UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1

[root@second mysql]# systemctl restart zabbix-agent
  • 服务端上测试脚本
[root@draft sbin]zabbix_get  -s 192.168.87.150 -k 'nginx.status[accepts]'
2
  • 配置zabbix-server web界面使用脚本监控zabbix-agent的nginx
    使用导入xml的办法在web界面设置nginx的监控项
    Configuration - Templates - Create Template
    在这里插入图片描述
    选取xml文件 - Import
    xml文件请自行下载
    https://pan.baidu.com/s/1T4_IrRixmcsEA91GhVhjkw
    在这里插入图片描述
    Templates列表里增加了nginx的监控项目

在这里插入图片描述

Configuration - Hosts - 选取agent - Templates - Select nginx的监控项 - Add - Update
完成了agent链接监控项目,即可看监控的结果
在这里插入图片描述
在这里插入图片描述
监控结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值