Example #1
0
 /**
  * online debug推送到监控中心
  * @return void
  */
 public static function sendOnlineDebug()
 {
     if (1 === DAGGER_ONLINE_DEBUG && defined("DAGGER_ALARM_DEBUG_API")) {
         $post = array('pid' => defined('PROJECT_ID') ? PROJECT_ID : 1, 'domain' => $_SERVER['HTTP_HOST'], 'debug_msg' => json_encode(self::$onlineDebugData), 'html' => ob_get_contents(), 'request' => json_encode(apache_request_headers()), 'response' => json_encode(apache_response_headers()), 'client_ip' => BaseModelIp::getClientIp(), 'remote_addr' => $_SERVER['REMOTE_ADDR']);
         BaseModelHttp::sendRequest(DAGGER_ALARM_DEBUG_API, $post);
     }
 }
Example #2
0
 /**
  * 临时日志
  * @param string $type 类型
  * @param string $log 日志内容
  * @return void
  */
 public static function sendTmpLog($type, $log)
 {
     if (defined('DAGGER_ALARM_TMPLOG_URL')) {
         BaseModelHttp::sendRequest(DAGGER_ALARM_TMPLOG_URL, array('type' => $type, 'log' => $log));
     }
 }
//__autoload函数
require PATH_ROOT . 'config/DBConfig.php';
//载入数据库配置
//==========取代global.php功能==========//
$time = time();
$db = new QueueRuntimeModelDB();
$sql = "SELECT * FROM " . $db->getTableName() . " WHERE `begin_time` < ?";
$data = $db->getData($sql, array($time - 60 * 50));
if (!empty($data)) {
    $ndb = new ProjectModelDB();
    $queueConfigDB = new QueueConfigModelDB();
    foreach ($data as $v) {
        $row = $ndb->getRow("SELECT `id`,`key`,`name` FROM `" . $ndb->getTableName() . "` WHERE `id` = ?", array($v['project_id']));
        $task = trim(array_shift(explode(' ', $v['task'])));
        $runTimeConfig = $queueConfigDB->getFirst("SELECT `time` FROM `" . $queueConfigDB->getTableName() . "` WHERE `project_id` = ? AND `task` = ?", array($v['project_id'], $task));
        if (empty($runTimeConfig)) {
            $runTimeConfig = 50;
        }
        $runTime = intval(($time - $v['begin_time']) / 60);
        if ($runTime >= $runTimeConfig) {
            $message = "[{$row['name']}]的队列[{$v['task']}]于[" . date("Y-m-d H:i:s", $v['begin_time']) . "]在[{$v['ip']}]开始运行,目前已超过{$runTime}分钟!";
            // 多个监控点,同一次错误只提醒一次
            $mc = new MyMemcache();
            $mcKey = md5($message . $row['key'] . $row['id']);
            if ($mc->addPlain($mcKey, 1, 50)) {
                BaseModelHttp::sendRequest(array('http://i.alarm.mix.sina.com.cn/alarm.php', array('pid' => $row['id'], 'key' => $row['key'], 'sys_mid' => 8, 'code' => 1, 'message' => $message, 'name' => '队列超时', 'client_ip' => '127.0.0.1')));
                // BaseModelHttp::sendRequest(array('http://i.alarm.mix.sina.com.cn/alarm.php',array('pid'=>1,'key'=>'b662346b2d7da90b8413a5ee095c8ff4','sys_mid'=>8,'code'=>1,'message'=>$message,'name'=>'队列超时','client_ip'=>'127.0.0.1')));
            }
        }
    }
}