zabbix企業應用之監控CDN頻寬

2021-09-04 16:11:05 字數 3455 閱讀 6922

最近介紹了很多ansible的使用案例,這次就回歸正軌,介紹如何使用zabbix監控cdn頻寬,做到在頻寬出現異常的時候及時知曉,訪問頻寬異常造成的經濟損失。

這裡以藍汛cdn為例,監控的方法是通過cdn給與的api介面。備註:目前藍汛api介面只能檢視單獨頻道的頻寬,無法檢視所有頻道的,並且頻道id還需要你自己或者客服幫你查下,十分不方便。

1、api介面資訊為:

=true&layerdetail=true&username=***&pass=***&billingid=123&starttime=2

01009190000&endtime=201009192359

說明:1. 目前提供兩種協議的介面:一種是http,另一種是https,可根據需要自

行決定使用任何其中一種

2. 使用者可以通過post 或get 方式訪問協議的介面

(二) 引數說明:

type=monitor【必選引數】:查詢型別

withtime=true【可選引數】:用來表明查詢結果中是否顯示詳細時間戳

layerdetail=true【可選引數】:用來表明查詢結果中是否顯示分層資料

username【必選引數】:使用者名稱,客戶在portal 中的登入賬號

pass【必選引數】:密碼,客戶在portal 中的登入密碼

billingid【必選引數】:提供服務的計費單元id, 為chinacache 定義的計費單元編

號。當有多個計費單元需要查詢時, 需要以『 & 』 分隔, 例如:

billingid=123&billingid=456

starttime【必選引數】:開始時間,精確到分鐘

1. 格式:年月日時分(12 位,4 位年,2 位月,2 位日,2 位小時,2 位分鐘)

2. 例子:201009190000,表示2010 年9 月19 日0 點0 分

endtime【必選引數】:結束時間,精確到分鐘

1. 格式:年月日時分(12 位,4 位年,2 位月,2 位日,2 位小時,2 位分鐘)

2. 例如:201009192359,表示2010 年9 月19 日23 點59 分

其他的資訊如何你使用藍汛或者其他cdn,請自行管他們要api文件。

2、下面是我通過api獲取某頻道cdn頻寬指令碼(python的)

#!/bin/bash

#encoding=utf-8

import datetime

import urllib

import urllib2

api_user='***x'

api_passwd='***x'

billid='3926x'

now_time=datetime.datetime.now()

starttime=(now_time - datetime.timedelta(seconds=300)).strftime('%y%m%d%h%m')

endtime=(datetime.datetime.now()).strftime('%y%m%d%h%m')

url="=true&layerdetail=true&username=%s&pass=%s&billingid=%s&starttime=%s&endtime=%s"%(api_user,api_passwd,billid,starttime,endtime)

#get *** product xml

result = urllib2.urlopen(url, timeout=5).read()

#follow is use xml

'''from xml.etree import elementtree as et

from xml.dom import minidom

per=minidom.parsestring(result)

per=et.parse('qsmy.xml')

p=per.findall('/total')

for oneper in p: 

for child in oneper.getchildren():

if child.tag == 'maxdata':

value = round(int(child.text)/float(1000)/float(1000),2)

print value

'''#follow is use string

import xml.etree.elementtree 

per  = xml.etree.elementtree.fromstring(result)

p=per.findall('total')

for oneper in p:

for child in oneper.getchildren():

if child.tag == 'maxdata':

value = int(child.text)/1000/1000

print value

上面有2種方法獲取介面,乙個是把api獲取的資訊存到乙個xml檔案裡,然後解析xml檔案,另外乙個是直接通過介面獲取資料後解析,預設我採取第二個方法。

同時我獲取的是前5分鐘最大的資料,並且單位為m。

3、下面是web裡執行api獲取結果展示

4、然後在命令列裡執行結果展示

5、結合zabbix監控

a.把此指令碼放到/usr/local/zabbix/bin/目錄下,給與755許可權與zabbix使用者與組許可權。

b.在zabbix_agentd.conf裡配置

[root@puppet bin]# tail -n 1 /usr/local/zabbix/conf/zabbix_agentd.conf 

userparameter=check_cdn[*],python /usr/local/zabbix/bin/qsmy_cdn.py

c.重啟zabbix客戶端

ps -ef|grep zabbix|grep -v grep|awk ''|xargs kill -9

/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf

d.在zabbix的web裡,新增item如下

e.trigger配置為

f.graphs的話自己配置

g.zabbix裡影象顯示為

zabbix企業應用之監控磁碟讀寫狀態

最近公司一台oracle伺服器的乙個磁碟出現read only,導致資料不可寫,但此伺服器安裝的zabbix監控並未報警,所以針對此情況,新增了監控系統磁碟讀寫狀態的監控。下面是效果圖 如果返回值0代表磁碟都是rw狀態可以正常讀寫,返回值1的話,代表磁碟是ro狀態,會報警。如何實現 一 客戶端 1 ...

zabbix企業應用之分布式監控proxy

先簡單的介紹一下zabbix分布式的2種實現方式proxy與node的優缺點 proxy zabbix proxy 是乙個或多個從監控裝置收集監測資料和傳送到zabbixserver 的程序,屬於代表zabbix server 的執行,所有收集到的資料被暫時存放在 伺服器,之後統一由 伺服器 給za...

zabbix企業應用之監控動作是否有被關閉

當前我監控1000 的伺服器,動作有近200個,監控方式有簡訊 郵件與語音報警 如果動作配置有問題或者某個動作被關閉,就會導致某些報警無法觸發,不能及時收到報警通知並處理。而且zabbix配置使用者許可權的時候,如果給某些使用者部門管理員的話,他就可以自己修改動作,比如關閉,然後業務出現問題無法報警...