Monitoring Envoy proxy using Zabbix
Envoy is a high-performance C++ distributed proxy designed for microservices and service-oriented architecture, as well as a scalable communication bus and “universal data plane” designed for large scale service meshes. Envoy runs alongside every application and abstracts the network by providing common features in a platform-agnostic manner. When all service traffic in an infrastructure flows via an Envoy mesh, it becomes easy to centralize cross-cutting concerns like observability, security, in addition to adding substrate features in a single place. Envoy, supports a static configuration model, also allows configuration via gRPC/protobuf APIs simplifying management at scale. Envoy also has a variety of filters to add support for gRPC, rate limiting, shadowing, canary routing, and API observability.
The objective of this project is to monitor envoy proxy using Zabbix, for that we created an open-source template of Zabbix to monitor envoys.
We are using auto-discovery of all clusters exist behind envoy proxy and getting their parameters, and response codes for each listener, and some envoy parameters.
The template contains 11 items as dependent items and 3 other that use HTTP Agent to get parameters from the status page of envoy in JSON form. You could add new items by just consulting the "envoy: clusters_stats" item that contains all parameters of envoy in JSON form.
For more details about this template: https://github.com/Zen-Networks/Zabbix_envoy.
This project is done as part of our monitoring business unit opensource contributions. The monitoring BU is in charge of offering full-stack highly customized monitoring solutions.