The metrics
下面列出了当前支持的metric
Vert.x metrics
vertx.event-loop-size-event loop pool线程的数量。(Gauge表示)vertx.worker-pool-size-worker pool线程的数量。(Gauge表示)vertx.cluster-host-cluster-host设置。(Gauge表示)vertx.cluster-port-cluster-port设置。(Gauge表示)vertx.verticles- 当前被部署的verticle的数量。(Counter表示)
Event bus metrics
Base name: vertx.eventbus
handlers-event bus里handler的数量.(Counter表示)handlers.myaddress- Timer,表示myaddress的handler接收到消息的比例messages.bytes-read- Meter, 表示接收到远端消息时读到的字节数的Metermessages.bytes-written- 向远端发送消息时,写入字节的Metermessages.pending- 接收到消息但并没有传递给handller的统计消息数的Countermessages.pending-local- 接收到locally消息但并没有传递给handller的统计消息数的Countermessages.pending-remote- Counter, 表示接收到远端但是并没有传递给handler的消息数量.messages.received- ThroughputMeter,表示接收到消息的比例messages.received-local- ThroughputMeter,表示接收到本地消息的比例messages.received-remote- ThroughputMeter, 表示接收到远程消息接收到的比例messages.delivered- [throughpu_metert], 表示消息传递给handler的比例.messages.delivered-local- ThroughputMeter,表示local消息传递给handler的比例.messages.delivered-remote- ThroughputMeter,表示remote消息传递给handler的比例.messages.sent- [throughput_metert], 表示发送出去的消息的比例.messages.sent-local-ThroughputMeter, 表示本地send出去的消息的比例.messages.sent-remote- ThroughputMeter, 表示远端send出去的消息的比例.messages.published- ThroughputMeter, 表示publish出去的消息的比例.messages.published-local- ThroughputMeter, 表示向本地publish出去的消息的比例.messages.published-remote- ThroughputMeter, 表示给远端publish出去的消息的比例.messages.reply-failures- Meter, 表示reply失败的比例
monitored event bus handlers 通过向handler注册地址上的match来完成配置. 由于Vert.x可以在event bus进行海量的注册,因此比较好的配置是在默认的情况下我们不对任何handler进行监听.
monitored handlers可以通过一个指定的address match或者regex match在DropwizardMetricsOptions中完成配置.
Vertx vertx = Vertx.vertx(new VertxOptions().setMetricsOptions(new DropwizardMetricsOptions().setEnabled(true).addMonitoredEventBusHandler(new Match().setValue("some-address")).addMonitoredEventBusHandler(new Match().setValue("business-.*").setType(MatchType.REGEX))));
警告:如果你使用
regex match, 当出现错误的regex,那么可能会match出大量的handler
Http server metrics
Base name: vertx.http.servers.<host>:<port>
Http server除了包含Net Server的metrics之外还包含下面这些:
requests- 请求的Throughput Timer和该请求出现的比例<http-method>-requests- 指定的http method请求的Throughput Timer和该http method请求的出现的比例Examples: get-requests, post-requests
<http-method>-requests./<uri>- 指定的http method & URI请求的Throughput Timer和该请求的出现的比例Examples: get-requests./some/uri, post-requests./some/uri?foo=bar
responses-1xx- 回应状态码为1xx的ThroughputMeterresponses-2xx- 回应状态码为2xx的ThroughputMeterresponses-3xx- 回应状态码为3xx的ThroughputMeterresponses-4xx- 回应状态码为4xx的ThroughputMeterresponses-5xx- 回应状态码为5xx的ThroughputMeteropen-websockets- 统计开启的web socket连接数的Counteropen-websockets.<remote-host>- 统计对某个指定的remote host开启的web socket连接数的Counter
不管是exact match还是regex match,Http URI metrics必须在DropwizardMetricsOptions中显式地配置.
Vertx vertx = Vertx.vertx(new VertxOptions().setMetricsOptions(new DropwizardMetricsOptions().setEnabled(true).addMonitoredHttpServerUri(new Match().setValue("/")).addMonitoredHttpServerUri(new Match().setValue("/foo/.*").setType(MatchType.REGEX))));
For bytes-read and bytes-written the bytes represent the body of the request/response, so headers, etc are ignored.
Http client metrics
Base name: vertx.http.clients.@<id>
Http client除了包含Http Server全部的metrics之外,还包含下面这些.
connections.max-pool-size- 表示最大连接池大小的Gaugeconnections.pool-ratio- 表示open connections / max connection pool size的比例Gaugeresponses-1xx- 回应状态码为1xx的Meterresponses-2xx- 回应状态码为2xx的Meterresponses-3xx- 回应状态码为3xx的Meterresponses-4xx- 回应状态码为4xx的Meterresponses-5xx- 回应状态码为5xx的Meter
Net server metrics
Base name: vertx.net.servers.<host>:<port>
open-netsockets- 开启的socket连接数的Counteropen-netsockets.<remote-host>- 统计对于某个指定remote host开启的socket连接数的Counterconnections- 某个连接的Timer和该连接出现的比例exceptions- 出现异常次数的Counterbytes-read- 已读字节数的Histogram.bytes-written- 写出字节数的Histogram.
Net client metrics
Base name: vertx.net.clients.@<id>
Net client包含全部的Net Server的metrics
Datagram socket metrics
Base name: vertx.datagram
sockets- 统计datagram sockets数的Counterexceptions- 统计异常出现次数的Counterbytes-written- 写出字节数的Histogram.<host>:<port>.bytes-read- 已读字节数的Histogram.
只有当datagram socket被监听的时候上面的统计才有效。
