.. _config_network_filters_zookeeper_proxy:
ZooKeeper proxy
===============
The ZooKeeper proxy filter decodes the client protocol for
`Apache ZooKeeper `_. It decodes the requests,
responses and events in the payload. Most opcodes known in
`ZooKeeper 3.5 `_
are supported. The unsupported ones are related to SASL authentication.
.. attention::
The zookeeper_proxy filter is experimental and is currently under active
development. Capabilities will be expanded over time and the
configuration structures are likely to change.
.. _config_network_filters_zookeeper_proxy_config:
Configuration
-------------
The ZooKeeper proxy filter should be chained with the TCP proxy filter as shown
in the configuration snippet below:
.. literalinclude:: _include/zookeeper-filter-proxy.yaml
:language: yaml
.. _config_network_filters_zookeeper_proxy_stats:
Statistics
----------
Every configured ZooKeeper proxy filter has statistics rooted at *.zookeeper.*. The
following counters are available:
.. csv-table::
:header: Name, Type, Description
:widths: 1, 1, 2
decoder_error, Counter, Number of times a message wasn't decoded
request_bytes, Counter, Number of bytes in decoded request messages
connect_rq, Counter, Number of regular connect (non-readonly) requests
connect_readonly_rq, Counter, Number of connect requests with the readonly flag set
ping_rq, Counter, Number of ping requests
auth._rq, Counter, Number of auth requests for a given type
getdata_rq, Counter, Number of getdata requests
create_rq, Counter, Number of create requests
create2_rq, Counter, Number of create2 requests
setdata_rq, Counter, Number of setdata requests
getchildren_rq, Counter, Number of getchildren requests
getchildren2_rq, Counter, Number of getchildren2 requests
remove_rq, Counter, Number of delete requests
exists_rq, Counter, Number of stat requests
getacl_rq, Counter, Number of getacl requests
setacl_rq, Counter, Number of setacl requests
sync_rq, Counter, Number of sync requests
multi_rq, Counter, Number of multi transaction requests
reconfig_rq, Counter, Number of reconfig requests
close_rq, Counter, Number of close requests
setwatches_rq, Counter, Number of setwatches requests
checkwatches_rq, Counter, Number of checkwatches requests
removewatches_rq, Counter, Number of removewatches requests
check_rq, Counter, Number of check requests
response_bytes, Counter, Number of bytes in decoded response messages
connect_resp, Counter, Number of connect responses
ping_resp, Counter, Number of ping responses
auth_resp, Counter, Number of auth responses
watch_event, Counter, Number of watch events fired by the server
getdata_resp, Counter, Number of getdata responses
create_resp, Counter, Number of create responses
create2_resp, Counter, Number of create2 responses
createcontainer_resp, Counter, Number of createcontainer responses
createttl_resp, Counter, Number of createttl responses
setdata_resp, Counter, Number of setdata responses
getchildren_resp, Counter, Number of getchildren responses
getchildren2_resp, Counter, Number of getchildren2 responses
getephemerals_resp, Counter, Number of getephemerals responses
getallchildrennumber_resp, Counter, Number of getallchildrennumber responses
remove_resp, Counter, Number of remove responses
exists_resp, Counter, Number of exists responses
getacl_resp, Counter, Number of getacl responses
setacl_resp, Counter, Number of setacl responses
sync_resp, Counter, Number of sync responses
multi_resp, Counter, Number of multi responses
reconfig_resp, Counter, Number of reconfig responses
close_resp, Counter, Number of close responses
setauth_resp, Counter, Number of setauth responses
setwatches_resp, Counter, Number of setwatches responses
checkwatches_resp, Counter, Number of checkwatches responses
removewatches_resp, Counter, Number of removewatches responses
check_resp, Counter, Number of check responses
.. _config_network_filters_zookeeper_proxy_latency_stats:
Per opcode latency statistics
-----------------------------
The filter will gather latency statistics in the *.zookeeper._response_latency* namespace.
Latency stats are in milliseconds:
.. csv-table::
:header: Name, Type, Description
:widths: 1, 1, 2
connect_response_latency, Histogram, Opcode execution time in milliseconds
ping_response_latency, Histogram, Opcode execution time in milliseconds
auth_response_latency, Histogram, Opcode execution time in milliseconds
watch_event, Histogram, Opcode execution time in milliseconds
getdata_response_latency, Histogram, Opcode execution time in milliseconds
create_response_latency, Histogram, Opcode execution time in milliseconds
create2_response_latency, Histogram, Opcode execution time in milliseconds
createcontainer_response_latency, Histogram, Opcode execution time in milliseconds
createttl_response_latency, Histogram, Opcode execution time in milliseconds
setdata_response_latency, Histogram, Opcode execution time in milliseconds
getchildren_response_latency, Histogram, Opcode execution time in milliseconds
getchildren2_response_latency, Histogram, Opcode execution time in milliseconds
getephemerals_response_latency, Histogram, Opcode execution time in milliseconds
getallchildrennumber_response_latency, Histogram, Opcode execution time in milliseconds
remove_response_latency, Histogram, Opcode execution time in milliseconds
exists_response_latency, Histogram, Opcode execution time in milliseconds
getacl_response_latency, Histogram, Opcode execution time in milliseconds
setacl_response_latency, Histogram, Opcode execution time in milliseconds
sync_response_latency, Histogram, Opcode execution time in milliseconds
multi_response_latency, Histogram, Opcode execution time in milliseconds
reconfig_response_latency, Histogram, Opcode execution time in milliseconds
close_response_latency, Histogram, Opcode execution time in milliseconds
setauth_response_latency, Histogram, Opcode execution time in milliseconds
setwatches_response_latency, Histogram, Opcode execution time in milliseconds
checkwatches_response_latency, Histogram, Opcode execution time in milliseconds
removewatches_response_latency, Histogram, Opcode execution time in milliseconds
check_response_latency, Histogram, Opcode execution time in milliseconds
.. _config_network_filters_zookeeper_proxy_dynamic_metadata:
Dynamic Metadata
----------------
The ZooKeeper filter emits the following dynamic metadata for each message parsed:
.. csv-table::
:header: Name, Type, Description
:widths: 1, 1, 2
, string, "The path associated with the request, response or event"
, string, "The opname for the request, response or event"
, string, "The string representation of the flags applied to the znode"
, string, "The size of the request message in bytes"
, string, "True if a watch is being set, false otherwise"
, string, "The version parameter, if any, given with the request"
, string, "The timeout parameter in a connect response"
, string, "The protocol version in a connect response"
, string, "The readonly flag in a connect response"
, string, "The zxid field in a response header"
, string, "The error field in a response header"
, string, "The state field in a watch event"
, string, "The event type in a a watch event"