/** * 重新更新配置 * * @param int $interval * @access protected * @return void */ protected function _reconfig($interval) { // 缓存监控器数据 $redis = \swan\redis\sw_redis::singleton(); $monitor_data = array(); try { $monitor_data = \lib\inner_client\sw_inner_client::call('user', 'dconfig.monitor'); if (isset($monitor_data['data'])) { $monitor_data = $monitor_data['data']; } else { $monitor_data = array(); } } catch (\swan\exception\sw_exception $e) { $this->log($e->getMessage(), LOG_INFO); } $old_monitor_ids = $redis->smembers(SWAN_CACHE_MONITOR_IDS); $monitor_ids = array(); foreach ($monitor_data as $key => $value) { $cache_data = json_encode($value); $redis->set(SWAN_CACHE_MONITOR_PREFIX . $key, $cache_data, self::EXPIRE_TIME); $monitor_ids[] = $key; $redis->sadd(SWAN_CACHE_MONITOR_IDS, $key); $redis->expire(SWAN_CACHE_MONITOR_IDS, self::EXPIRE_TIME); } $del_monitor_ids = array_diff($old_monitor_ids, $monitor_ids); foreach ($del_monitor_ids as $key) { $redis->srem(SWAN_CACHE_MONITOR_IDS, $key); $redis->delete(SWAN_CACHE_MONITOR_PREFIX . $key); } // 缓存监控适配器相关数据 try { $madapter_data = \lib\inner_client\sw_inner_client::call('user', 'dconfig.madapter'); if (isset($madapter_data['data'])) { $madapter_data = $madapter_data['data']; } else { $madapter_data = array(); } } catch (\swan\exception\sw_exception $e) { $this->log($e->getMessage(), LOG_INFO); } $old_madapter_ids = $redis->smembers(SWAN_CACHE_MADAPTER_IDS); $madapter_ids = array(); foreach ($madapter_data as $madapter_id => $value) { if (isset($value['archives'])) { $cache_data = json_encode($value['archives']); $redis->set(SWAN_CACHE_MADAPTER_ARCHIVE_PREFIX . $madapter_id, $cache_data, self::EXPIRE_TIME); } if (isset($value['metrics'])) { $scache_id = SWAN_CACHE_METRIC_IDS . $madapter_id; $old_metric_ids = $redis->smembers($scache_id); $metric_ids = array(); foreach ($value['metrics'] as $val) { $cache_id = SWAN_CACHE_METRIC_PREFIX . $madapter_id . '_' . $val['metric_id']; $cache_data = json_encode($val); $redis->set($cache_id, $cache_data, self::EXPIRE_TIME); $metric_ids[] = $val['metric_id']; $redis->sadd($scache_id, $val['metric_id']); $redis->expire($scache_id, self::EXPIRE_TIME); } $del_metric_ids = array_diff($old_metric_ids, $metric_ids); foreach ($del_metric_ids as $metric_id) { $redis->srem($scache_id, $metric_id); $redis->delete(SWAN_CACHE_METRIC_PREFIX . $madapter_id . '_' . $metric_id); } } if (isset($value['basic'])) { $cache_data = json_encode($value['basic']); $redis->set(SWAN_CACHE_MADAPTER_PREFIX . $madapter_id, $cache_data, self::EXPIRE_TIME); $madapter_ids[] = $madapter_id; $redis->sadd(SWAN_CACHE_MADAPTER_IDS, $madapter_id); $redis->expire(SWAN_CACHE_MADAPTER_IDS, self::EXPIRE_TIME); } } $del_madapter_ids = array_diff($old_madapter_ids, $madapter_ids); foreach ($del_madapter_ids as $madapter_id) { $redis->srem(SWAN_CACHE_MONITOR_IDS, $madapter_id); $redis->delete(SWAN_CACHE_MADAPTER_PREFIX . $madapter_id); } }
/** * 入库设备、设备监控适配器 * * @access protected * @return void */ protected function _init_devices() { foreach ($this->__devices as $device_name => $device) { $monitors = $device['monitors']; unset($device['monitors']); $data = \lib\inner_client\sw_inner_client::call('user', 'device.add', $device); if ($data['code'] !== 10000) { throw new sw_exception("add device: {$device_name} .," . $data['msg']); } $device_id = $data['data']['device_id']; foreach ($monitors as $monitor_name => $value) { $madapter_name = $value['madapter_name']; $monitor_name = $value['name']; $attr_data = array(); foreach ($value['attrs'] as $attr_name => $attr_value) { if (!isset($this->__madapter_ids[$madapter_name]['attr_ids'][$attr_name])) { continue; } $attr_data[] = array('attr_id' => $this->__madapter_ids[$madapter_name]['attr_ids'][$attr_name], 'value' => $attr_value); } $post_data = array('device_id' => $device_id, 'madapter_id' => $this->__madapter_ids[$madapter_name]['id'], 'monitor_name' => $monitor_name, 'attr_data' => json_encode($attr_data)); $data = \lib\inner_client\sw_inner_client::call('user', 'dmonitor.add', $post_data); if ($data['code'] !== 10000) { throw new sw_exception("add device: {$device_name} .,monitor_name: {$monitor_name}" . $data['msg']); } $this->__monitor_ids[$device_name][$monitor_name] = $data['data']; } } }