Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add redis specification #2525

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions specification/metrics/semantic_conventions/redis-metrics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Semantic conventions for database metrics
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Semantic conventions for database metrics
# Semantic conventions for Redis metrics


**Status**: [Experimental](../../document-status.md)

<!-- Re-generate TOC with `markdown-toc --no-first-h1 -i` -->

<!-- toc -->

- [Redis](#redis)

<!-- tocstop -->

## Redis

The following describes the recommended metric names, instruments and units used to describe Redis server metrics.

| Name | Instrument | Units | Description | Attribute Keys | Attributes |
|-------------------------------|----------------------------|--------------|-------------|-|-|
|`redis.uptime`|Asynchronous Counter|seconds|Number of seconds since Redis server start|
Copy link
Member

@reyang reyang May 6, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@haboy52587 thanks for your contribution!

Please refer to this PR #2458 where we've decided to focus on "what" do we get from the Instrument, rather than "how". In a nutshell, consider removing "Asynchronous" / "Synchronous".

|`redis.cpu.time`|Asynchronous Counter|seconds|CPU consumed by the Redis server in seconds since server start| `state` | `system`, `user`, `children`|
|`redis.clients.connected`|Asynchronous UpDownCounter||Number of client connections (excluding connections from replicas)| | |
|`redis.clients.max_input_buffer`|Asynchronous Gauge||Biggest input buffer among current client connections| | |
|`redis.clients.max_output_buffer`|Asynchronous Gauge||Biggest output list among current client connections| | |
|`redis.clients.blocked`|Asynchronous Counter||Number of clients pending on a blocking call| | |
|`redis.keys.expired`|Asynchronous Counter||Total number of key expiration events| | |
|`redis.keys.evicted`|Asynchronous Counter||Total number of evicted keys due to maxmemory limit| | |
|`redis.connections.received`|Asynchronous Counter||Total number of connections accepted by the server| | |
|`redis.connections.rejected`|Asynchronous Counter||Total number of connections rejected because of maxclients limit| | |
|`redis.memory.used`|Asynchronous Gauge|bytes|Total number of bytes allocated by Redis using its allocator| | |
|`redis.memory.peak`|Asynchronous Gauge|bytes|Peak memory consumed| | |
|`redis.memory.rss`|Asynchronous Gauge|bytes|Number of bytes that Redis allocated as seen by the operating system| | |
|`redis.memory.lua`|Asynchronous Gauge|bytes|Number of bytes used by the Lua engine| | |
|`redis.memory.fragmentation_ratio`|Asynchronous Gauge||Ratio between used_memory_rss and used_memory| | |
|`redis.rdb.changes_since_last_save`|Asynchronous UpDownCounter||Number of changes since the last dump| | |
|`redis.commands`|Asynchronous Gauge|operations per second|Number of commands processed per second| | |
|`redis.commands.processed`|Asynchronous Counter||Total number of commands processed by the server| | |
|`redis.net.input`|Asynchronous Counter|bytes|The total number of bytes read from the network| | |
|`redis.net.output`|Asynchronous Counter|bytes|The total number of bytes written to the network| | |
|`redis.keyspace.hits`|Asynchronous Counter||Number of successful lookup of keys in the main dictionary| | |
|`redis.keyspace.misses`|Asynchronous Counter||Number of failed lookup of keys in the main dictionary| | |
|`redis.latest_fork`|Asynchronous Gauge|microseconds|Duration of the latest fork operation| | |
|`redis.slaves.connected`|Asynchronous UpDownCounter||Number of connected replicas| | |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be called redis.replicas.connected? (given most oss projects are moving from master branch to main branch, I guess in the long run Redis would be inclined to avoid "slaves")

|`redis.replication.backlog_first_byte_offset`|Asynchronous Gauge||The master offset of the replication backlog buffer| | |
|`redis.db.keys`|Asynchronous Gauge||Number of keyspace keys| | |
|`redis.db.expired`|Asynchronous Gauge||Number of keyspace keys with an expiration| | |
|`redis.db.avg_ttl`|Asynchronous Gauge||Average keyspace keys TTL| | |