Description
Phoenix Query Server runs a separate process compared to its thin client. Metrics collection is currently done by PhoenixRuntime.java i.e. at Phoenix driver level. We need to expose Global Client Metrics from PQS.
Implementation Used:
GlobalClientMetrics will be instantiated as GlobalMetricImpl, when enabled. A shim layer is provided to convert phoenix-metrics to hbase-metrics. All metrics are currently mapped as gauges (PhoenixGlobalMetricGauge). A HBaseMetrics2HadoopMetricsAdapter object converts hbase-metrics to hadoop-metrics2 and then pushed to configured sinks (based on properties in hadoop-metrics2.properties files). Hadoop-metrics2 library pushes all metrics to JMX by default.
All metrics definition https://phoenix.apache.org/metrics.html
phoenix.client.metrics.tag property can be configured for metrics filtering, which is defaulted to FAT_CLIENT
Older Requirements (No longer valid)
We need the following
1. For every jdbc statement/prepared statement/ run by PQS , we need capability to collect metrics at PQS level and push the data to external sink i.e. file, JMX , other external custom sources.
2. Besides this global metrics could be periodically collected and pushed to the sink.
2. PQS can be configured to turn on metrics collection and type of collect ( runtime or global) via hbase-site.xml
3. Sink could be configured via an interface in hbase-site.xml.
Attachments
Attachments
Issue Links
- relates to
-
PHOENIX-4857 Backport PHOENIX-3655 "Global Phoenix Client Metrics for PQS" to phoenix-hbase 1.2 and 1.3 branches
- Open
- links to