Zabbix监控nginx-rtmp status(html版)

时间:2022-09-22 10:03:05

nginx-rtmp开启stats

# nginx(--add-module=nginx-rtmp-module-master)

nginx.conf:
server {
listen ;
location /stat {
rtmp_stat all;
}
}

http://127.0.0.1:81/stat

Zabbix监控nginx-rtmp status(html版)

stat状态值详解

codec: 编码

bits/s: 码流

size: 分辨率

fps: 每秒传输帧数

freq: 音频频率

chan: 声道数

定义zabbix监控item key

  vim etc/zabbix_agentd.conf.d/userparameter_live.conf

UserParameter=live.stream[*],/usr/local/zabbix-agent/scripts/stream.py $

stream.py  # 判断In bits/s值(视音频合计码流)。0则rtmp断流,非0则正常

#!/usr/bin/python
# -*- coding: utf-8 -*-
# author pdd '''
curl的直播流状态值写入本地CACHE文件 后续具体的直播频道流值从该文件获取 CACHE文件根据ctime一分钟更新一次
''' import os
import re
import sys
import time
import urllib2 class Live(object): def __init__(self,url,CACHETTL,CACHE,STREAM):
self.url = url
self.CACHETTL = CACHETTL
self.CACHE = CACHE
self.STREAM = STREAM def generate_cache(self):
TIMENOW = int(time.time())
if os.path.isfile(self.CACHE) and os.path.getsize(self.CACHE) > 0:
TIMECACHE = int(os.path.getctime(self.CACHE))
else:
TIMECACHE = 0
if (TIMENOW - TIMECACHE) > self.CACHETTL:
try:
r = urllib2.urlopen(self.url,timeout=1)
with open(self.CACHE,'w') as f:
f.write(r.read())
except urllib2.URLError, e:
print 0 # 给zabbix触发直播流down报警的值
exit(1) # 退出程序 不让从CACHE文件获取值 def get_status(self):
self.generate_cache()
with open(self.CACHE,'r') as f:
r = f.read()
name = re.findall(r'<name>(.*_sd)</name>',r)
flow = re.findall(r'<bw_in>(.*)</bw_in>',r)[1:]
stream = dict(zip(name,flow))
print(stream[self.STREAM]) if __name__ == "__main__":
url = "http://127.0.0.1:81/stat" # 直播频道流状态值url
CACHETTL = 60 # 本地CACHE文件更新时间间隔
CACHE = "/tmp/nginx-rtmp-status.cache" # 本地CACHE文件绝对路径
STREAM = sys.argv[1] # 某个具体直播频道
status = Live(url,CACHETTL,CACHE,STREAM)
status.get_status()

重启zabbix_agentd客户端使监控key生效

客户端测试

Zabbix监控nginx-rtmp status(html版)

服务器端 # 页面监控主机添加对应的application items

zabbix后台 Configuration->Hosts->被监控的数据库主机name->Applications Items

Zabbix监控nginx-rtmp status(html版)

创建Graphs(视音频码流)

zabbix后台 Configuration->Hosts->被监控的主机name->Graphs

Zabbix监控nginx-rtmp status(html版)

查看graph(视频码流)

zabbix后台 Monitoring->Graphs->对应的graph

Zabbix监控nginx-rtmp status(html版)

Zabbix监控nginx-rtmp status(html版)的更多相关文章

  1. zabbix监控nginx status页面

    在需要添加监控的nginx配置文件中添加下列配置 #zabbix监控nginx配置 location /nginx_status { stub_status on; access_log off; a ...

  2. Zabbix 监控 Nginx(四)

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [root@localhost ~]# /apps/product/ng ...

  3. Zabbix 监控 Nginx 状态

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...

  4. 使用zabbix监控nginx

    在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module.因为zabbix监控nginx是根据 nginx的Stub Status模块 ...

  5. zabbix监控nginx连接状态&lpar;转&rpar;

    zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数) ...

  6. 使用zabbix监控nginx的活动连接数

    使用zabbix监控nginx的活动连接数 1.方法简述 zabbix可以自定义很多监控,只要是能通过命令获取到相关的值,就可以在zabbix的监控中增加该对象进行监控,在zabbix中,该对象称之为 ...

  7. Zabbix监控nginx性能的另外一种方式

    Zabbix监控nginx性能的另外一种方式 nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有用,为了后续的zabbix监控,我们需要先启用nginx ...

  8. Zabbix应用四&colon;Zabbix监控Nginx

    利用Zabbix监控Nginx 一.准备nginx监控模版: 1.1.下载nginx监控模版:  点此下载 1.2.导入模版: Zabbix管理页面,选择'配置'->'模版'->'导入': ...

  9. zabbix监控nginx的性能

    1.nginx配置 需要使用zabbix监控nginx,首先nginx需要配置ngx_status,在nginx的配置文件中加入红框中的配置,然后重启nginx如下图所示: location /ngx ...

  10. 【zabbix告警监控】配置zabbix监控nginx服务

    zabbix监控nginx,nginx需要添加--with-http_stub_status模块 使用zabbix监控nginx,首先nginx需要配置开启ngx_status.但是我这边nginx安 ...

随机推荐

  1. &lbrack;LeetCode&rsqb; Majority Element II 求众数之二

    Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...

  2. tail queue代码阅读

    tail queue是bdb中用的最多的数据结构. 定义在 src/dbinc/queue.h: 注: TRACEBUF,QMD_TRACE_HEAD等是为了 queue代码的debug, 这里移除出 ...

  3. &lbrack;Java&rsqb; xms xmx XX&colon;PermSize XX&colon;MaxPermSize 参数意义解析

    今天在做jmeter压力测试时又出现以前经常出现的异常,如下图,长时间不弄这个的,又有点不知所措了,所以干脆再来总结一下问题: 以前写过两篇文章,对这个问题研究过,见下面连接: 连接1:http:// ...

  4. Linux gcc 编译日记

    gcc 编译器是众多编译器组合入口,例如在编译 .cpp 文件时,使用c++ 编译器,编译.c 文件时,使用c编译器. 在编译c++程序时, 库文件与头文件可通过 -L[dir] 指定库目录 , -l ...

  5. java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件

    /** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...

  6. 读&lt&semi;&lt&semi;CLR via C&num;&gt&semi;&gt&semi; 详谈泛型

    1,什么是泛型? 答:泛型是类型的模板,类型是实例(对象)的模板.C#提供了5种泛型:类,接口,委托,结构和方法. 2,使用泛型有什么好处? 答:继承实现的是"代码重用",而泛型实 ...

  7. iPhone页面的常用调试方法

    在iPhone中调试,大体上与上文 安卓中的移动页面调试 类似,区别主要是iOS系统中的一些限制,导致某些工具无法使用. 本文基于此,简要介绍在iPhone中如何调试页面. 最终可以实现在Mac平台使 ...

  8. django 表单过滤与查询

    7.1 表的查询 查询 Person.objects.all() Person.objects.all()[:10] 切片操作,获取10个人,不支持负索引,切片可以节约内存 Person.object ...

  9. C&num;创建windows服务并发布

    创建window 服务 新建一个window 服务项目MyService,如下图 切换到代码视图修改. using System; using System.Collections.Generic; ...

  10. MongoDB 入门篇

    1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data),是指未经过处理的原始记录. 一般而言,数据缺乏组织及分类,无法明确的表达事 ...