Zabbix监控nginx-rtmp status(json版)
与前面的文章 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版)的更多相关文章
- zabbix监控nginx status页面
在需要添加监控的nginx配置文件中添加下列配置 #zabbix监控nginx配置 location /nginx_status { stub_status on; access_log off; a ...
- Zabbix 监控 Nginx(四)
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [root@localhost ~]# /apps/product/ng ...
- Zabbix 监控 Nginx 状态
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...
- 使用zabbix监控nginx
在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module.因为zabbix监控nginx是根据 nginx的Stub Status模块 ...
- zabbix监控nginx连接状态(转)
zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数) ...
- 使用zabbix监控nginx的活动连接数
使用zabbix监控nginx的活动连接数 1.方法简述 zabbix可以自定义很多监控,只要是能通过命令获取到相关的值,就可以在zabbix的监控中增加该对象进行监控,在zabbix中,该对象称之为 ...
- Zabbix监控nginx性能的另外一种方式
Zabbix监控nginx性能的另外一种方式 nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有用,为了后续的zabbix监控,我们需要先启用nginx ...
- Zabbix应用四:Zabbix监控Nginx
利用Zabbix监控Nginx 一.准备nginx监控模版: 1.1.下载nginx监控模版: 点此下载 1.2.导入模版: Zabbix管理页面,选择'配置'->'模版'->'导入': ...
- zabbix监控nginx的性能
1.nginx配置 需要使用zabbix监控nginx,首先nginx需要配置ngx_status,在nginx的配置文件中加入红框中的配置,然后重启nginx如下图所示: location /ngx ...
- 【zabbix告警监控】配置zabbix监控nginx服务
zabbix监控nginx,nginx需要添加--with-http_stub_status模块 使用zabbix监控nginx,首先nginx需要配置开启ngx_status.但是我这边nginx安 ...
随机推荐
- 如何为eclipse安装合适版本的python插件pydev
pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...
- 使用WebRTC搭建前端视频聊天室——入门篇
http://segmentfault.com/a/1190000000436544 什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两 ...
- Android中使用GridView和ImageViewSwitcher实现电子相册简单功能
我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片.如下图的显示效果: 首先我们先罗列一下本次实现所 ...
- 关于SQL Server镜像的一个小误区
昨天晚上突然接到客户的电话, 说在配置了镜像的生产环境数据库下修改 “已提交读快照” 选项的时候报错, 需要先取消镜像然后再重新搭建.悲催的是这是个近TB的数据库,问我有没有什么快速的方法.于是我就问 ...
- error LNK2001: 无法解析的外部符号
1.错误描述 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl PadSystem::Private::printQS ...
- Ubuntu15.04安装不完全指南
0x00. 烧盘 使用UltraISO(破解版)烧录到U盘里,设置电脑从U盘启动,即可安装. 安装时可能出现not COM32R image的命令行,“boot:” 后面直接输入live即可解决问题. ...
- MFC画线功能总结
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...
- Java 8 指南
Benjamin Winterberg “Java is still not dead—and people are starting to figure that out.” 欢迎阅读我对 Java ...
- codevs 1472 体检
题目描述 Description 郑厂长不是正厂长 也不是副厂长 他根本就不是厂长 只是公司的一个码农 郑厂长所在的公司每一年都要组织员工体检,比如量身高体重.测血压之类的,今年也不例外. 这次总共有 ...
- Linux Posix线程条件变量
生产者消费者模型 .多个线程操作全局变量n,需要做成临界区(要加锁--线程锁或者信号量) .调用函数pthread_cond_wait(&g_cond,&g_mutex)让这个线程锁在 ...