HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/qcloud/monitor/barad/plugin/dispatcher/alarmproxy_sender.py
#!/usr/bin/env python

import sys
import os
import urllib2
import json

sys.path.append(os.getcwd() + '/../../comm/')
import gzip
import StringIO
import constant
from plugin_base import BaseSender
import cutils
from cutils import CommUtils
import datetime
import time

class AlarmProxySender(BaseSender):
    def init(self):
        self.url = self.get_config('alarmproxy_url')
        self.timeout = float(self.get_config('alarmproxy_timeout'))/1000
        self.newurl = self.url
        self.dnstime = 0
        self.max_retries = 3
        self.retry_delay = 1
    
    def send_data(self, json_data):
        if len(json_data) == 0:
            self.logger().info("alarmproxysender empty json data, ignored : %s" % json_data)
            return
        try:
            if not cutils.check_net(self.newurl, self.timeout):
                self.newurl = self.get_config('alarmproxy_url')
            req = urllib2.Request(self.newurl)
            req.add_header('Content-Type', 'application/json')
            req.add_header('Host', 'cloud.iaas.alarmproxy.woa.com')
            timeout = self.timeout
            data = json.dumps(json_data)
            for attempt in range(self.max_retries):
                try:
                    http_ret = urllib2.urlopen(req, data, timeout)
                    response = http_ret.read()
                    break
                except urllib2.URLError,e:
                    if attempt < (self.max_retries - 1):
                        self.logger().info("send data error: %s sleep 1s and retry %d/%d" % (str(e),attempt + 1, self.max_retries))
                        time.sleep(self.retry_delay)
                    else:
                        self.logger().error("send data error max_retries , error :%s, data : %s", str(e), data)
                        return
            try:
                json_resp = json.loads(response)
                retcode = int(json_resp["ErrorCode"])
                if retcode != 0:
                    self.logger().error(
                        "alarmproxy send error, retcode : %d, ErrorMsg : %s, data : %s" % (retcode, json_resp["ErrorMsg"], data))
                else:
                    self.logger().info("alarmproxy send succ, data : %s" % str(data))
            except ValueError as e:
                self.logger().error("alarmproxy send error, got a invalid json response : %s" % response)
        except urllib2.URLError as e:
            self.logger().error("alarmproxy send data error , error :%s, data : %s", str(e), data)

def main():
    pass

if __name__ == '__main__':
    main()