zabbix 监控nginx-rtmp流媒体直播流

nginx-rtmp开启stats

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

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

定义item key

userparameter_live.conf

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

stream.py

#!/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()

重启客户端使key生效

客户端测试

ps: 完整的ansible安装脚本

  https://github.com/fantast-dd/ansible/tree/master/roles/zabbix_stream

时间: 2024-08-07 17:46:22

zabbix 监控nginx-rtmp流媒体直播流的相关文章

Zabbix监控nginx服务进程状态

zabbix监控nginx需要开启nginx status,要确认nginx编译http_sub_module模块! 1.检查当前nginx是否安装配置http_sub_module模块 # nginx -V Tengine version: Tengine/1.5.2 (nginx/1.2.9) built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) TLS SNI support enabled configure arguments: --p

zabbix监控nginx

上一篇介绍了zabbix安装,这里接着说说zabbix监控nginx 安装zabbix-agent 在实际应用中,我们server和agent部在同一机器上,所以需要分开安装,其实上一篇已经说了,在编译安装zabbix-server的时候也安装了zabbix-agent,如果只安装zabbix-agent # 切换到zabbix解压目录 cd zabbix-3.0.3 # 编译配置 ./configure --prefix=/usr/local/zabbix-agent --enable-age

Zabbix 监控 Nginx 状态

1.获取 Nginx 状态条件( 需要nginx安装模块) [localhost]#/usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_sta

zabbix监控nginx性能状态

nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控,来发现出来出现的问题.nginx处理流程图具体如下: 注释:Accepts(接受).Handled(已处理).Requests(请求数)是一直在增加的计数器.Active(活跃).Waiting(等待).Reading(读).Writing(写)随着请求量而增减 名称 描述 指标类型 Accepts(接受) NGINX 所接受的客户端连接数 资源: 功能 Handled(已处理) 成功的客户端连接数 资源: 功能

zabbix监控nginx连接状态

zabbix学习笔记:zabbix监控nginx连接状态 zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数).下面我们使用zabbix监控nginx. nginx的安装 如果想要查看nginx的服务状态,在对nginx进行源码安装的时候要选中–with-http_stub_status_module模块. 1.解压安装包: [[email prot

zabbix 监控Nginx

一.开启nginx_status页面 server {  \\定义一个虚拟主机     listen 80 default_server;  \\定义监听地址     server_name _;   \\定义主机名     location = /ngx_status {         stub_status on;   \\开启status         access_log off;    \\关闭访问日志         allow 127.0.0.1;   \做访问权限控制    

zabbix监控nginx状态

一.zabbix客户端配置 首先修改一下zabbix客户端的配置,习惯上将zabbix的配置文件拷贝到自建的/etc/zabbix/目录,方便管理: [[email protected] ~]# sed -e '/^$/d;/^#/d'  /etc/zabbix/zabbix_agentd.conf PidFile=/tmp/zabbix_agentd.pid LogFile=/tmp/zabbix_agentd.log Server=192.168.199.79 ServerActive=12

zabbix监控nginx,Mysqld,Php状态

zabbix监控nginx状态 首先,在nginx的配置文件中添加如下一段代码 server  {   listen localhost:80;   server_name localhost; location /nginxstatus {   stub_status on;   access_log off;   allow 127.0.0.1; allow 192.168.1.165;    deny all;   }   } 保存之后重启nginx 在zabbix脚本目录下创建脚本监控z

Zabbix 监控 Nginx(四)

简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [[email protected] ~]# /apps/product/nginx/sbin/nginx -V nginx version: nginx/1.8.1 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI

zabbix监控nginx连接状态(转)

zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数).下面我们使用zabbix监控nginx. nginx的安装 如果想要查看nginx的服务状态,在对nginx进行源码安装的时候要选中–with-http_stub_status_module模块. 1.解压安装包: [[email protected] mnt]# tar xvf nginx-1.