influxdb+grafana监控Nginx

influxdb创建数据库

create  database devops

连接grafana
在这里插入图片描述

Nginx配置

nginx编译参数需有--with-http_stub_status_module
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream  --with-stream_ssl_module --with-http_stub_status_module



nginx配置新增,增完后reload nginx
  location /nginx_status {
        stub_status on;
        access_log off;
       
        allow all;
        
    }



[root@Grafana ~]# curl http://localhost/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 


Active connections: 活跃连接数,这个数字表示当前时间点,Nginx 正在处理的活跃连接总数。

server accepts handled requests:

第一个数字(1)表示 Nginx 自启动以来接收的连接总数。
第二个数字(1)表示 Nginx 自启动以来成功创建的握手总数。
第三个数字(1)表示自启动以来处理的请求总数。
Reading: 当前正在读取客户端请求头的连接数。

Writing: 当前正在向客户端发送响应的连接数。

Waiting: 开启 keep-alive 的情况下,等待下一次请求指令的闲置连接数。


from influxdb import InfluxDBClient
import urllib.request

# Nginx 状态 URL - 这是 Nginx 服务器状态页面的 URL,用于获取实时的服务器状态数据
url = 'http://192.168.124.10/nginx_status'

try:
    # 尝试从 Nginx 状态页面获取数据
    response = urllib.request.urlopen(url)
    # 读取响应内容,并解码为 UTF-8 格式的字符串,这是为了处理可能的中文或特殊字符
    result = response.read().decode('utf-8')
    # 将结果按行分割成列表,每行一个元素
    list_result = result.split('\n')
    # 解析第三行(通常包含连接数、处理数、请求数),并按空格分割
    nginx_result = list_result[2].split()

    # 连接到 InfluxDB - 使用 InfluxDBClient 连接到 InfluxDB 服务器
    client = InfluxDBClient(host='192.168.124.10', port=8086, username='test', password='123456', database='devops')
    
    # 构造数据点列表 - 准备发送到 InfluxDB 的数据点,包括测量名称、标签和字段
    data_list = [
        {'measurement': 'nginx_status', 'tags': {'item': 'nginx.accepts'}, 'fields': {'value': int(nginx_result[0])}},
        {'measurement': 'nginx_status', 'tags': {'item': 'nginx.handled'}, 'fields': {'value': int(nginx_result[1])}},
        {'measurement': 'nginx_status', 'tags': {'item': 'nginx.requests'}, 'fields': {'value': int(nginx_result[2])}}
    ]
    # 将数据点写入到 InfluxDB - 使用 write_points 方法将准备好的数据发送到数据库
    client.write_points(data_list)
except Exception as e:
    # 如果在尝试过程中发生任何异常,打印错误信息
    print(f"An error occurred: {e}")

查看influxdb信息

> select * from nginx_status
name: nginx_status
time                item           value
----                ----           -----
1722389857220933139 nginx.accepts  7
1722389857220933139 nginx.handled  7
1722389857220933139 nginx.requests 7
> 

可以将上面的脚本加入定时任务

在这里插入图片描述
在下方选择nginx_accepts,图表选择默认的time series,会自动绘制折线图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤来实现Java与RTSP、FFmpeg、HTML和Nginx的结合来实现视频实时播放的监控系统: 1. 首先,你需要使用Java来创建一个监控系统的后端服务。你可以使用Java的网络编程库来监听RTSP流并将其解码。可以使用开源的库,例如JRTSP或者Xuggler来处理RTSP流,并将其转换为可供播放的视频流。 2. 接下来,你需要使用FFmpeg来处理视频流。FFmpeg是一个强大的多媒体处理工具,可以用于转码、解码、编码等操作。你可以使用FFmpeg来解码RTSP流,并将其转换为HTML5支持的视频格式,例如HLS(HTTP Live Streaming)或者MPEG-DASH(Dynamic Adaptive Streaming over HTTP)。 3. 在前端方面,你可以使用HTML和JavaScript来创建一个简单的视频播放器。你可以使用HTML5的<video>标签来嵌入视频,并使用JavaScript来控制视频的播放、暂停等操作。你可以使用一些开源的视频播放器库,例如video.js或者plyr来简化开发过程。 4. 最后,你可以使用Nginx作为反向代理服务器来提供视频流的分发和缓存功能。Nginx可以将视频流从后端服务器转发给前端浏览器,并且可以缓存视频文件以提高性能和可靠性。你可以配置Nginx来支持HLS或者MPEG-DASH协议,并且可以使用Nginx的HTTP模块来进行性能优化和安全加固。 综上所述,通过将Java、RTSP、FFmpeg、HTML和Nginx结合起来,你可以实现一个监控视频的实时播放系统。这个系统可以从RTSP流中提取视频数据,经过FFmpeg处理后,通过HTML和JavaScript在浏览器中进行播放,并且可以使用Nginx提供性能优化和缓存支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值