欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

openfalcon - centos 5.5 + python 2.4 running falcon agent

程序员文章站 2022-03-04 17:14:15
...
#!/usr/bin/python
#coding: utf-8

import os, sys, re
import simplejson as json
#import request as requests
import time
import urllib2, base64
from socket import *
import commands

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 = "192.168.78.140"
    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("./tcp.txt") as f:
#    for line in f:
#        results = re.findall("(\S+)",line)
#        print results
#        host = results[0]
#        port = int(results[1])
#   description = results[2]
#   projectname = results[3]
#        tags = "project=ops,"
#        tags += "host=%s,port=%s,description=%s,project=%s"%(host,port,description,projectname)
#        value = checkTcpPort(host,port)
#        p.append(zuzhuangData(tags,value))

for line in open("tcp.txt"):
    results = re.findall("(\S+)",line)
    if len(results) != 4:
        pass
    else:
        print results
        host = results[0]
        port = int(results[1])
        description = results[2]
        projectname = results[3]
        tags = "host=%s,port=%s,description=%s,project=%s"%(host,port,description,projectname)
        value = checkTcpPort(host,port)
        p.append(zuzhuangData(tags,value))

#print json.dumps(p, sort_keys=True,indent = 4)

#print p

#print p

file_object = open('data.json', 'w')
file_object.write(json.dumps(p, sort_keys=True,indent=4))
file_object.close()

#print commands.getoutput("""curl -H "Content-Type: application/json" -X POST -d "%s" http://127.0.0.1:1988/api/login -vvv"""%p)
print commands.getoutput(""" curl -X POST -H "Content-Type: application/json" -d @./data.json http://127.0.0.1:1988/v1/push """)

os.remove("./data.json")
#uploadToAgent(p)

面临的最大问题

就是python2.4下面模块不全,只能东拼西凑,加上执行系统命令了

解决办法

  • 可以通过下载下面的tar.gz,然后 python setup.py install
setuptools==1.4 
wget https://github.com/pypa/setuptools/archive/1.4.tar.gz
pip==1.0 
wget https://pypi.python.org/packages/25/57/0d42cf5307d79913a082c5c4397d46f3793bc35e1138a694136d6e31be99/pip-1.1.tar.gz --no-check-certificate
simplejson
  • 别名引入
import simplejson as json
  • 调用系统命令执行curl,post数据到数据接收服务
curl -X POST -H "Content-Type: application/json" -d @./data.json http://127.0.0.1:1988/v1/push
相关标签: falcon