最近介紹了很多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上面有2種方法獲取介面,乙個是把api獲取的資訊存到乙個xml檔案裡,然後解析xml檔案,另外乙個是直接通過介面獲取資料後解析,預設我採取第二個方法。#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
同時我獲取的是前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.confc.重啟zabbix客戶端userparameter=check_cdn[*],python /usr/local/zabbix/bin/qsmy_cdn.py
ps -ef|grep zabbix|grep -v grep|awk ''|xargs kill -9d.在zabbix的web裡,新增item如下/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
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配置使用者許可權的時候,如果給某些使用者部門管理員的話,他就可以自己修改動作,比如關閉,然後業務出現問題無法報警...