# HBase Server Sink Configuration
#################################
#
# Configuration for the metrics2 system for the HBase RegionServers
# to enable phoenix trace collection on the HBase servers.
#
# See hadoop-metrics2-phoenix.properties for how these configurations
# are utilized.
#
# Either this file can be used in place of the standard
# hadoop-metrics2-hbase.properties file or the below
# properties should be added to the file of the same name on
# the HBase classpath (likely in the HBase conf/ folder)

# ensure that we receive traces on the server
hbase.sink.tracing.class=org.apache.phoenix.trace.PhoenixMetricsSink
# Tell the sink where to write the metrics
hbase.sink.tracing.writer-class=org.apache.phoenix.trace.PhoenixTableMetricsWriter
# Only handle traces with a context of "tracing"
hbase.sink.tracing.context=tracing
