org.bithon.server.metric.handler.MongoDbMetricMessageHandler Maven / Gradle / Ivy
/*
* Copyright 2020 bithon.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bithon.server.metric.handler;
import lombok.extern.slf4j.Slf4j;
import org.bithon.component.db.dao.EndPointType;
import org.bithon.server.meta.storage.IMetaStorage;
import org.bithon.server.metric.DataSourceSchemaManager;
import org.bithon.server.metric.input.MetricSet;
import org.bithon.server.metric.storage.IMetricStorage;
import org.springframework.stereotype.Service;
import java.io.IOException;
/**
* @author [email protected]
* @date 2021/3/28 12:36
*/
@Slf4j
@Service
public class MongoDbMetricMessageHandler extends AbstractMetricMessageHandler {
public MongoDbMetricMessageHandler(IMetaStorage metaStorage,
IMetricStorage metricStorage,
DataSourceSchemaManager dataSourceSchemaManager) throws IOException {
super("mongodb-metrics",
metaStorage,
metricStorage,
dataSourceSchemaManager);
}
@Override
protected MetricSet extractEndpointLink(MetricMessage metricObject) {
return EndPointMetricSetBuilder.builder()
.timestamp(metricObject.getTimestamp())
.srcEndpointType(EndPointType.APPLICATION)
.srcEndpoint(metricObject.getApplicationName())
.dstEndpointType(EndPointType.DB_MONGO)
.dstEndpoint(metricObject.getString("server"))
// metric
.interval(metricObject.getLong("interval"))
.errorCount(metricObject.getLong("exceptionCount"))
.callCount(metricObject.getLong("callCount"))
.responseTime(metricObject.getLong("responseTime"))
.minResponseTime(metricObject.getLong("minResponseTime"))
.maxResponseTime(metricObject.getLong("maxResponseTime"))
.build();
}
}