Zabbix5通过脚本自定义Nginx监控

1、客户端配置

1.1、nginx开启nginx status

使用 zabbix 监控 nginx,首先 nginx 需要配置 ngx_status,nginx.conf加入以下配置,并重启Nginx或reload

location /ngx_status

    {

        stub_status on;

        access_log off;

        #allow 127.0.0.1;

        #deny all;

    }

nginx status 信息

[fieldyang@www nginx]$ curl http://127.0.0.1:1080/ngx_status

Active connections: 7

server accepts handled requests

 7493 7493 7511

Reading: 0 Writing: 6 Waiting: 1

说明

active connections – 活跃的连接数量

server accepts handled requests — 总共处理了7493 个连接 , 成功创建7493 次握手, 总共处理了7511个请求

reading — 读取客户端的连接数.

writing — 响应数据到客户端的数量

waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

1.2、zabbix 客户端配置

以上为 nginx 性能计数,除了监控以上数据,还需要监控 nginx 进程状态,并且配置触发器!

1.2.1、编写客户端脚本 ngx_status.sh

如脚本无法使用,请检查对应路径和相关变量

[fieldyang@www scripts]$ pwd

/usr/lib/zabbix/scripts

[fieldyang@www scripts]$ cat >ngx_status.sh

#!/bin/bash

# 功能:zabbix 监控 nginx 性能、进程状态、返回码统计

# 说明:需要配置在被监控端,否则 ping 检测将会得到不符合预期的结果

HOST="127.0.0.1"

PORT="1080"

lastmin=`date +"%Y:%H:%M" -d "1 min ago"`

code=$2

# 检测 nginx 进程是否存在

function ping {

/sbin/pidof nginx | wc -l

}

# 检测 nginx 性能

function active {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'

}

function reading {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'

}

function writing {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'

}

function waiting {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'

}

function accepts {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'

}

function handled {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'

}

function requests {

curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'

}

function status_sum {

sum=`grep " ${code}" /var/log/nginx/access.log |grep ${lastmin}|awk '{sum+=1}END{ print sum}'`

if [ "$sum" = "" ]

then

       echo 0

else

       echo $sum

fi

}

# 执行 function

if [ $# -gt 1 ]

then

        status_sum

else

        $1

fi

[fieldyang@www scripts]$ chmod +x ngx_status.sh

1.2.2、zabbix 客户端文件配置

将自定义的 UserParameter 加入配置文件,然后重启 agentd,如下:

[fieldyang@www scripts]$ cat /etc/zabbix/zabbix_agentd.conf|grep ^UserParameter

UserParameter=nginx.status[*],/usr/lib/zabbix/scripts/ngx_status.sh $1 $2

[fieldyang@www scripts]$ killall zabbix_agentd

[fieldyang@www scripts]$ ps -ef|grep zabbix_agentd

fieldyang      69914  57012  0 13:52 pts/0    00:00:00 grep --color=auto zabbix_agentd

[fieldyang@www scripts]$ /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

[fieldyang@www scripts]$ ps -ef|grep zabbix_agentd

zabbix    69918      1  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

zabbix    69919  69918  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]

zabbix    69920  69918  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]

zabbix    69921  69918  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]

zabbix    69922  69918  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]

zabbix    69923  69918  0 13:52 ?        00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

fieldyang      69928  57012  0 13:52 pts/0    00:00:00 grep --color=auto zabbix_agentd

[fieldyang@www scripts]$

1.2.3、zabbix_get 获取数据

通过此命令我们可以检测配置是否正确,如下命令 192.168.28.132 为zabbix-agent IP地址

Ps.推荐使用VMware安装 centos7最小系统,按需克隆主机,修改网卡配置的IP地址,重启network,便可以拷贝多台机器完成zabbix 学习。

[fieldyang@www network-scripts]$ cat  /etc/sysconfig/network-scripts/ifcfg-ens33|grep IPADDR

IPADDR=192.168.28.132

[fieldyang@www scripts]$ for i in ping active reading writing waiting accepts handled requests status_sum

> do

> if [ $i = "status_sum" ]

> then

> for j in 200 301 302 403 404 500

> do

> zabbix_get -s 192.168.28.132 -k nginx.status[$i,$j] |xargs |xargs echo "${i}_${j}:"

> done

> else

> zabbix_get -s 192.168.28.132 -k nginx.status[$i] |xargs |xargs echo "$i:"

> fi

> done

ping: 1

active: 1

reading: 0

writing: 1

waiting: 0

accepts: 141612

handled: 141613

requests: 141218

status_sum_200: 124

status_sum_301: 139

status_sum_302: 99

status_sum_403: 0

status_sum_404: 0

status_sum_500: 0

[fieldyang@www scripts]$

zabbix server 服务器上执行如上命令, 192.168.28.132 agentd 机器

2、zabbix web配置

2.1、创建“Template App NGINX”模板、应用集Nginx (略)

配置-->模板-->创建模板

配置-->模板-->“Template App NGINX”-->应用集-->创建应用集

2.2、创建监控项

配置-->模板-->“Template App NGINX”-->监控项-->创建监控项

注意:自定义的脚本只适合以下监控项,其他需求请按需修改脚本。

2.3、创建触发器

配置-->模板-->“Template App NGINX”-->触发器-->创建触发器

2.4、创建图形

配置-->模板-->“Template App NGINX”-->图形-->创建图形

2.5、创建触发器告警动作

配置-->动作-->左上角选择 触发器动作-->创建动作

2.6、链接模板

配置-->主机-->点击 nginx 所在服务器-->点击 模板-->链接新模板 输入"Template App NGINX"->Add->最后点击 更新。

3、功能验证

测试可以使用 ab工具模拟访问

ab -n 4000 -c 15 http://192.168.28.132:1080/ngx_status >>1.txt

或以下脚本

for i in `seq -w 1 9999`

do

curl http://192.168.28.132:1080/ngx_status>>1.txt

done

3.1、查看最新数据

监测-->最新数据

3.2、查看图形展示

监测-->主机-->选择nginx主机-->图形-->过滤相关图形

3.3、测试触发器动作。

模拟下线nginx

[fieldyang@www ~]$ service nginx stop

Redirecting to /bin/systemctl stop nginx.service

[fieldyang@www]~]$

在问题列表可以看到已经触发问题,并下发告警邮件。

重新上线nginx,可以看到问题已解决,并下发恢复邮件

4、导出模板

实际使用中,可以在测试环境中调试好模板,然后再导入到生产环境中

导出

配置-->模板-->选中要导出的模板-->导出

导入

配置-->模板-->选中要导入的模板-->导入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】03.内存管理

存储器的层级结构 程序的运行 现代操作系统使用的连接方式:运行时动态链接 对某些模块的链接推迟到程序执行时才进行 现代操作系统使用的装入方式:动态重定位 程序装入内存后,逻辑地址不会立即转换成物理地址,而是推迟到指令执行…

Linux 终端安装并使用tmux管理远程会话 tmux使用教程

文章目录 1 Tmux简介1.1 会话与窗口1.2 tmux功能 2 tmux安装2.1 源码安装2.2 命令行安装 3 基本用法(命令行)3.1 创建窗口3.2 分离会话 切换会话3.3 连接会话3.4 关闭会话并杀死进行对会话进行重命名 4 Tmux 的快捷键5 窗口操作与窗格操作参考 1 Tmux简介…

【事务】@Transactional 注解参数详解

文章目录 前言一、参数详解1.1、isolation(事务隔离级别)1.2、propagation(事务传播机制)1.3、readOnly(事务读写性)1.4、noRollbackFor 和 noRollbackForClassName(遇到时不回滚)1.…

智能出行 驱动未来|2023 开放原子全球开源峰会 CARSMOS 开源智能出行生态年会即将启幕

由开放原子开源基金会主办,元遨 / CARSMOS 开源智能出行项目组协办,深信科创、Futurewei Technologies、Open Motors、北极雄芯等单位共同承办的 2023 开放原子全球开源峰会 “CARSMOS 开源智能出行生态年会” 将于 6 月 12 日在北京经开区北人亦创国际会…

华为OD机试真题 Java 实现【分糖果】【2022Q2 200分】,附详细解题思路

一、题目描述 小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 小明最少需要多少次(取出、放回…

基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标,利用深度学习算法可实现图片、视频、摄像头等方式的家禽猪目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

维护嵌入式 Linux 内核——So Easy

导读Pengutronix 内核黑客 Jan Lbbe 总结了嵌入式 Linux 中正在不断增长的安全威胁,并在这次欧洲嵌入式 Linux 会议上概述了一个计划,以保持长期设备的安全和功能完整。 安全漏洞只发生在 Windows 上的好日子正在快速过去。恶意软件黑客和拒绝服务老手们…

【JavaSE】Java基础语法(三十八):并发工具类

文章目录 1. Hashtable2. ConcurrentHashMap基本使用3. ConcurrentHashMap1.7原理4. ConcurrentHashMap1.8原理5. CountDownLatch6. Semaphore 1. Hashtable Hashtable出现的原因 : 在集合类中HashMap是比较常用的集合对象,但是HashMap是线程不安全的(多线程环境下…

CentOS7使用Docker快速安装Davinci

环境信息 操作系统:CentOS7Docker : 23.0.6 (已配置阿里云镜像加速) 安装步骤 安装docker-compose-plugin 官方的例子使用的是docker-compose,但是由于yum能够安装的最新斑斑是1.x,而且官方的docker-compose要求最低版本为2.2以…

如何在电脑上图片裁剪?裁剪图片大小的方法介绍

图片裁剪大小的优点 在数字化时代,图片已成为人们日常生活中使用最频繁的媒介之一。然而,由于不同尺寸和比例的图片在不同的平台上展示效果有所不同,因此需要对其进行裁剪。 图片裁剪大小的主要优点包括: 1. 优化页面显示&…

地震勘探基础(十)之地震速度关系

地震速度 地震勘探中引入了多种速度的概念,如下图所示。 层速度、平均速度和均方根速度之间的关系 层速度指的是某一套地层垂向上,由于地质条件相对稳定,地层顶底厚度比上地震波的传播时间为层速度,用 v n v_n vn​ 表示。 如下…

Eclipse教程 Ⅸ

今天继续来学习Eclipse 快速修复、Eclipse 浏览菜单、Eclipse 查找以及Eclipse 悬浮提示的内容!老规矩,废话不多说,开始吧。 Eclipse 快速修复 使用快速修复 在 Eclipse 编辑器中当你输入字母时,编辑器会对你输入的内容进行错误…

Fiddler抓包工具配置+Jmeter基本使用

一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前,得先学会如何抓包,这里以Fiddler为例。会抓包的同学可以跳过这一步,当然看看也是没坏处的…… 局域网络配置 将要进行抓包的手机与电脑连入同一局域网,电脑才能够…

CPU、内存、缓存的关系

术语解释 (1)CPU(Central Processing Unit) 中央处理器 (2)内存 内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,内存的运行决定…

生成式模型的质量评估标准

Sample Quality Matrix 如何评价生成式模型的效果?ISFIDsFIDPrecision & RecallPrecisonRecall计算precision和recall 如何评价生成式模型的效果? Quality: 真实性(逼真,狗咬有四条腿) Diversity: 多样性&#x…

Hive

Hive 概览 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 本质是将SQL转换为MapReduce程序。 主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高。 架构 数…

机器视觉怎么对陶瓷板外观尺寸进行自动检测?

随着陶瓷行业的发展,陶瓷板的生产和质量控制面临越来越高的要求。而机器视觉技术作为一种高精度、高效率、无损、可靠性高的自动化检测手段,已经成为陶瓷板外观尺寸自动化检测的首选方案。本文就如何利用机器视觉对陶瓷板外观尺寸进行自动检测进行分析和…

常用模拟低通滤波器的设计——巴特沃斯滤波器

常用模拟低通滤波器的设计——巴特沃斯(Butterworth)滤波器 滤波器是一种具有频率选择作用的电路或运算处理系统,它具有区分区分输入信号的各种不同频率成分的功能,具有滤除噪声和分离各种不同信号的功能。综合一个滤波器的基本步骤分为逼近和实现。逼近…

设计模式之~享元模式

定义: 享元模式英文称为“Flyweight Pattern”,又译为羽量级模式或者蝇量级模式。 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式&#xff0c…

【每日挠头算法题(1)】——旋转字符串|亲密字符串

文章目录 一、旋转字符串思路1思路2 二、亲密字符串思路 总结 一、旋转字符串 点我直达终点~ 思路1 前提:如果s串和goal串长度不等,则goal串不可能是s串旋转得来,直接返回false; 通过观察,可以发现每旋转一次&#…