2 个版本
0.1.2 | 2023 年 10 月 11 日 |
---|---|
0.1.1 | 2023 年 9 月 21 日 |
0.1.0 |
|
#12 in #memcached
38KB
529 行
mkey_exporter
以 Prometheus 指标的形式导出符合正则表达式的 Memcached 键的数量和大小。
例如,对于以下 Memcached 键
thing-1:user-1:something
thing-1:user-1:something-different
thing-1:user-2:something
thing-1:user-3:something
thing-2:user-1:something
thing-2:user-1:something-else
以及 YAML 配置
name: demo
rules:
- pattern: '^(\w+):'
label_name: 'thing'
label_value: '$1'
- pattern: '^\w+:([\w\-]+):'
label_name: 'user'
label_value: '$1'
以下 Prometheus 指标将被导出
mkey_memcached_counts{user="user-1",thing="thing-1"} 2
mkey_memcached_counts{user="user-2",thing="thing-1"} 1
mkey_memcached_counts{user="user-3",thing="thing-1"} 1
mkey_memcached_counts{user="user-1",thing="thing-2"} 2
mkey_memcached_sizes{user="user-1",thing="thing-1"} 242
mkey_memcached_sizes{user="user-2",thing="thing-1"} 56
mkey_memcached_sizes{user="user-3",thing="thing-1"} 23
mkey_memcached_sizes{user="user-1",thing="thing-2"} 127
使用这些指标,您可以根据衡量您应用程序有意义的内容的规则来确定您的 Memcached 集群正在缓存什么。
功能
- 导出 Memcached 集群中缓存条目的数量和大小。
- 根据强大的 正则表达式 从键中提取 Prometheus 标签。
- 易于理解的 YAML 配置格式。
- 支持 TLS Memcached 连接。
安装
以下列出了安装 mkey_exporter
的多种方法。
二进制文件
为 GNU/Linux (x86_64)、Windows (x86_64) 和 MacOS (x86_64 和 aarch64) 发布了二进制文件,每个版本都有一个 版本。
Docker
为 GNU/Linux (x86_64、arm64) 发布了 Docker 图像,每个版本都有一个 版本。
Cargo
mkey_exporter
及其依赖项可以通过 Rust cargo
工具从源代码下载和构建。请注意,这需要您已安装 Rust 工具链。
安装
cargo install mkey_exporter
作为完全静态的二进制文件安装(仅限 Linux)
cargo install --target x86_64-unknown-linux-musl mkey_exporter
卸载
cargo uninstall mkey_exporter
源代码
mkey_exporter
及其依赖项可以使用 Rust cargo
工具从 Github 上的最新源代码构建。请注意,这需要您已安装 Git 和 Rust 工具链。
获取源代码
git clone https://github.com/56quarters/mkey_exporter.git && cd mkey_exporter
从本地源安装
cargo install --path .
从本地源安装完全静态的二进制文件(仅限 Linux)
cargo install --path . --target x86_64-unknown-linux-musl
卸载
cargo uninstall mkey_exporter
用法
以下给出了运行和配置 mkey_exporter
的示例。
运行
mkey_exporter
有一个必需的参数:YAML 配置文件的路径。以下列出了使用各种选项调用 mkey_exporter
的示例。在每个示例中,config.yaml
是一个有效的 YAML 配置文件。示例配置文件列在 Config
部分,或者在该 仓库 中有一个示例。
您可以通过运行 mkey_exporter --help
来查找有关所有支持选项的信息。
连接到本地服务器
mkey_exporter config.yaml
连接到远程服务器
mkey_exporter --host cache01.example.com config.yaml
通过 TLS 连接到远程服务器
mkey_exporter --host cache01.example.com:11211 --tls-enabled --tls-ca memcached-ca-cert.pem --tls-cert memcached-client-cert.pem --tls-key memcached-client-key.pem config.yaml
启用调试日志和更快的刷新间隔
mkey_exporter --log-level debug --refresh-secs 30 config.yaml
配置
mkey_exporter
使用您定义的规则,根据 Prometheus 标签对 Memcached 键进行分桶。规则解析 Memcached 键的部分内容,并将其转换为 Prometheus 标签名称和值。以下给出了一些示例配置以及生成的 Prometheus 指标。
mkey_exporter
配置文件中的每个规则都会从 Memcached 键解析特定 Prometheus 标签的值。规则按顺序评估。为特定标签名称设置值的第一个规则“胜出”,其他设置该标签名称的规则将不会为 Memcached 键评估。
配置格式如下
name: example # Name of this configuration, used for diagnostics.
rules: # Array of rules to apply, in order, for each Memcached key.
- pattern: '^(\w+):' # Regular expression to apply to the Memcached key.
label_name: 'store' # Name of the label to emit, this may NOT contain regular expression captures.
label_value: '$1' # Value of the label to emit, this MAY contain regular expression captures.
- pattern: '^\w+:([\w\-]+):' # You may include as many rules as you want, they will be evaluated in order
label_name: 'user' # for every Memcached key.
label_value: '$1'
示例
以下示例中,为了简洁起见,仅显示了 mkey_memcached_counts
指标。
此配置根据 Memcached 键为指标设置两个标签。
键
user-profile:user-1:backup
user-profile:user-1:latest
user-profile:user-2:latest
user-profile:user-3:latest
user-cart:user-1:latest
规则
name: example
rules:
- pattern: '^(\w+):'
label_name: 'store'
label_value: '$1'
- pattern: '^\w+:([\w\-]+):'
label_name: 'user'
label_value: '$1'
指标
mkey_memcached_counts{user="user-1",store="user-profile"} 2
mkey_memcached_counts{user="user-2",store="user-profile"} 1
mkey_memcached_counts{user="user-3",store="user-profile"} 1
mkey_memcached_counts{user="user-1",store="user-cart"} 1
此配置使用多个规则为“store”标签设置值,根据 Memcached 键为指标设置两个标签。
键
up:user-1:backup
up:user-1:latest
up:user-2:latest
up:user-3:latest
uc:user-1:latest
uu:user-1:latest
规则
name: example
rules:
- pattern: '^up:'
label_name: 'store'
label_value: 'user-profile'
- pattern: '^uc:'
label_name: 'store'
label_value: 'user-cart'
- pattern: '^\w+:'
label_name: 'store'
label_value: 'unknown'
- pattern: '^\w+:([\w\-]+):'
label_name: 'user'
label_value: '$1'
指标
mkey_memcached_counts{user="user-1",store="user-profile"} 2
mkey_memcached_counts{user="user-2",store="user-profile"} 1
mkey_memcached_counts{user="user-3",store="user-profile"} 1
mkey_memcached_counts{user="user-1",store="user-cart"} 1
mkey_memcached_counts{user="user-1",store="unknown"} 1
限制
每次评估循环中,mkey_exporter
都会从 Memcached 服务器获取键的完整列表。这意味着每次更新所需的时间将根据服务器中键的数量而增加。我在运行在 mkey_exporter
进程所在服务器的本地服务器上测试了最多 350 万个键,并得到了不错的结果(大约 5 秒的更新时间)。
许可证
mkey_exporter 在 GPL,版本 3 的条款下提供。
贡献
您有意提交给作品以供包含的任何贡献应按照上述方式授权,不附加任何额外条款或条件。
依赖关系
~22–36MB
~666K SLoC