24 个版本 (12 个重大变更)

新增 0.13.0 2024 年 8 月 24 日
0.12.1 2024 年 7 月 24 日
0.11.0 2024 年 6 月 24 日
0.9.0 2024 年 2 月 13 日
0.4.1 2023 年 3 月 22 日

#45 in 缓存

Download history 185/week @ 2024-05-18 7/week @ 2024-05-25 3/week @ 2024-06-08 216/week @ 2024-06-15 139/week @ 2024-06-22 4/week @ 2024-06-29 1/week @ 2024-07-06 208/week @ 2024-07-20 37/week @ 2024-07-27

每月 245 次下载

GPL-3.0+

380KB
9K SLoC

mtop

build status docs.rs crates.io

mtop: top for Memcached.

mtop

功能

  • 显示您 memcached 服务器实时统计信息,例如
    • 内存使用/限制
    • 每个页面的内存使用
    • 当前/最大连接数
    • 命中率
    • 获取/设置/驱逐
    • 传输和接收的字节数
    • 服务器 CPU 使用率
  • 支持轻松切换到多个服务器

安装

以下列出了安装 mtop 的多种方式。

二进制文件

为 GNU/Linux (x86_64)、Musl/Linux (x86_64)、Windows (x86_64) 和 MacOS (x86_64 和 aarch64) 发布了二进制文件,针对每个版本进行发布。每个可用的存档都包含该平台上的 mtopmc 二进制文件以及一些文档文件。

Docker

针对 GNU/Linux (amd64, arm64) 的 Docker 镜像针对每个版本进行发布。这些 Docker 镜像是使用本存储库中的 Dockerfile 构建的。它们没有设置入口点,默认将运行 mtop --helpmtopmc 二进制文件位于 PATH 中,在 /usr/local/bin

Cargo

mtop 以及其依赖项可以使用 Rust cargo 工具从源代码下载和构建。请注意,这需要您已安装 Rust 工具链。

安装

cargo install mtop

作为完全静态的二进制文件安装(仅限 Linux)

cargo install --target x86_64-unknown-linux-musl mtop 

卸载

cargo uninstall mtop

源代码

mtop 以及其依赖项可以使用 Rust cargo 工具从 GitHub 上最新的源代码构建。请注意,这需要您已安装 Git 和 Rust 工具链。

获取源代码

git clone https://github.com/56quarters/mtop.git && cd mtop

从本地源安装

cargo install --path mtop

从本地源安装完全静态的二进制文件(仅限 Linux)

cargo install --path mtop --target x86_64-unknown-linux-musl

卸载

cargo uninstall mtop

用法

mtop 接受一个或多个 host:port 的 Memcached 组合作为参数。每个服务器的统计信息大约每秒收集一次。每个服务器最多保留十个测量值以供计算。

如果 mtop 在启动时无法连接到服务器,它将在打印错误信息后退出。如果 mtop 在启动后无法连接到服务器或从中获取统计信息,错误将被记录到文件中。在类 Unix 系统上,此文件的位于 /tmp/mtop/mtop.log。每次 mtop 启动时,此日志文件都会被截断。

以下是一些调用 mtop 的示例。

连接到本地服务器

mtop localhost:11211

连接到多个服务器

mtop cache01.example.com:11211 cache02.example.com:11211 cache03.example.com:11211

使用单个 DNS 名称连接到多个服务器

A 或 AAAA

在此示例中,对 memcached.local 的 DNS A 查询返回三个 DNS A 记录。

dig -t A memcached.local
;; QUESTION SECTION:
;memcached.local.         IN      A

;; ANSWER SECTION:
memcached.local.  0       IN      A       127.0.0.3
memcached.local.  0       IN      A       127.0.0.2
memcached.local.  0       IN      A       127.0.0.1

mtop 将连接到所有三个服务器:127.0.0.1127.0.0.2127.0.0.3

mtop dns+memcached.local:11211

SRV

在此示例中,对 _memcached._tcp.example.com 的 DNS SRV 查询返回三个 DNS SRV 记录。

dig -t SRV _memcached._tcp.example.com
;; QUESTION SECTION:
;_memcached._tcp.example.com.        IN      SRV

;; ANSWER SECTION:
_memcached._tcp.example.com. 300 IN  SRV     100 100 11211 memcached01.example.com.
_memcached._tcp.example.com. 300 IN  SRV     100 100 11211 memcached02.example.com.
_memcached._tcp.example.com. 300 IN  SRV     100 100 11211 memcached03.example.com.

mtop 将连接到所有三个服务器,在建立连接时将它们的名称解析为 AAAAA 记录:memcached01.example.com.memcached02.example.com.memcached03.example.com.。请注意,忽略 SRV 记录中的端口号,只使用命令行参数中的端口号。

mtop dnssrv+_memcached._tcp.example.com:11211

连接到端口转发的 Kubernetes pod

kubectl port-forward --namespace=example memcached-0 11211:11211
mtop localhost:11211

服务器 TLS 连接

mtop --tls-enabled cache01.example.com:11211

使用自定义 CA 的 TLS

mtop --tls-enabled --tls-ca memcached-ca-cert.pem cache01.example.com:11211

使用客户端身份验证和自定义 CA 的 TLS

mtop --tls-enabled --tls-ca memcached-ca-cert.pem --tls-cert memcached-client-cert.pem --tls-key memcached-client-key.pem cache01.example.com:11211

用户界面

mtop 用户界面中,有一些键可以控制行为。

  • q 退出。
  • m 在默认 UI 和每个 slab UI 之间切换。
  • l右箭头 选择下一个主机。
  • h左箭头 选择上一个主机。
  • j下箭头 选择下一个 slab 行。
  • k上箭头 选择上一个 slab 行。

限制

没有历史数据

mtop 显示瞬时统计信息或过去 10 秒的平均值(具体取决于特定的统计信息)。它不会将统计信息持久化以进行历史分析。如果您需要这样做,请使用 Prometheus 的 memcached_exporter

许可协议

mtop 在以下协议下可用:GPL,版本3

贡献

您有意提交以供包含在作品中的任何贡献,都应按上述方式许可,不得附加任何额外条款或条件。

发布

以下描述了发布 mtop 新版本的步骤。

  • 打开并合并一个 PR,增加 mtop 在所有 Cargo.toml 文件中的版本,并更新 CHANGELOG.md
  • 从 Github 远程更新本地 master。确保使用更新后的版本构建一次,以更新 Cargo.lock
  • 创建一个标签,格式为 v1.2.3,但不推送。
  • 运行 cargo packagecargo publish 命令来发布 mtop-client crate。
  • 运行 cargo packagecargo publish 命令来发布 mtop crate。
  • 将标签推送到所有远程 git push --tags origingit push --tags github

依赖关系

~20–33MB
~582K SLoC