当前位置: 首页 > news >正文

Squid 可观测性最佳实践

Squid 介绍

Squid Cache(简称 Squid)是一款开源、高性能的代理缓存服务器,支持 HTTP、HTTPS、FTP 等协议;它位于客户端与源站之间,将热门内容缓存在内存或磁盘中,以显著提升访问速度、减少带宽占用,并提供访问控制、日志审计、内容过滤等丰富功能,被广泛用于企业网关、CDN 边缘节点及运营商缓存场景。

Squid 为网站提供了三种代理方式,如下:

代理模式工作流程与描述角色定位典型应用场景
正向代理 (Forward Proxy)Client → Squid → Web Server客户端显式配置代理,所有请求由 Squid 代为转发并返回结果。客户端的代理代表内网用户对外发起请求,隐藏客户端信息。• 公司/校园出口翻墙
• 隐藏真实 IP
• 缓存加速
• 上网审计
透明代理 (Transparent Proxy)Client → 防火墙/网关 → Squid → Web Server网关无感知重定向流量,客户端零配置。网络的中间人强制流量经过代理,对用户透明。• 网关级缓存
• 策略过滤
• 带宽节省
• 行为管理
反向代理(Reverse Proxy)Client → Squid → 后端 Web Server客户端访问域名指向 Squid,Squid 转发请求到后端集群并返回结果。服务器的代理代表后端服务器接收请求,隐藏源站。• 负载均衡
• 静态缓存加速
• WAF/SSL 终端
• 防攻击

Squid 监控通过采集 cache.log / access.logsquid-exporter Prometheus 指标 及 10 分钟滚动命中率DNS 查询量 等实时数据,统一接入观测云,实现命中率、流量、错误、FD/内存/磁盘资源的多维可视化和告警,让用户一眼看清缓存效率与系统瓶颈。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

采集器配置

通过 squid-exporter 采集 Squid 的指标数据,DataKit 使用 prom 采集器接收 squid-exporter 发送的指标数据。

Squid 暴露指标
  1. 下载 squid-exporter
  2. 运行 squid-exporter

squid-exporter 暴露了 9301 端口,暴露 Prometheus 格式指标数据

nohup  ./squid-exporter -squid-hostname "localhost" -squid-port 3128 -listen ":9301" &
Squid 指标采集

复制 prom.conf.sample 为 squid.conf

cd /usr/local/datakit/conf.d/prom/
cp prom.conf.sample squid.conf

调整配置文件 squid.conf

  ## Exporter URLs.urls = ["http://127.0.0.1:9301/metrics"]## Stream Size. ## The source stream segmentation size, (defaults to 1).## 0 source stream undivided. # stream_size = 1## Unix Domain Socket URL. Using socket to request data when not empty.uds_path = ""## Ignore URL request errors.ignore_req_err = false## Collector alias.source = "squid-prom"...
Squid 日志采集

squid 默认日志输出到 /var/log/squid 目录下:

  • access.log: 访问日志
  • cache.log: 缓存日志

进入 /usr/local/datakit/conf.d/samples 目录,执行以下命令:

cp logging.conf.sample squid.conf

调整配置文件:

[[inputs.logging]]# List of log files, supports batch specification using glob patterns.# It is recommended to use absolute paths and specify file extensions.# Narrow the scope as much as possible to avoid collecting unexpected files.logfiles = ["/var/log/squid/access.log","/var/log/squid/cache.log"]## Socket currently supports two protocols: tcp/udp. It is recommended to use internal## network ports for security.sockets = [#"tcp://0.0.0.0:9540",#"udp://0.0.0.0:9541",]# File path filtering using glob patterns, any file matching these patterns will not be collectedignore = [""]# Logging source, defaults to 'default' if emptysource = "squid"...

关键指标

指标描述单位
client_http_errors_total客户端 HTTP 请求中返回错误(4xx/5xx)的总次数
client_http_hit_kbytes_out_bytes_total客户端 HTTP 命中(HIT)时向外发送的流量KB
client_http_hits_total客户端 HTTP 请求缓存命中的总次数
client_http_kbytes_in_kbytes_total客户端 HTTP 请求时从客户端接收的流量KB
client_http_kbytes_out_kbytes_total客户端 HTTP 请求时向客户端发送的流量KB
client_http_requests_total客户端 HTTP 请求的总次数
exporter_build_infoSquid exporter 构建信息(版本、修订号等)
info_Available_number_of_file_descriptors当前可用文件描述符数量
info_Average_HTTP_requests_per_minute_since_start自启动以来平均每分钟 HTTP 请求数次/分钟
info_Average_ICP_messages_per_minute_since_start自启动以来平均每分钟 ICP 消息数次/分钟
info_CPU_TimeSquid 进程累计消耗的 CPU 时间
info_CPU_Usage当前瞬时 CPU 使用百分比%
info_CPU_Usage_5_minute_avg最近 5 分钟平均 CPU 使用百分比%
info_CPU_Usage_60_minute_avg最近 60 分钟平均 CPU 使用百分比%
info_Disk_hits_as_pct_of_hit_requests_5min最近 5 分钟缓存命中里磁盘命中的占比%
info_Disk_hits_as_pct_of_hit_requests_60min最近 60 分钟缓存命中里磁盘命中的占比%
info_Files_queued_for_open等待打开文件的队列长度
info_Hits_as_pct_of_all_requests_5min最近 5 分钟命中率(命中/总请求)%
info_Hits_as_pct_of_all_requests_60min最近 60 分钟命中率%
info_Hits_as_pct_of_bytes_sent_5min最近 5 分钟命中流量占发送总流量的百分比%
info_Hits_as_pct_of_bytes_sent_60min最近 60 分钟命中流量占发送总流量的百分比%
info_Hot_Object_Cache_Items热对象缓存条目数量
info_Largest_file_desc_currently_in_use当前使用中的最大文件描述符号
info_Maximum_Resident_SizeSquid 进程最大常驻内存KB
info_Maximum_number_of_file_descriptors系统允许的最大文件描述符数量
info_Mean_Object_Size缓存对象的平均大小KB
info_Memory_hits_as_pct_of_hit_requests_5min最近 5 分钟缓存命中里内存命中的占比%
info_Memory_hits_as_pct_of_hit_requests_60min最近 60 分钟缓存命中里内存命中的占比%
info_Number_of_HTCP_messages_received已接收的 HTCP 消息总数
info_Number_of_HTCP_messages_sent已发送的 HTCP 消息总数
info_Number_of_HTTP_requests_received已接收的 HTTP 请求总数
info_Number_of_ICP_messages_received已接收的 ICP 消息总数
info_Number_of_ICP_messages_sent已发送的 ICP 消息总数
info_Number_of_clients_accessing_cache当前访问缓存的客户端数量
info_Number_of_file_desc_currently_in_use当前已使用的文件描述符数量
info_Number_of_queued_ICP_replies等待回复的 ICP 队列长度
info_Request_failure_ratio请求失败率(失败/总请求)%
info_Requests_given_to_unlinkd交给 unlinkd 删除的请求次数
info_Reserved_number_of_file_descriptors预留的文件描述符数量
info_Select_loop_calledselect/poll 循环调用次数
info_Storage_Mem_capacity内存缓存最大容量KB
info_Storage_Mem_size内存缓存当前已用容量KB
info_Storage_Swap_capacity磁盘缓存最大容量KB
info_Storage_Swap_size磁盘缓存当前已用容量KB
info_StoreEntries当前 Store 条目总数
info_StoreEntries_with_MemObjects带内存对象的 Store 条目数
info_Store_Disk_files_open当前打开的磁盘文件数量
info_Total_accountedSquid 进程已分配内存总量KB
info_UP_TimeSquid 进程自启动以来的运行时间
info_memPoolAlloc_callsmemPool 分配调用次数
info_memPoolFree_callsmemPool 释放调用次数
info_on_disk_objects当前落盘对象数量
info_serviceSquid 服务状态标识(1=运行中,0=停止)
server_all_errors_total所有后端(HTTP/FTP/其他)错误总次数
server_all_kbytes_in_kbytes_total所有后端接收流量KB
server_all_kbytes_out_kbytes_total所有后端发送流量KB
server_all_requests_total所有后端请求总次数
server_ftp_errors_totalFTP 后端错误次数
server_ftp_kbytes_in_kbytes_totalFTP 后端接收流量KB
server_ftp_kbytes_out_kbytes_totalFTP 后端发送流量KB
server_ftp_requests_totalFTP 后端请求次数
server_http_errors_totalHTTP 后端错误次数
server_http_kbytes_in_kbytes_totalHTTP 后端接收流量KB
server_http_kbytes_out_kbytes_totalHTTP 后端发送流量KB
server_http_requests_totalHTTP 后端请求次数
server_other_errors_total其他协议后端错误次数
server_other_kbytes_in_kbytes_total其他协议后端接收流量KB
server_other_kbytes_out_kbytes_total其他协议后端发送流量KB
server_other_requests_total其他协议后端请求次数
swap_files_cleaned_total清理的 swap 文件总数
swap_ins_totalswap in(磁盘 → 内存)次数
swap_outs_totalswap out(内存 → 磁盘)次数
upexporter 成功抓取 Squid 指标时为 1,失败为 0

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “Squid”, 选择 “Squid”,点击 “确定” 即可添加视图。

监控器(告警)

观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。

登录观测云控制台,点击「监控」 -「新建监控器」,输入 “Squid”, 选择对应的监控器,点击 “确定” 即可添加。

总结

观测云对 Squid-Cache 的监控采用「日志+指标」一体化方案:自动采集 access.log/cache.log 与 squid-exporter Prometheus 指标,实时计算 5 min/60 min 命中率、DNS 查询量、磁盘/内存/FD 使用率等关键 KPI,并在图形仪表盘一键展示,同时内置低命中率、FD 耗尽、后端错误率等多级告警模板,帮助运维在 1 分钟内发现缓存异常并定位根因。

http://www.dtcms.com/a/544772.html

相关文章:

  • 【深度学习新浪潮】DeepSeek-OCR深度解析:视觉-文本压缩驱动的新一代OCR技术革命
  • 官方网站建设投标书网站建设包含哪些
  • 相应式手机网站建设网站建设专员一定要会网站建设吗
  • 手机云台ESD整改案例-阿赛姆电子
  • 拆解ASP.NET MVC 核心优势:松耦合、易测试、SEO 友好、RESTful 实战指南
  • 远期合约和期权合约的区别是什么?
  • 2025年国内数字化档案管理软件选型速览
  • 基于FPGA的雷达信号处理设计工具包分享
  • 基于MATLAB的多机器人编队控制系统设计与实现
  • 网站建设计划表模板西安的网站设计单位
  • linux Debian 12 安装 Docker(手动)
  • 天津网站建设培训wordpress网页如何公开
  • 从零到一:用仓颉语言打造你的第一个鸿蒙应用
  • VUE的“单向数据绑定” 和 “双向数据绑定”
  • Profile-Guided Optimization(PGO):Rust 性能优化的终极武器
  • 仓颉FFI实战:C/C++互操作与性能优化
  • FAQ09934:相机prevew时候出现水印问题
  • 基于XML方式的声明式事务管理 -》某配置文件解读
  • 神领物流v2.0-day01-环境搭建与登录笔记(个人记录、含练习答案、仅供参考)
  • 网页广告多少钱wordpress4.9.8优化
  • 佛山门户网站建设公司关键词搜索量全网查询
  • 国内数字孪生公司:技术革新与产业落地的双轮驱动
  • Photoshop 图片去除水印技巧:从简单背景到复杂平铺
  • 嵌入式linux进程间通信七种方法
  • 一元二次方程求根公式、牛顿迭代法、高斯消元法、二分法、方程求解、收敛性、初始值、主元、应用场景
  • P7071 [CSP-J2020] 优秀的拆分
  • LangChain 提示模板之少样本示例(一)
  • 建设好网站外链有哪些方式手机做任务佣金的网站
  • iOS 26 描述文件管理与开发环境配置 多工具协作的实战指南
  • 飞书在用AI“撬动”电商行业