zabbix监控Nginx

news2024/11/25 10:58:25

目录

一、环境准备

二、部署Nginx被监控端

三、自定义Nginx监控key

四、给目标主机创建监控项


一、环境准备

搭建zabbix基础环境

zabbix基础环境部署参照:zabbix基础环境部署_桂安俊@kylinOS的博客-CSDN博客

以下实验部署均基于上述环境

二、部署Nginx被监控端

此处选择在web1搭建Nginx服务,部署Nginx时要加载status模块

Nginx下载地址:nginx: download

#在web1主机安装
yum install gcc pcre-devel openssl-devel -y

tar -xvf nginx-1.22.1.tar.gz

cd nginx-1.22.1

./configure --with-http_stub_status_module

make && make install

修改Nginx配置:

vim /usr/local/nginx/conf/nginx.conf

在server块里面新增一个location块,用户显示状态,新增内容如下红色标记部分:

... ...

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /status {
            stub_status on;
        }
  
        #error_page  404              /404.html;
        
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        ... ...

}

#启动nginx
/usr/local/nginx/sbin/nginx

验证nginx状态页面:

curl http://192.168.2.20/status

 

三、自定义Nginx监控key

语法格式:

UserParameter=key,command

UserParameter=key[*],<command>

key里的所有参数,都会传递给后面命令的位置变量

举例:

UserParameter=ping[*],echo $1

ping[0]                 #返回的结果都是0

ping[aaa]             #返回的结果都是aaa

在被监控端web1主机创建监控key文件:

(注意创建自定义监控key要在agent端/usr/local/etc/zabbix_agentd.conf里设置Include,前文环境已经设置过,这里不再重复)

vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status

添加如下内容:

#将nginx.status[]里的参数,传递给后面sh脚本的位置参数里
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1

重启agent:

killall zabbix_agentd

zabbix_agentd

以上创建好监控key,但是nginx_status.sh脚本还不存在,下面编写脚本:

vim /usr/local/bin/nginx_status.sh

脚本内容如下:

#!/bin/bash
case $1 in
active)
    curl -s http://127.0.0.1/status | awk '/Active/{print $NF}';;
waiting)
    curl -s http://127.0.0.1/status | awk '/Waiting/{print $NF}';;
accepts)
    curl -s http://127.0.0.1/status | awk 'NR==3{print $2}';;
esac
chmod +x /usr/local/bin/nginx_status.sh

#测试zabbix_get能否获取
zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'
zabbix_get -s 127.0.0.1 -k 'nginx.status[waiting]'
zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'

 

四、给目标主机创建监控项

        这里可以先创建监控模板,把监控项添加到监控模板,也可以直接找到目标主机,把目标主机添加该监控项,区别是通过监控模板,后面可以给其他主机用,如果是直接到目标主机添加监控项,那这个监控项后面不能给其他主机直接用,除非别的主机也去创建监控项。这里为了测试方便,就直接给目标主机添加items监控项:

Configuration--->Hosts--->选择目标主机web1后面的items,点击后面的Create item:

 如下图,设置自定义监控项名称,键值手动输入,nginx.status[accepts],括号里面是手动传入的参数,设置完成后选择最下面的添加:

回到web1主机的监控项列表里面,可以看到多了一个监控项nginx_status:

 点击监测中--->最新数据--->选择web1主机,找到nginx_status监控项,可以看到监控数值:

 也可以点击后面的图形,查看折线图:

 我们可以在zabbixserver主机使用ab命令,模拟向web1 nginx服务器发送并发数据,观察web1主机并发数变化:

#在zabbixserver主机执行,任何非web1主机都可以,发送并发数访问
ab -c 100 -n 10000 http://192.168.2.20/

再次查看web1的监控数据,发现并发数有明显变化:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

芯片级解密YMTC NAND Xtacking 3.0技术

长江存储YMTC自从2016年成立以来&#xff0c;一直在吸引外界的关注。作为NAND国产厂商&#xff0c;被寄予厚望。在2018年FMS闪存峰会发布了Xtacking 1.0的NAND架构&#xff0c;凭借该技术荣获了“最具创新初创闪存企业”。 在2019年又发布了Xtacking 2.0的NAND架构。根据官网介…

xss-labs/level8

单单从界面上看 只剩下一个输出点了 但是界面毕竟就是界面 而源代码才是更深层的东西 通过源代码我们看得出来 有两个输出点 第一处是经过htmlspecialchars转义之后然后插入 第二处则是对关键字进行了下划线插入操作 我们试试看构造如下 " onclickjavascript:alert(…

Qt(Python+Qt)QMainWindow的splitDockWidget方法将QDockWidget停靠窗分割排列

主窗口的splitDockWidget方法用于将一个停靠窗占据的空间分割成两部分&#xff0c;原有停靠窗放置在第一部分的区域&#xff0c;另一个停靠窗放置在第二部分的区域。调用语法&#xff1a; splitDockWidget( QDockWidget first, QDockWidget second, Qt.Orientation orientatio…

疫情下就业形势怎样?存在抗衰行业吗?

三年的疫情下&#xff0c;全球各国的经济都受到了重要影响。特别是今年以来&#xff0c;国际形势复杂严峻&#xff0c;国内疫情点、面频发&#xff0c;对经济运行的冲击和影响加大。 这一场持续三年的疫情&#xff0c;给很多正常人的工作和生活都带来了不确定性&#xff0c;也给…

转扩!寻找G2022次列车“旅客”

各位求职朋友大家好&#xff0c;欢迎乘坐G2022次列车 本次列车为6节编组&#xff0c;由上海开往北京&#xff0c;途径宁波、重庆 本次列车乘务组全体工作人员为您提供全方位福利待遇 上车地址&#xff1a;上海擎创信息技术有限公司 - 社会招聘 (eoitek.com) 如您还需其他帮助…

架构体系-黑马学习2:-业务幂等性技术架构体系(1)

25min 以下涉及到的都是一人操作时候&#xff0c;多次点击造成的并发&#xff0c;对幂等性问题的影响。 大多适用场景&#xff0c;都是单表。没有兼顾数据库分库分表分区场景。 幂等性定义&#xff1a;无论对某一个资源操作了多少次&#xff0c;其影响都应该是相同的。换句话…

Kepserver EX6配置opc ua服务端 以及客户端

一.Kepserver EX6下载 链接&#xff1a;https://pan.baidu.com/s/1zNr-J0vmBdu9qmI1GtXxrw 提取码&#xff1a;wqcl 二.Kepserver EX6安装 点击安装包》选择“简体中文语言包”》一直默认下一步就可以直到结束安装 下载包中有破解补丁的详细使用说明这里就不多做说明了 下面…

《联邦学习实战—杨强》之使用Python从零开始实现一个简单的横向联邦学习模型

文章目录前言环境准备完整代码配置文件(conf.json)获取数据集(datasets.py)获取PyTorch中自带深度学习网络预训练模型(models.py)客户端(client.py)服务端(server.py)main.py运行知识点补充argparse基本用法tensor.copy_()[Python dict() 函数](https://www.runoob.com/python/…

Redis——》数据类型:zset(有序集合)

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型&#xff1a;zset&#xff08;有序集合&#xff09;一、…

基于SpringBoot的在线点餐系统【附源码】

功能模块设计 技术概要 前端技术&#xff1a;JQuery&#xff0c;Thymeleaf&#xff0c; CSS 后端技术&#xff1a;SpringBoot&#xff0c;SpringMVC&#xff0c;mybaits 数据库&#xff1a;mysql 主要功能 首页实现 主页也是网址的入口处,一般包括了:LOGO、导航、Banner、…

C指针之初始化(三)

一、引言 C/C语言中引入了指针&#xff0c;使得程序能够直接访问内存地址&#xff0c;使得很多复杂的操作变得简单&#xff0c;同时也提高了程序的运行效率。指针即是地址&#xff0c;但是地址却是通过指针变量来存储的。因此我们通常所说的指针在很多时候说的都是指针变量。指…

AzkabanExecutorServer自动注册分析

启动AzkabanExecutorServer发现会自动注册&#xff0c;但是active默认为0&#xff0c;需要修改为1&#xff0c;否则 SELECT id, host, port, active FROM executors where activetrue查询不到记录&#xff0c;导致 AzkabanWebServer启动时候还是失败。 因此azkaban的正确启动…

MySQL的行锁和表锁

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题&am…

复现黑客在后门中藏匿后门

PHP实现在后门中藏匿后门 在攻击渗透的时候会传入shell后门方便进行远控。其中的后门包括多种类型&#xff0c;大马是功能最全的直接提供了可视化的界面方便攻击者进行提权、扫描、上传等一系列的操作。 但有很多hacker不讲武德&#xff0c;在写好的大马中藏入自己的后门&…

Java#28(集合进阶1---单列集合)

目录 一.Collection---------单列集合-------一次只能添加一个元素,如: 小明 1.Collection的常用方法 2.Collection的遍历 迭代器遍历 增强for遍历 Lambda表达式 3.List集合的特有方法 List集合的5种遍历方式 ArrayList集合 泛型 4.Set的方法和遍历方式 HashSet集合 …

如何用看板工具做轻量级项目管理

本文分享一下&#xff0c;怎么用看板工具做轻量级项目管理。 说起管理项目&#xff0c;会遇到各种各样的事情&#xff0c;我们多多少少有些头疼&#xff0c;人员任务分配不均&#xff0c;对接不及时&#xff0c;沟通过不及时等等。 我们包括采购、人力资源、销售、市场都在用…

【深度学习】torch.squeeze()移除维度函数 | torch.unsqueeze()增加某一维度函数 | pytorch

文章目录前言一、torch.squeeze()函数二、torch.unsqueeze()函数前言 这两个函数在pytorch框架下的深度学习经常用到&#xff0c;这次把它们记录一下。 一、torch.squeeze()函数 torch.squeeze()用来“挤”掉某一个维度为1的维度&#xff0c;或者所有维度为1的维度。&#x…

Unity3D教程:布娃娃系统

首先&#xff0c;将你3Dsmax的角色和Bipes汇出成FBX档&#xff0c;设定如下即可。(注意不可以有中文路径喔否则无法正确汇出) 打开Unity3D&#xff0c; 可以看见我的场景内只有&#xff1a;摄影机、人物(Man)、灯光、地板。 在Hierarchy视窗内将人物(Man)的Bip01所有标签打开&a…

WebRTC学习笔记一 简单示例

一、捕获本地媒体流getUserMedia 1.index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-e…

基于预训练模型的Unet【超级简单】【懒人版】【Pytorch版】

基于预训练模型的Unet【超级简单】【懒人版】【Pytorch版】 在本项目开始前&#xff0c;首先给大家保证&#xff0c;本次项目只是一个最简单的Unet实现&#xff0c;使用现成的代码&#xff0c;不需要手写代码&#xff0c;使用预训练模型&#xff0c;不需要标注数据集和训练。所…