All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.patterncat.metrics.tomcat.TomcatDataSourceMetrics Maven / Gradle / Ivy

The newest version!
package cn.patterncat.metrics.tomcat;

import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricSet;
import org.apache.tomcat.jdbc.pool.DataSource;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by caibosi on 2017-07-02.
 */
public class TomcatDataSourceMetrics implements MetricSet {

    DataSource datasource;

    final Map gauges = new HashMap();

    public TomcatDataSourceMetrics(DataSource datasource) {
        this.datasource = datasource;
        //-- constant value
        gauges.put("size", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getSize();
            }
        });

        gauges.put("initialSize", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getInitialSize();
            }
        });

        gauges.put("maxActive", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getMaxActive();
            }
        });

        gauges.put("maxIdle", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getMaxIdle();
            }
        });

        gauges.put("minIdle", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getMinIdle();
            }
        });

        //-- var
        gauges.put("active", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getActive();
            }
        });

        gauges.put("idle", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getIdle();
            }
        });

        gauges.put("wait", new Gauge() {
            @Override
            public Integer getValue() {
                return datasource.getWaitCount();
            }
        });

        gauges.put("borrowed", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getBorrowedCount();
            }
        });

        gauges.put("created", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getCreatedCount();
            }
        });

        gauges.put("released", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getReleasedCount();
            }
        });

        gauges.put("releasedIdle", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getReleasedIdleCount();
            }
        });

        gauges.put("reconnectedCount", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getReconnectedCount();
            }
        });

        gauges.put("returnedCount", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getReturnedCount();
            }
        });

        gauges.put("removeAbandonedCount", new Gauge() {
            @Override
            public Long getValue() {
                return datasource.getRemoveAbandonedCount();
            }
        });
    }

    @Override
    public Map getMetrics() {
        return Collections.unmodifiableMap(gauges);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy