Lenses is extendable, and the following implementations can be specified:

  1. Serializers/Deserializers
    Plug you own serializer and deserializer to enable observability over any data format (i.e. protobuf / thrift)

  2. Custom authentication
    Authenticate users on your own proxy and inject permissions HTTP headers. See Authentication

  3. LDAP lookup
    Use multiple LDAP servers, or your own group mapping logic. See LDAP

  4. SQL UDFs
    User Defined Functions (UDF) that extend SQL and streaming SQL capabilities.

On startup, Lenses loads plugins from the $LENSES_HOME/plugins/ directory and any location set in the environment variable LENSES_PLUGINS_CLASSPATH_OPTS. Those locations are watched, and dropping a new plugin will hot-reload it.

An example set of plugins:

├── security
│   └── sso_header_decoder.jar
├── serde
│   ├── protobuf_actions.jar
│   └── protobuf_clients.jar
└── udf
    ├── eu_vat.jar
    ├── reverse_geocode.jar
    └── summer_sale_discount.jar