Skip to content

Support multiple endpoints for memcache sampler #237

Description

@eaddingtonwhite

Currently the memcache sampler in Rezolus only supports passing a single Memcache endpoint to monitor and sample
https://github.com/twitter/rezolus/blob/master/src/config/samplers.rs#L93

let endpoint = common.config.samplers().memcache().endpoint().unwrap();
let mut addrs = endpoint.to_socket_addrs().unwrap_or_else(|_| {
fatal!("ERROR: endpoint address is malformed: {}", endpoint);
});
let address = addrs.next().unwrap_or_else(|| {
fatal!("ERROR: failed to resolve address: {}", endpoint);
});
let sampler = Self {
address,
common,
stream: None,
};
if sampler.sampler_config().enabled() {
sampler.register();
}

It would be nice if we could pass a comma separated list of host:port memcache endpoints to Rezolus memcache sampler. This would allow you to run a single Rezolus agent to monitor multiple Memcache process or containers on a single host. The config might look something like this:

# An example config that produces percentile metrics for specific Memcached stats
# while preserving the original metric names.

[general]
listen = "0.0.0.0:4242"
fault_tolerant = false
reading_suffix = ""

[samplers]
[samplers.memcache]
enabled = true
endpoint = "localhost:11211,localhost:11212,localhost:11213,localhost:11214"

An alternative would be to run a Rezolus agent per memcache process 1:1 but this creates additional overhead for end user to configure and run on host in this way.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions