Example #1
0
 public function start($charts)
 {
     /*循环每次一张图*/
     foreach ($charts as $chart) {
         $this->chart = $chart;
         $this->i = 0;
         $this->graph = array();
         $this->chartData = array();
         /*参数检查*/
         if (!isset($this->cfg_alert[$chart['report_id']])) {
             continue;
         }
         $this->alert = $this->cfg_alert[$chart['report_id']];
         /*当类型为global时,target_id置1,
          * 当类型为instance时,target_id替换成instance_id,*/
         switch ($this->alert['target_type']) {
             case 'global':
                 $chart['target_id'] = 1;
                 break;
             case 'instance':
                 /*某个service下的所有readable/wirtable的instance情况*/
                 if (empty($chart['target_id'])) {
                     continue;
                 }
                 $service_id = $chart['target_id'];
                 $chart['target_id'] = array();
                 foreach ($service_id as $target) {
                     $instances = pdo_get_mapping_info_by_service($this->pdo, $target);
                     if (!empty($instances)) {
                         foreach ($instances as $i) {
                             array_push($chart['target_id'], $i['instance_id']);
                         }
                     }
                 }
                 break;
             case 'host-instance':
                 /*某个host上的所有instance的情况*/
                 if (empty($chart['target_id'])) {
                     continue;
                 }
                 $host_id = $chart['target_id'];
                 $chart['target_id'] = array();
                 foreach ($host_id as $target) {
                     $instances = get_instance_list_complex($this->pdo, array('host_id' => $target));
                     /*某host上所有的instance*/
                     if (!empty($instances)) {
                         foreach ($instances as $i) {
                             array_push($chart['target_id'], $i['instance_id']);
                         }
                     }
                 }
         }
         /**/
         if (empty($chart['target_id'])) {
             continue;
         }
         if (is_array($chart['target_id'])) {
             /*当target_id为数组时*/
             foreach ($chart['target_id'] as $target_id) {
                 $this->draw($target_id);
             }
         } else {
             /*当target_id不为数组时*/
             $this->draw($chart['target_id']);
         }
         $this->ret[] = array('num' => count($this->graph), 'data' => array('div' => $this->chart['div_id'], 'name' => $this->alert['name'], 'graph' => $this->graph, 'chartData' => $this->merge_key_val($this->chartData)));
     }
     //print_r($this->ret);
     return $this->ret;
 }
Example #2
0
<?php

// 所有running & readable 的instance
$base = dirname(__FILE__);
$solr_root = substr($base, 0, strrpos($base, 'scripts'));
$script_root = $solr_root . "/scripts";
include_once $script_root . "/common.php";
/*running的readable的instance的命中率*/
$instance_list_running = get_instance_list_complex($link, array());
if ($instance_list_running) {
    foreach ($instance_list_running as $instance) {
        $url = "http://" . $instance['host_ip'] . ":" . $instance['port_num'] . "/solr/admin/mbeans?stats=true&wt=json";
        $result = curl_get_content($url);
        $result = json_decode($result, true);
        $cache = isset($result['solr-mbeans'][7]) ? $result['solr-mbeans'][7] : null;
        if ($cache) {
            foreach ($cache as $k => $c) {
                if (isset($c['stats']['hitratio'])) {
                    $hitratio = $c['stats']['hitratio'];
                    add_status_log($link_log, $cfg['idc'], $cfg['default_host'], 'instance', $k, $instance['instance_id'], $hitratio, date('Y-m-d H:i:00'), 'status_log_instance_hits');
                }
            }
        }
    }
}
Example #3
0
         $instance_attr['use_memory'] = $cfg['auto_instance_mem'];
         $instance_id = insert_instance($pdo, $instance_attr);
         if ($instance_id) {
             $jetty_attr['jetty.port'] = $port_num;
             $jetty_attr['instance_id'] = $instance_id;
             insert_jetty_config($pdo, $jetty_attr);
         }
         if (lock_instance($pdo, $instance_id)) {
             insert_action_queue($pdo, INSTANCE_DEPLOY, $instance_id, $username);
             insert_action_queue($pdo, INSTANCE_RECONFIGURE_JETTY, $instance_id, $username);
         }
         //bind service
         $lb_weight = '';
         update_instance_lb_weight($pdo, $instance_id, $lb_weight);
         add_instance_into_service($pdo, $instance_id, $service_id, $username);
         $instance_list = get_instance_list_complex($pdo, array('service_id' => $service_id));
     }
     $template = 'service_done';
     //msg_redirect('service_detail.php?service_id='.$service_id);
     break;
 case 'change_mode':
     //service.php?action=change_mode&service_id=$service_id
     $service_id = $params['service_id'];
     $username = check_login($req_url);
     $service_info = pdo_get_service_byid($pdo, $service_id);
     $zk_host = get_host_name($pdo, $cfg['zk_host_id']);
     if ($zk_host && $service_info) {
         if ($service_info['zk']) {
             $zk = '';
         } else {
             $zk = $zk_host . ":10" . $service_id;
Example #4
0
if ($tab == '1') {
    $service_mapping = pdo_get_mapping($pdo, $service_id);
    if ($service_mapping) {
        foreach ($service_mapping as $v) {
            $qlp['instance_id'][] = $v['instance_id'];
        }
    }
    $qlp['service_id'] = array($service_id);
    $queue_list = get_queue_list_complex2($pdo, 0, 15, $qlp);
    $solr_config = pdo_get_solr_config($pdo, $service_id);
    $solr_config = json_decode($solr_config['config_json'], true);
    $dataimport = pdo_get_dataimport($pdo, $service_id);
}
//instance list & host list - tab2
if (in_array($tab, array('2', '4'))) {
    $instance_list = get_instance_list_complex($pdo, array('service_id' => $service_id, 'with_unbind' => '1'));
    $host_list = change_array_key(get_host_list($pdo), 'host_id');
}
//solr_schema - tab1/2
if (in_array($tab, array('1', '3'))) {
    $solr_schema = pdo_get_solr_schema($pdo, $service_id);
    if ($service_info['schema_type'] == 1) {
        $solr_schema = json_decode($solr_schema['schema_json'], true);
    } elseif ($service_info['schema_type'] == 2) {
        $schema_info = $solr_schema['schema_json'];
        $doc = new DomDocument();
        $doc->loadXML($schema_info);
        $xpath = new DomXPath($doc);
        $query = '//field';
        $nodelist = $xpath->query($query);
        foreach ($nodelist as $key => $node) {
Example #5
0
     }
     $memory_logs_chart = build_chart_data($memory_logs, $host_memory * 0.9);
     $chart_mem['title'] = "memory used";
     $chart_mem['legend_y'] = "used(GB)";
     $chart_mem['legend_x'] = "";
     $chart_mem['values'] = array($memory_logs_chart['data'], $memory_logs_chart['deadline']);
     $chart_mem['values_key'] = array('memory used', 'deadline');
     $chart_mem['range_max'] = max($memory_logs_chart['max'] + 1, 0.1);
     $chart_mem['range_step'] = $chart_mem['range_max'] / 10;
     $chart_mem['show_step'] = 4;
     $json_mem = create_chart_data($chart_mem);
     $template = 'host_detail';
     break;
 default:
     $host_list = get_host_list($pdo);
     $host_instance_map = classify_instance(get_instance_list_complex($pdo));
     if (!$host_list) {
         $host_list = array();
     }
     foreach ($host_list as $i => $host) {
         $host_list[$i]["host_memory_gb"] = round($host["host_memory"] / 1024, 2);
         $instances = isset($host_instance_map[$host["host_id"]]) ? $host_instance_map[$host["host_id"]] : array();
         $host_list[$i]["used_memory"] = 0;
         foreach ($instances as $instance) {
             if ($instance['instance_status'] == 2) {
                 $host_list[$i]["used_memory"] += $instance["use_memory"];
             }
         }
         $host_list[$i]["available_memory"] = $host_list[$i]["host_memory_gb"] - $host_list[$i]["used_memory"];
         if ($host_list[$i]["used_memory"] == 0) {
             $host_list[$i]["used_pct"] = 0;