Zabbix監控nginx-rtmp status(html版)


nginx-rtmp開啟stats

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

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

 

http://127.0.0.1:81/stat

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 $1

 

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生效

客戶端測試

 

服務器端 # 頁面監控主機添加對應的application items

zabbix后台 Configuration->Hosts->被監控的數據庫主機name->Applications Items

 

創建Graphs(視音頻碼流)

zabbix后台 Configuration->Hosts->被監控的主機name->Graphs

 

查看graph(視頻碼流)

zabbix后台 Monitoring->Graphs->對應的graph


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM