与前面的文章 zabbix监控nginx-rtmp status(html版)区别只在于取值的页面不一样

http://127.0.0.1:81/control/get/all_streams

stat状态值详解

name:application名

static_pulls:从编码器拉流模式

pushes:编码器推流模式

{

  name:流名字

  audio_bitrate:音频码流

  video_bitrate:视频码流

  active:1(流up)0(流down)

}

stream.py  # 先判断active是否up,up则取值视音频码流,down则返回0

#!/usr/bin/python
# -*- coding: utf-8 -*-
# date 2016/10/27 author pdd '''
curl的直播流状态值写入本地CACHE文件 后续具体的直播频道流值从该文件获取 CACHE文件CACHETTL秒更新一次(基于文件属性ctime)
http://127.0.0.1:81/control/get/all_streams
''' import os
import sys
import time
import json
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 __request(self):
try:
r = urllib2.urlopen(self.url,timeout=1)
except urllib2.URLError, e:
print 0 # 给zabbix触发直播流down报警的值
exit(1) # 异常退出
else:
stream = json.loads(r.read())
channel = stream["servers"][0]["applications"][0]["pushes"] # 选择推流模式数据
clear = {}
for i in channel:
clear.update({i["name"]:{ "active":i["active"],"bitrate":(i["audio_bitrate"]+i["video_bitrate"])}})
with open(self.CACHE,'w') as f:
f.write(json.dumps(clear)) # 把clear(dict类型)序列化后写入CACHE文件 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:
self.__request() def get_status(self):
self.__generate_cache()
with open(self.CACHE,'r') as f:
r = json.load(f) # 从CACHE文件中读取字符串并反序列化
if r[self.STREAM]["active"] == 1:
print r[self.STREAM]["bitrate"]
else:
print 0 if __name__ == "__main__":
url = "http://127.0.0.1:81/control/get/all_streams" # 直播频道流状态值url
CACHETTL = 60 # 本地CACHE文件更新时间间隔
CACHE = "/tmp/pyrtmp-status.cache" # 本地CACHE文件绝对路径
STREAM = sys.argv[1] # 某个具体直播频道
status = Live(url,CACHETTL,CACHE,STREAM)
status.get_status()

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

  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连接状态(转)

    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应用四: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. 如何为eclipse安装合适版本的python插件pydev

    pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...

  2. 使用WebRTC搭建前端视频聊天室——入门篇

    http://segmentfault.com/a/1190000000436544 什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两 ...

  3. Android中使用GridView和ImageViewSwitcher实现电子相册简单功能

    我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片.如下图的显示效果: 首先我们先罗列一下本次实现所 ...

  4. 关于SQL Server镜像的一个小误区

    昨天晚上突然接到客户的电话, 说在配置了镜像的生产环境数据库下修改 “已提交读快照” 选项的时候报错, 需要先取消镜像然后再重新搭建.悲催的是这是个近TB的数据库,问我有没有什么快速的方法.于是我就问 ...

  5. error LNK2001: 无法解析的外部符号

    1.错误描述 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl PadSystem::Private::printQS ...

  6. Ubuntu15.04安装不完全指南

    0x00. 烧盘 使用UltraISO(破解版)烧录到U盘里,设置电脑从U盘启动,即可安装. 安装时可能出现not COM32R image的命令行,“boot:” 后面直接输入live即可解决问题. ...

  7. MFC画线功能总结

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...

  8. Java 8 指南

    Benjamin Winterberg “Java is still not dead—and people are starting to figure that out.” 欢迎阅读我对 Java ...

  9. codevs 1472 体检

    题目描述 Description 郑厂长不是正厂长 也不是副厂长 他根本就不是厂长 只是公司的一个码农 郑厂长所在的公司每一年都要组织员工体检,比如量身高体重.测血压之类的,今年也不例外. 这次总共有 ...

  10. Linux Posix线程条件变量

    生产者消费者模型 .多个线程操作全局变量n,需要做成临界区(要加锁--线程锁或者信号量) .调用函数pthread_cond_wait(&g_cond,&g_mutex)让这个线程锁在 ...