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; }
<?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'); } } } } }
$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;
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) {
} $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;