zabbix 企业级监控 (5) Zabbix监控nginx

news2024/11/27 14:34:51

目录

简介

配置yum仓库

Web Zabbix端添加主机

启用之前自动发现的规则及动作


简介

nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控来发现出来出现的问题。zabbix监控nginx,首先确认nginx的监控指标,主要有:基本活动指标,错误指标,性能指标。

nginx处理流程图具体如下:

注释:Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。Active(活跃)、Waiting(等待)、Reading(读)、Writing(写)随着请求量而增减

名称

描述

指标类型

Accepts(接受)

NGINX 所接受的客户端连接数

资源: 功能

Handled(已处理)

成功的客户端连接数

资源: 功能

Active(活跃)

当前活跃的客户端连接数

资源: 功能

Dropped(已丢弃,计算得出)

丢弃的连接数(接受 - 已处理)

工作:错误*

Requests(请求数)

客户端请求数

工作:吞吐量

  NGINX worker 进程接受 OS 的连接请求时 Accepts 计数器增加,而Handled 是当实际的请求得到连接时(通过建立一个新的连接或重新使用一个空闲的)。这两个计数器的值通常都是相同的,如果它们有差别则表明连接被Dropped, 往往这是由于资源限制,比如已经达到 NGINX 的worker_connections的限制。

配置yum仓库

[root@agent ~]#  yum clean all
已加载插件:fastestmirror
正在清理软件源: base epel extras updates
Cleaning up list of fastest mirrors
[root@agent ~]# yum makecache
已加载插件:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink                

安装nginx

[root@agent ~]# yum install -y nginx

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * base: mirrors.aliyun.com

 * epel: mirrors.bfsu.edu.cn

 * extras: mirrors.bfsu.edu.cn

 * updates: mirrors.bfsu.edu.cn

正在解决依赖关系

查看nginix_status是否开启

[root@agent ~]# nginx -V

nginx version: nginx/1.20.1

配置nginx

[root@agent ~]# vim /etc/nginx/nginx.conf

# For more information on configuration, see:

#   * Official English Documentation: http://nginx.org/en/docs/

#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

    worker_connections 1024;

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.

    # See http://nginx.org/en/docs/ngx_core_module.html#include

    # for more information.

    include /etc/nginx/conf.d/*.conf;

    server {

        listen       80;

        listen       [::]:80;

        server_name  _;

        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

          location / {

                root html;

                index index.html;

                stub_status on;                                 #开启stub模块

                access_log off;                                         #关闭access_log

                allow 127.0.0.1;                                                #允许自身ip

                allow 192.168.50.50;                                    #此处设置的是zabbix server的ip>地址

        }

        #添加如下信息  

        error_page 404 /404.html;

        location = /404.html {

        }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        }

    }

[root@agent ~]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@agent ~]# systemctl start nginx    开启nginx

[root@agent ~]# curl 192.168.50.50/nginx-status                 获取nginx信息

Active connections: 1

server accepts handled requests

 1 1 1

Reading: 0 Writing: 1 Waiting: 0

注释:
Active connections –当前活跃的连接数量 
server accepts handled requests — 总共处理了756072922个连接 , 成功创建 756072922次握手, 总共处理了1136799890个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

创建脚本存放目录

[root@agent ~]# mkdir /usr/local/zabbix/scripts

编写zabbix监控nginx脚本

[root@agent ~]# vim /usr/local/zabbix/scripts/nginx-check.sh

#!/bin/bash

###########################

#zabbix monitoring script

#

# nginx:

# - anything available via nginx stub-status module

#

##################################

# Contact:

# vincent.viallet@gmail.com

# Zabbix requested parameter

ZBX_REQ_DATA="$1"

ZBX_REQ_DATA_URL="$2"

# Nginx defaults

NGINX_STATUS_DEFAULT_URL="192.168.50.50/nginx-status"    #(这里写网站的域名)

WGET_BIN="/usr/bin/wget"

#

# Error handling:

# - need to be displayable in Zabbix (avoid NOT_SUPPORTED)

# - items need to be of type "float" (allow negative + float)

#

ERROR_NO_ACCESS_FILE="-0.9900"

ERROR_NO_ACCESS="-0.9901"

ERROR_WRONG_PARAM="-0.9902"

ERROR_DATA="-0.9903" # either can not connect / bad host / bad port

# Handle host and port if non-default

if [ ! -z "$ZBX_REQ_DATA_URL" ]; then

 URL="$ZBX_REQ_DATA_URL"

else

 URL="$NGINX_STATUS_DEFAULT_URL"

fi

# save the nginx stats in a variable for future parsing

NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)

# error during retrieve

if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then

 echo $ERROR_DATA

 exit 1

fi

#

# Extract data from nginx stats

#

case $ZBX_REQ_DATA in

 active_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;

 accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';;

 handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;

 handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;

 reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;

 writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;

 waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;

 *) echo $ERROR_WRONG_PARAM; exit 1;;

esac

exit 0

配置zabbix_agentd.conf

[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

UnsafeUserParameters=1                     启用自定义

UserParameter=nginx[*],/usr/local/zabbix/scripts/nginx-check.sh "$1"    #引用nginx脚本

查看端口

[root@agent ~]# netstat -anpt | grep 10050

tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1736/zabbix_agentd  

server测试获取数据

[root@server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.200.117 -p 10050 -k "nginx[reading]"
0

 

Web Zabbix端添加主机

启用之前自动发现的规则及动作

先禁用

 导入模板

 

 创建主机添加导入模板

 

 

 

 

 

 等一会查看效果

 

 

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

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

相关文章

HTML中常用的标签

注释标签&#xff1a;<!--内容--> 标题标签&#xff1a;<h1></h1>;<h2></h2>;<h3></h3>;<h4></h4>;<h5></h5>;<h6></h6> 段落标签&#xff1a;<p></p> 没有<p></p>时…

数据备份和恢复练习

创建数据库db create database db&#xff1b; 创建student和score表并插入数据 mysql> select *from student-> ; --------------------------------------------------------------- | id | name | sex | birth | department | address | ----…

qt 5.12.6配置 msvc2015 32bit

qt 5.12.6配置 msvc2015 32bit 1.添加临时档案库2.安装 msvc20153. 配置 qmake 环境4.修改系统环境变量5.问题修改1.qt没有被正确的安装,请运行make install2.QT编译出错&#xff1a;rc不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。3.QT License check fai…

【iOS】—— block,KVC,KVO,Category等问题解答

文章目录 block1.block的原理是怎样的&#xff1f;本质是什么&#xff1f;2.__block的作用是什么&#xff1f;有什么使用注意点&#xff1f;3.block的属性修饰词为什么是copy&#xff1f;使用block有哪些使用注意&#xff1f;4.block在修改NSMutableArray&#xff0c;需不需要添…

使用langchain与你自己的数据对话(一):文档加载与切割

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

简单理解TCP,UDP,HTTP

我们都知道TCP、UDP、HTTP内部有很复杂的过程&#xff0c;很多人没办法理解的那么深&#xff0c;只想知道这是个什么鬼。 1、TCP、UDP、HTTP 是什么? TCP/IP是个协议组&#xff0c;可分为三个层次&#xff1a;网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、…

50 Matplotlib Visualizations, Python实现,源码可复现

详情请参考博客: Top 50 matplotlib Visualizations 因编译更新问题&#xff0c;本文将稍作更改&#xff0c;以便能够顺利运行。 0 Introduction 新建项目文件夹为matplotlib_visualizations&#xff0c;以下所有的.py文件均默认在该位置。 0.2 Setup Setup.py文件内容如下&…

(双指针) 剑指 Offer 57 - II. 和为s的连续正数序列 ——【Leetcode每日一题】

❓ 剑指 Offer 57 - II. 和为s的连续正数序列 难度&#xff1a;简单 输入一个正整数 target &#xff0c;输出所有和为 target 的连续正整数序列&#xff08;至少含有两个数&#xff09;。 序列内的数字由小到大排列&#xff0c;不同序列按照首个数字从小到大排列。 示例 1…

zookeeper的应用

Zookeeper的配置文件解析: Zookeeper内部原理: 选举机制 半数机制:在集群环境中半数以上的机器存活,这个集群可用,所以在设计Zookeeper集群系统时&#xff0c;通常会选择 奇数台服务器来搭建Zookeeper的集群 虽然在配置文件中并没有指定Master和Slave。但是&#xff0c;Zookeep…

【安全狗】linux免费服务器防护软件安全狗详细安装教程

在费用有限的基础上&#xff0c;复杂密码云服务器基础防护常见端口替换安全软件&#xff0c;可以防护绝大多数攻击 第一步&#xff1a;下载服务器安全狗Linux版&#xff08;下文以64位版本为例&#xff09; 官方提供了两个下载方式&#xff0c;本文采用的是 方式2 wget安装 方…

09.计算机网络——套接字编程

文章目录 网络字节序socket编程socket 常见APIsockaddr结构 UDP编程创建socket绑定socketsendto发送数据recvform接收数据关闭socket TCP编程创建socket绑定socketlisten监听套接字accept服务端接收连接套接字connect客户端连接套接字send发送数据recv接收数据关闭socket 工具n…

算法训练营第四十六天||● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

● 139.单词拆分 这道题和完全背包一样&#xff0c;求排列数相当于 字符串相当于背包&#xff0c;字串相当于物品 注意find方法的使用 find&#xff08;s.begin(),s.end(),"zichuan") 还有s.substr的使用s.substr(起始位置&#xff0c;截取长度&#xff09; clas…

Stable Diffusion服务环境搭建(远程服务版)

Stable Diffusion服务环境搭建&#xff08;远程服务版&#xff09; Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models&#xff08;潜在扩散模型&#xff0c;LDMs&#xff09;的文图生成&#xff08;text-to-image&#xff09;模型。具体来说&#…

ES6基础知识一:说说var、let、const之间的区别

一、var 在ES5中&#xff0c;顶层对象的属性和全局变量是等价的&#xff0c;用var声明的变量既是全局变量&#xff0c;也是顶层变量 注意&#xff1a;顶层对象&#xff0c;在浏览器环境指的是window对象&#xff0c;在 Node 指的是global对象 var a 10; console.log(window.…

VUE3---->基础入门

目录 vue 基础入门 1、解读核心关键词&#xff1a;框架 2、vue 的版本 3、vue 的调试工具 vue 基础入门 vite 的基本使用 1. 创建 vite 的项目 2. 梳理项目的结构 3. vite 项目的运行流程 组件的基本使用 1. 组件的注册 2. 组件之间的样式冲突问题 3. 组件的 props …

穿透内网群晖NAS实现远程访问【无公网IP】

穿透内网群晖NAS实现远程访问【无公网IP】 现代科技日新月异&#xff0c;我们身边的电子设备也在不断更新&#xff0c;日积月累之下&#xff0c;被淘汰的电子设备越来越多&#xff0c;难道就让这些性能不算差的电子设备从此闲置么&#xff0c;这明显不符合我们物尽其用的原则&a…

记录安装stable diffusion webui时,出现的gfpgan安装卡住的问题

参考链接&#xff1a;(145条消息) 使用stable diffusion webui时&#xff0c;安装gfpgan失败的解决方案&#xff08;windows下的操作&#xff09;_新时代原始人的博客-CSDN博客

[書籍]思考的框架

圖片來源:博客來書店 《思考的框架》是一本極具啟發性和實用性的書籍&#xff0c;它以系統性和綜合性的方式引導讀者運用跨學科思維來解決問題和拓展思維視野。作者巧妙地整合了來自不同領域的思想家和學者的觀點&#xff0c;從心理學到經濟學&#xff0c;從哲學到科學等&#…

docker安装jdk

文章目录 1.安装镜像2.查看已安装的镜像4.运行容器5.进入JDK 容器6.查看JDK版本 1.安装镜像 找到所要安装的镜像版本&#xff0c;复制命令 输入命令&#xff0c;下载openjdk8镜像 命令作用docker pull openjdk:8拉取版本号为8的镜像 2.查看已安装的镜像 命令作用docker ima…

指针大厂笔试真题讲解(c语言篇)

大家好&#xff0c;我是c语言boom家宝&#xff0c;今天为大家带来的是c语言指针内容在大厂笔试中的真题讲解&#xff0c;希望能让初学者对指针有更深入的理解。 ps&#xff1a;如有侵权&#xff0c;请私信联系&#xff0c;立刻删除。 真题一&#xff1a; 答案&#xff1a;2 &…