ElastiCache SD allows retrieving scrape targets from AWS ElastiCache cache nodes for Prometheus. No address is defined by default, it must be configured with relabeling and requires a third-party exporter supporting the multi-target pattern.
Help on flags:
./prometheus-elasticache-sd --help
The following meta labels are available on targets during relabeling:
__meta_elasticache_cache_cluster_id
: The identifier of the cluster.__meta_elasticache_cache_cluster_status
: The current state of this cluster. SeeCacheClusterStatus
in the API Reference for possible values.__meta_elasticache_cache_node_id
: The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer's Amazon account.__meta_elasticache_cache_node_status
: The current state of this cache node. SeeCacheNodeStatus
in the API Reference for possible values.__meta_elasticache_cache_node_type
: The name of the compute and memory capacity node type for the cluster.__meta_elasticache_cache_parameter_group_name
: The name of the cache parameter group.__meta_elasticache_cache_subnet_group_name
: The name of the cache subnet group associated with the cluster.__meta_elasticache_customer_availability_zone
: The Availability Zone where this node was created and now resides.__meta_elasticache_endpoint_address
: The DNS hostname of the cache node.__meta_elasticache_endpoint_port
: The port number that the cache engine is listening on.__meta_elasticache_engine_version
: The version of the cache engine that is used in this cluster.__meta_elasticache_engine
: The name of the cache engine (memcached
orredis
) used for this cluster.__meta_elasticache_preferred_availability_zone
: The name of the Availability Zone in which the cluster is located or "Multiple" if the cache nodes are located in different Availability Zones.__meta_elasticache_replication_group_id
: The replication group to which this cluster belongs. If this label is absent, the cluster is not associated with any replication group.__meta_elasticache_tag_<tagkey>
: The tag's value.
The following AWS IAM permissions are required:
elasticache:DescribeCacheClusters
elasticache:ListTagsForResource
To run the ElastiCache SD as a Docker container, run:
docker run ghcr.io/maxbrunet/prometheus-elasticache-sd:latest --help
This service discovery can be used with oliver006/redis_exporter, here is a sample Prometheus configuration:
scrape_configs:
- job_name: "redis_exporter_targets"
file_sd_configs:
- files:
- /path/to/elasticache.json # Set file path with --output.file flag
metrics_path: /scrape
relabel_configs:
# Filter for Redis cache nodes
- source_labels: [__meta_elasticache_engine]
regex: redis
action: keep
# Build Redis URL to use as target parameter for the exporter
- source_labels:
- __meta_elasticache_endpoint_address
- __meta_elasticache_endpoint_port
replacement: redis://$1
separator: ':'
target_label: __param_target
# Use Redis URL as instance label
- source_labels: [__param_target]
target_label: instance
# Set exporter address
- target_label: __address__
replacement: <<REDIS-EXPORTER-HOSTNAME>>:9121
This service discovery can be used with the official memcached_exporter, see its README for details.
docker build -t prometheus-elasticache-sd .
go test -v ./...
Apache License 2.0, see LICENSE.