use of com.dtstack.taier.develop.dto.devlop.SyncStatusLogInfoVO in project Taier by DTStack.
the class BatchServerLogService method formatPerfLogInfo.
public String formatPerfLogInfo(final String engineJobId, final String jobId, final long startTime, final long endTime, final Long tenantId) {
final ScheduleJob job = scheduleJobService.getByJobId(jobId);
if (Objects.isNull(job)) {
LOGGER.info("can not find job by id:{}.", jobId);
throw new RdosDefineException(ErrorCode.CAN_NOT_FIND_JOB);
}
if (job.getTaskId() == null || job.getTaskId() == -1) {
throw new RdosDefineException(ErrorCode.CAN_NOT_FIND_TASK);
}
BatchTask batchTaskById = batchTaskService.getBatchTaskById(job.getTaskId());
// prometheus的配置信息 从控制台获取
final Pair<String, String> prometheusHostAndPort = this.getPrometheusHostAndPort(tenantId, batchTaskById.getTaskParams());
if (prometheusHostAndPort == null) {
return "promethues配置为空";
}
final PrometheusMetricQuery prometheusMetricQuery = new PrometheusMetricQuery(String.format("%s:%s", prometheusHostAndPort.getKey(), prometheusHostAndPort.getValue()));
// 之后查询是可以直接获取最后一条记录的方法
// 防止数据同步执行时间太长 查询prometheus的时候返回exceeded maximum resolution of 11,000 points per timeseries
final long maxGapTime = 60 * 1000 * 60 * (long) 8;
long gapStartTime = startTime;
if (endTime - startTime >= maxGapTime) {
// 超过11,000 points 查询1小时间隔内
gapStartTime = endTime - 60 * 1000 * 60;
}
final IMetric numReadMetric = MetricBuilder.buildMetric("numRead", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric byteReadMetric = MetricBuilder.buildMetric("byteRead", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric readDurationMetric = MetricBuilder.buildMetric("readDuration", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric numWriteMetric = MetricBuilder.buildMetric("numWrite", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric byteWriteMetric = MetricBuilder.buildMetric("byteWrite", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric writeDurationMetric = MetricBuilder.buildMetric("writeDuration", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final IMetric numErrorMetric = MetricBuilder.buildMetric("nErrors", engineJobId, gapStartTime, endTime, prometheusMetricQuery);
final SyncStatusLogInfoVO formatPerfLogInfo = this.getFormatPerfLogInfo(numReadMetric, byteReadMetric, readDurationMetric, numWriteMetric, byteWriteMetric, writeDurationMetric, numErrorMetric);
return formatPerfLogInfo.buildReadableLog();
}
Aggregations