12个版本 (7个重大更新)

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.7.0 2023年11月29日

#125 in 缓存

Download history 283/week @ 2024-05-18 16/week @ 2024-05-25 4/week @ 2024-06-08 2/week @ 2024-06-15 135/week @ 2024-06-22 5/week @ 2024-06-29 2/week @ 2024-07-06 209/week @ 2024-07-20 38/week @ 2024-07-27

每月247次 下载
2 个 存储库中使用

GPL-3.0+

255KB
6K SLoC

mtop

build status docs.rs crates.io

mtop: 为Memcached的top命令。

mtop

功能

  • 显示关于您的memcached服务器的实时统计信息,例如
    • 内存使用/限制
    • 每个slab的内存使用
    • 当前/最大连接数
    • 命中率
    • 获取/设置/驱逐
    • 发送和接收的字节数
    • 服务器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 新版本的步骤。

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

依赖项

~11–20MB
~344K SLoC