Memcached 介绍
Memcached 是一个高性能、分布式的内存对象缓存系统,用于动态 Web 应用程序以减轻数据库负载。它通过将数据缓存在内存中,极大地减少了数据库查询的次数,从而提高应用程序的响应速度。Memcached 最早由 LiveJournal 的 Danga Interactive 开发,目前已成为许多大型互联网公司使用的基础技术之一。
Memcached 的监控是保障应用性能和稳定性的关键措施,通过实时跟踪缓存的命中率、内存使用、延迟等指标,可以优化缓存策略、识别性能瓶颈、及时排查故障、进行容量规划,确保数据一致性,并为业务分析提供数据支持,从而提升用户体验和系统可靠性。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
前置条件
- Memcached 版本 >= 1.5.0
部署 DataKit
DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。
登录观测云控制台,在 集成 -> DataKit 选择对应安装方式,当前采用 Linux 主机部署 DataKit 。
开启 Memcached 采集器
进入 DataKit 安装目录下的 conf.d/db
目录,复制 memcached.conf.sample
并命名为 memcached.conf
。示例如下:
bash
cp memcached.conf.sample memcached.conf
调整 memcached.conf
内容如下:
shell
[[inputs.memcached]]
## Servers' addresses.
servers = ["localhost:11211"]
# unix_sockets = ["/var/run/memcached.sock"]
## Set true to enable election
election = true
## Collect extra stats
# extra_stats = ["slabs", "items"]
## Collect interval.
# 单位 "ns", "us" (or "µs"), "ms", "s", "m", "h"
interval = "10s"
[inputs.memcached.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
# ...
配置完成后重启 DataKit 即可。
bash
# 终端执行命令
datakit service -R
关键指标
指标 | 描述 | 单位 |
---|---|---|
accepting_conns | 服务器是否正在接受连接 | count |
auth_cmds | 处理的认证命令数量,包括成功或失败的情况 | count |
auth_errors | 认证失败的次数 | count |
bytes | 当前用于存储项目的字节数 | B |
bytes_read | 此服务器从网络读取的总字节数 | B |
bytes_written | 此服务器发送到网络的总字节数 | B |
cas_badval | 找到键但CAS值不匹配的CAS操作次数 | count |
cas_hits | 成功的CAS请求次数 | count |
cas_misses | 针对缺失键的CAS请求次数 | count |
conn_yields | 由于达到 -R 限制而让出给其他连接的次数 | count |
connection_structures | 服务器分配的连接结构数量 | count |
curr_connections | 打开的连接数 | count |
curr_items | 当前存储的项目数量 | count |
decr_hits | 成功的decr请求次数 | count |
decr_misses | 针对缺失键的decr请求次数 | count |
delete_hits | 导致项目被删除的删除请求次数 | count |
delete_misses | 针对缺失键的删除请求次数 | count |
evicted_unfetched | 从LRU中驱逐但从未被get/incr/append等操作触及的项目数量 | count |
evictions | 为新项目腾出内存而从缓存中移除的有效项目数量 | count |
expired_unfetched | 从LRU中取出但在过期前从未被get/incr/append等操作触及的项目数量 | count |
get_hits | 已请求并找到存在的键的数量 | count |
get_misses | 已请求但未找到的项目数量 | count |
hash_bytes | 当前哈希表使用的字节数 | B |
hash_is_expanding | 指示哈希表是否正在扩展到新大小 | count |
hash_power_level | 哈希表当前的大小倍数 | count |
incr_hits | 成功的incr请求次数 | count |
incr_misses | 针对缺失键的incr请求次数 | count |
limit_maxbytes | 此服务器允许用于存储的字节数 | B |
listen_disabled_num | 服务器因达到最大连接数(maxconns)而停止接受新连接的次数 | count |
场景视图
登录观测云控制台,点击「场景」 -「新建仪表板」,添加视图。
监控器(告警)
memcached 连接数异常
简要描述:Memcached 连接数异常通常表示当前服务器的连接数超过预期或达到了最大连接限制。这可能会导致新连接被拒绝,从而影响应用程序对缓存数据的访问。及时监控和处理连接数异常有助于保障服务的稳定性和响应能力。
memcached 命中率异常
简要描述:Memcached 命中率异常表明缓存的请求命中率低于正常水平,这通常意味着更多的请求需要直接访问数据库,可能导致延迟增加和性能下降。通过监控和优化缓存命中率,可以提升系统响应速度和资源利用率。
memcached 驱逐对象异常
简要描述:Memcached 驱逐对象异常指的是缓存中对象被频繁驱逐,通常是因为内存不足而需要腾出空间。这可能会导致缓存命中率下降,从而增加对数据库的访问压力。监控并优化驱逐策略,有助于提升缓存的有效利用率和系统的整体性能。
总结
通过观测云统一采集、监控 Memcached 的关键指标,如缓存命中率、内存使用情况、延迟等,可以帮助我们优化缓存策略、识别性能瓶颈并及时排查故障,从而保障系统性能和稳定性。通过实时追踪这些指标,可以有效进行容量规划,确保数据一致性,并为业务分析提供重要支持,从而提升用户体验和系统可靠性。