Переглянути джерело

Improve log info and condition about fetching metrics (#219)

- Receiving "No metrics" response won't cause error log
- Improve log about fetching metrics
master
xcaspar Eric Zhao 6 роки тому
джерело
коміт
ef96b15f22
2 змінених файлів з 14 додано та 6 видалено
  1. +9
    -0
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/discovery/MachineInfo.java
  2. +5
    -6
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/metric/MetricFetcher.java

+ 9
- 0
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/discovery/MachineInfo.java Переглянути файл

@@ -130,4 +130,13 @@ public class MachineInfo implements Comparable<MachineInfo> {
public int hashCode() {
return Objects.hash(app, ip, port);
}

/**
* Information for log
*
* @return
*/
public String toLogString() {
return app + "|" + ip + "|" + port + "|" + version;
}
}

+ 5
- 6
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/metric/MetricFetcher.java Переглянути файл

@@ -64,15 +64,14 @@ import org.springframework.stereotype.Component;
@Component
public class MetricFetcher {

private static Logger logger = LoggerFactory.getLogger(MetricFetcher.class);
private static final int HTTP_OK = 200;

public static final long MAX_CLIENT_LIVE_TIME_MS = 1000 * 60 * 5;
public static final String NO_METRICS = "No metrics";
private static final int HTTP_OK = 200;
private static final long MAX_LAST_FETCH_INTERVAL_MS = 1000 * 15;
private static final long FETCH_INTERVAL_SECOND = 6;
private static final Charset DEFAULT_CHARSET = Charset.forName(SentinelConfig.charset());
private final static String METRIC_URL_PATH = "metric";
private static Logger logger = LoggerFactory.getLogger(MetricFetcher.class);
private final long intervalSecond = 1;

private Map<String, AtomicLong> appLastFetchTime = new ConcurrentHashMap<>();
@@ -279,7 +278,7 @@ public class MetricFetcher {
} catch (Exception ignore) {
}
String body = EntityUtils.toString(response.getEntity(), charset != null ? charset : DEFAULT_CHARSET);
if (StringUtil.isEmpty(body)) {
if (StringUtil.isEmpty(body) || body.startsWith(NO_METRICS)) {
//logger.info(machine.getApp() + ":" + machine.getIp() + ":" + machine.getPort() + ", bodyStr is empty");
return;
}
@@ -322,7 +321,7 @@ public class MetricFetcher {
map.put(key, entity);
}
} catch (Exception e) {
logger.info("handleBody line error: {}", line);
logger.warn("handleBody line exception, machine: {}, line: {}", machine.toLogString(), line);
}
}
}


Завантаження…
Відмінити
Зберегти