1. 程式人生 > >openfalcon 新增監控遠端tcp埠異常情況

openfalcon 新增監控遠端tcp埠異常情況

監控程式碼

#!/usr/bin/env python
#coding: utf-8

import os, sys, re
import json
import requests
import time
import urllib2, base64
from socket import *

def checkTcpPort(host,port):
    result = int
    try:
        s = socket(AF_INET, SOCK_STREAM)
        s.settimeout(1)
        code = s.connect_ex((host,port))
        #print code
s.close() result = code except Exception, e: result = 111 return result # 上報 def uploadToAgent(p): method = "POST" handler = urllib2.HTTPHandler() opener = urllib2.build_opener(handler) url = "http://127.0.0.1:1988/v1/push" request = urllib2.Request(url, data=json.dumps(p)) request.add_header('Content-Type'
,'application/json') request.get_method = lambda: method try: connection = opener.open(request) except urllib2.HTTPError,e: connection = e if connection.code == 200: print connection.read() else: print '{"err":1,"msg":"%s"}' % connection print "開始 "
# 準備上報資料 def zuzhuangData(tags = '', value = ''): endpoint = "10.0.2.90" metric = "userdefine" key = "remotetcpcheck" timestamp = int(time.time()) step = 60 vtype = "GAUGE" i = { 'Metric' :'%s.%s'%(metric,key), 'Endpoint': endpoint, 'Timestamp': timestamp, 'Step': step, 'value': value, 'CounterType': vtype, 'TAGS': tags } return i p = [] with open("./ip.txt") as f: for line in f: results = re.findall("(\S+)",line) print results host = results[0] port = int(results[1]) description = results[2] tags = "host=%s,port=%s,description=%s"%(host,port,description) value = checkTcpPort(host,port) p.append(zuzhuangData(tags,value)) print json.dumps(p, sort_keys=True,indent = 4) uploadToAgent(p)
  • ips.txt
www.baidu.com   80  百度
www.sina.com.cn 80  新浪
  • 新增template
    這裡寫圖片描述

  • 繫結到host
    這裡寫圖片描述

  • 別忘了新增endpoint
    這裡寫圖片描述

  • 看到指標已經上報
    這裡寫圖片描述

  • 看到已經收到了報警右鍵
    這裡寫圖片描述

  • 修改報警設定

如果value0,說明埠一切正常
如果value11,說明不通,或者超市
如果value111,這個是我們自己定義的,說明有了其他異常

結果就是如下的截圖:

這裡寫圖片描述