This is a ops monitoring tool to
- monitor Pulsar admin REST API endpoint
- measure a single message latency from producing to consuming
- ability to produce a list of messages with user specified payload size and the list size
- measure average latency over a list of messages
- report out of order delivery
- measure a single message latency over the websocket interface
- measure message latency generated by Pulsar function
- monitor Pods and service availabitily in Pulsar Kubernetes cluster
- monitor individual Pulsar broker's health
- Pulsar function trigger over HTTP interface
- incident alert with OpsGenie
- tracking analytics and usage
- dead man's snitch heartbeat monitor with OpsGenie
- alert on Slack
This is a data driven tool. The configuraion is a yaml or json file. Here is a template. The configuration json file can be specified in the overwrite order of
- an environment variable
PULSAR_OPS_MONITOR_CFG
- an command line argument
./pulsar-monitor -config /path/to/pulsar_ops_monitor_config.yml
- A default path to
../config/runtime.yml
Pulsar monitor can be deployed within the same Pulsar Kubernetes cluster. Kubernetes' pod and service , and individual broker monitoring are only supported within the same Kubernetes cluster deployment.
./config/runtime.yml
or ./config/runtime.json
must have a Pulsar jwt and configured properly.
$ docker-compose up
The runtime.json file must be mounted as /app/runtime.json
This runs a multi stage build that produces a 18MB docker image.
$ sudo docker build -t pulsar-monitor .
Run docker container with Pulsar CA certificate and expose Prometheus metrics for collection.
$ docker run -d -it -v $HOME/go/src/github.com/kafkaesque-io/pulsar-monitor/config/runtime.yml:/config/runtime.yml -v /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem:/etc/ssl/certs/ca-bundle.crt -p 8080:8080 --name=pulsar-monitor kesque/pulsar-monitor:1.1.1
If you are monitoring Pulsar cluster managed by Kesque, this is the command since we already include a certificate in the docker image.
$ docker run -d -it -v $HOME/go/src/github.com/kafkaesque-io/pulsar-monitor/config/runtime.yml:/config/runtime.yml -p 8080:8080 --name=pulsar-monitor kesque/pulsar-monitor:1.1.1
This program exposes a Prometheus \metrics
endpoint to allow measured Pulsar latency to be collected by Prometheus.
Here is Pulsar Monitor's helm chart
Helm 3
helm3 install pulsar-monitor kafkaesque/pulsar --namespace monitoring --values ./config/helm-values/pulsar-monitor-values.yaml
Helm2
helm install kafkaesque/pulsar --name pulsar-monitor --namespace monitoring --values ./config/helm-values/pulsar-monitor-values.yaml
To create a binary under ./bin/pulsar-monitor, run this
$ ./scripts/ci.sh