/*
* Copyright 2017 NAVER Corp.
*
* 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 com.navercorp.pinpoint.profiler.monitor.collector;
import com.google.inject.Inject;
import com.navercorp.pinpoint.profiler.context.module.AgentId;
import com.navercorp.pinpoint.profiler.context.module.AgentStartTime;
import com.navercorp.pinpoint.profiler.monitor.collector.activethread.ActiveTraceMetricCollector;
import com.navercorp.pinpoint.profiler.monitor.collector.cpu.CpuLoadMetricCollector;
import com.navercorp.pinpoint.profiler.monitor.collector.datasource.DataSourceMetricCollector;
import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.JvmGcMetricCollector;
import com.navercorp.pinpoint.profiler.monitor.collector.response.ResponseTimeMetricCollector;
import com.navercorp.pinpoint.profiler.monitor.collector.transaction.TransactionMetricCollector;
import com.navercorp.pinpoint.thrift.dto.TAgentStat;
/**
* @author HyunGil Jeong
*/
public class AgentStatCollector implements AgentStatMetricCollector<TAgentStat> {
private final String agentId;
private final long agentStartTimestamp;
private final JvmGcMetricCollector jvmGcMetricCollector;
private final CpuLoadMetricCollector cpuLoadMetricCollector;
private final TransactionMetricCollector transactionMetricCollector;
private final ActiveTraceMetricCollector activeTraceMetricCollector;
private final DataSourceMetricCollector dataSourceMetricCollector;
private final ResponseTimeMetricCollector responseTimeMetricCollector;
@Inject
public AgentStatCollector(
@AgentId String agentId,
@AgentStartTime long agentStartTimestamp,
JvmGcMetricCollector jvmGcMetricCollector,
CpuLoadMetricCollector cpuLoadMetricCollector,
TransactionMetricCollector transactionMetricCollector,
ActiveTraceMetricCollector activeTraceMetricCollector,
DataSourceMetricCollector dataSourceMetricCollector,
ResponseTimeMetricCollector responseTimeMetricCollector) {
if (agentId == null) {
throw new NullPointerException("agentId must not be null");
}
if (jvmGcMetricCollector == null) {
throw new NullPointerException("jvmGcMetricCollector must not be null");
}
if (cpuLoadMetricCollector == null) {
throw new NullPointerException("cpuLoadMetricCollector must not be null");
}
if (transactionMetricCollector == null) {
throw new NullPointerException("transactionMetricCollector must not be null");
}
if (activeTraceMetricCollector == null) {
throw new NullPointerException("activeTraceMetricCollector must not be null");
}
if (dataSourceMetricCollector == null) {
throw new NullPointerException("dataSourceMetricCollector must not be null");
}
if (responseTimeMetricCollector == null) {
throw new NullPointerException("responseTimeMetricCollector may not be null");
}
this.agentId = agentId;
this.agentStartTimestamp = agentStartTimestamp;
this.jvmGcMetricCollector = jvmGcMetricCollector;
this.cpuLoadMetricCollector = cpuLoadMetricCollector;
this.transactionMetricCollector = transactionMetricCollector;
this.activeTraceMetricCollector = activeTraceMetricCollector;
this.dataSourceMetricCollector = dataSourceMetricCollector;
this.responseTimeMetricCollector = responseTimeMetricCollector;
}
@Override
public TAgentStat collect() {
TAgentStat agentStat = new TAgentStat();
agentStat.setAgentId(agentId);
agentStat.setStartTimestamp(agentStartTimestamp);
agentStat.setGc(jvmGcMetricCollector.collect());
agentStat.setCpuLoad(cpuLoadMetricCollector.collect());
agentStat.setTransaction(transactionMetricCollector.collect());
agentStat.setActiveTrace(activeTraceMetricCollector.collect());
agentStat.setDataSourceList(dataSourceMetricCollector.collect());
agentStat.setResponseTime(responseTimeMetricCollector.collect());
return agentStat;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("AgentStatCollector{");
sb.append("agentId='").append(agentId).append('\'');
sb.append(", agentStartTimestamp=").append(agentStartTimestamp);
sb.append(", jvmGcMetricCollector=").append(jvmGcMetricCollector);
sb.append(", cpuLoadMetricCollector=").append(cpuLoadMetricCollector);
sb.append(", transactionMetricCollector=").append(transactionMetricCollector);
sb.append(", activeTraceMetricCollector=").append(activeTraceMetricCollector);
sb.append(", dataSourceMetricCollector=").append(dataSourceMetricCollector);
sb.append(", responseTimeMetricCollector=").append(responseTimeMetricCollector);
sb.append('}');
return sb.toString();
}
}