Squid Web Cache Wiki

Squid Web Cache 文档

🔗 功能:SNMP

🔗 详细信息

贡献者:Glenn Chisholm

🔗 配置 Squid

要配置SNMP,首先使用标准形式的ACL指定您希望允许访问的社区列表

acl aclname snmp_community string

例如

acl snmppublic snmp_community public
acl snmpjoebloggs snmp_community joebloggs

这将创建两个ACL,分别对应两个不同的社区:public 和 joebloggs。您可以随意命名ACL和社区字符串。

要指定代理监听的端口,请修改snmp_port参数,官方SNMP端口是3401

snmp_port 3401

要允许访问Squid的SNMP代理,请定义一个snmp_access ACL,并包含您之前定义的社区字符串。例如:

snmp_access allow snmppublic localhost
snmp_access deny all

上面的配置将允许localhost上使用public社区的任何人访问代理。它将拒绝所有其他人的访问。

:warning: 如果您没有定义任何snmp_access ACL,则默认情况下SNMP访问是被拒绝的。

最后,squid允许您配置代理监听的地址,用于入站和出站流量。这些默认设置为系统上的所有地址,更改它们将导致代理绑定到主机上的特定地址。

默认值

snmp_incoming_address 0.0.0.0
snmp_outgoing_address 0.0.0.0

🔗 Squid OIDs

Squid OIDs在不同版本之间会发生变化。下表显示了当前可用的OIDs。Squid列包含该OID存在的Squid版本。

:information_source: 所有Squid OID都以1.3.6.1.4.1.3495开头

OID 名称 类型 Squid 描述
*.1.1.1.0 cacheSysVMsize Integer32 2.0+ 使用的cache_mem存储空间的大小,以KB为单位。
*.1.1.2.0 cacheSysStorage Integer32 2.0+ 使用的cache_dir存储空间的大小,以KB为单位。
*.1.1.3.0 cacheUptime Timeticks 2.0+ 缓存的运行时间(以timeticks为单位)
*.1.2.1.0 cacheAdmin STRING 2.0+ 缓存管理员的电子邮件地址
*.1.2.2.0 cacheSoftware STRING 2.0+ 缓存软件名称。固定为squid
*.1.2.3.0 cacheVersionId STRING 2.0+ 缓存软件版本
*.1.2.4.0 cacheLoggingFacility STRING 2.0+ 日志记录设施。一个信息字符串,指示日志信息,如调试级别、本地/syslog/远程日志记录等。
内存使用概览        
*.1.2.5.1.0 cacheMemMaxSize Integer32 2.0+ cache_mem参数的值,以MB为单位。
*.1.2.5.2.0 cacheSwapMaxSize Integer32 2.2+ 已分配的cache_dir空间的总大小,以MB为单位。
*.1.2.5.3.0 cacheSwapHighWM Integer32 2.2+ 缓存交换高水位标记
*.1.2.5.4.0 cacheSwapLowWM Integer32 2.2+ 缓存交换低水位标记
*.1.2.6.0 cacheUniqName Integer32 2.6+ 缓存的唯一主机名
缓存性能衡量标准        
*.1.3.1.1.0 cacheSysPageFaults Counter32 2.0+ 发生物理I/O的页面错误数
*.1.3.1.2.0 cacheSysNumReads Counter32 2.0+ HTTP I/O读取次数
*.1.3.1.3.0 cacheMemUsage Integer32 2.2+ 已计算的总内存,以KB为单位。
*.1.3.1.4.0 cacheCpuTime Integer32 2.2+ 消耗的CPU秒数
*.1.3.1.5.0 cacheCpuUsage Integer32 2.2+ CPU使用率百分比
*.1.3.1.6.0 cacheMaxResSize Integer32 2.0+ 最大驻留集大小,以KB为单位。
*.1.3.1.7.0 cacheNumObjCount Gauge32 2.0+ 缓存存储的对象数量
*.1.3.1.8.0 cacheCurrentLRUExpiration Timeticks 2.0+ 存储LRU过期年龄
*.1.3.1.9.0 cacheCurrentUnlinkRequests Gauge32 2.0+ 发送给unlinkd的请求数
*.1.3.1.10.0 cacheCurrentUnusedFDescrCnt Gauge32 2.0+ 可用的文件描述符数量
*.1.3.1.11.0 cacheCurrentResFileDescrCnt Gauge32 2.0+ 已保留的文件描述符数量
*.1.3.1.12.0 cacheCurrentFileDescrCnt Gauge32 2.6+ 正在使用的文件描述符数量
*.1.3.1.13.0 cacheCurrentFileDescrMax Gauge32 2.6+ 最高使用的文件描述符数量
按协议统计        
*.1.3.2.1.1.0 cacheProtoClientHttpRequests Counter32 2.0+ 收到的HTTP请求数量
*.1.3.2.1.2.0 cacheHttpHits Counter32 2.0+ 从缓存发送给客户端的HTTP命中次数
*.1.3.2.1.3.0 cacheHttpErrors Counter32 2.0+ 发送给客户端的HTTP错误数量
*.1.3.2.1.4.0 cacheHttpInKb Counter32 2.0+ 从客户端接收的HTTP KB数
*.1.3.2.1.5.0 cacheHttpOutKb Counter32 2.0+ 发送给客户端的HTTP KB数
*.1.3.2.1.6.0 cacheIcpPktsSent Counter32 2.0+ 发送的ICP消息数量
*.1.3.2.1.7.0 cacheIcpPktsRecv Counter32 2.0+ 收到的ICP消息数量
*.1.3.2.1.8.0 cacheIcpKbSent Counter32 2.0+ 传输的ICP KB数
*.1.3.2.1.9.0 cacheIcpKbRecv Counter32 2.0+ 收到的ICP KB数
*.1.3.2.1.10.0 cacheServerRequests Integer32 2.0+ 客户端发送给缓存服务器的所有请求
*.1.3.2.1.11.0 cacheServerErrors Integer32 2.0+ 来自客户端请求的缓存服务器的所有错误
*.1.3.2.1.12.0 cacheServerInKb Counter32 2.0+ 从服务器接收的流量KB数
*.1.3.2.1.13.0 cacheServerOutKb Counter32 2.0+ 发送给服务器的流量KB数
*.1.3.2.1.14.0 cacheCurrentSwapSize Gauge32 2.0+ 存储交换大小
*.1.3.2.1.15.0 cacheClients Gauge32 2.2+ 访问缓存的客户端数量
服务时间统计        
*.1.3.2.2.1.1.1 cacheMedianTime.1 Integer32 2.0+ 用于索引表的1/5/60的值
*.1.3.2.2.1.1.5 cacheMedianTime.5 Integer32 2.0+  
*.1.3.2.2.1.1.60 cacheMedianTime.60 Integer32 2.0+  
*.1.3.2.2.1.2.1 cacheHttpAllSvcTime.1 Integer32 2.0+ HTTP所有服务时间,以毫秒为单位。
*.1.3.2.2.1.2.5 cacheHttpAllSvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.2.60 cacheHttpAllSvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.3.1 cacheHttpMissSvcTime.1 Integer32 2.0+ HTTP未命中服务时间,以毫秒为单位。
*.1.3.2.2.1.3.5 cacheHttpMissSvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.3.60 cacheHttpMissSvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.4.1 cacheHttpNmSvcTime.1 Integer32 2.0+ HTTP未修改服务时间,以毫秒为单位。
*.1.3.2.2.1.4.5 cacheHttpNmSvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.4.60 cacheHttpNmSvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.5.1 cacheHttpHitSvcTime.1 Integer32 2.0+ HTTP命中服务时间,以毫秒为单位。
*.1.3.2.2.1.5.5 cacheHttpHitSvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.5.60 cacheHttpHitSvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.6.1 cacheIcpQuerySvcTime.1 Integer32 2.0+ ICP查询服务时间,以毫秒为单位。
*.1.3.2.2.1.6.5 cacheIcpQuerySvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.6.60 cacheIcpQuerySvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.7.1 cacheIcpReplySvcTime.1 Integer32 2.0+ ICP回复服务时间,以毫秒为单位。
*.1.3.2.2.1.7.5 cacheIcpReplySvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.7.60 cacheIcpReplySvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.8.1 cacheDnsSvcTime.1 Integer32 2.0+ DNS服务时间,以毫秒为单位。
*.1.3.2.2.1.8.5 cacheDnsSvcTime.5 Integer32 2.0+  
*.1.3.2.2.1.8.60 cacheDnsSvcTime.60 Integer32 2.0+  
*.1.3.2.2.1.9.1 cacheRequestHitRatio.1 Integer32 2.2+ 请求命中率
*.1.3.2.2.1.9.5 cacheRequestHitRatio.5 Integer32 2.2+  
*.1.3.2.2.1.9.60 cacheRequestHitRatio.60 Integer32 2.2+  
*.1.3.2.2.1.10.1 cacheRequestByteRatio.1 Integer32 2.2+ 字节命中率
*.1.3.2.2.1.10.5 cacheRequestByteRatio.5 Integer32 2.2+  
*.1.3.2.2.1.10.60 cacheRequestByteRatio.60 Integer32 2.2+  
*.1.3.2.2.1.11.1 cacheHttpNhSvcTime.1 Integer32 2.6+ HTTP刷新命中服务时间,以毫秒为单位。
*.1.3.2.2.1.11.5 cacheHttpNhSvcTime.5 Integer32 2.6+  
*.1.3.2.2.1.11.60 cacheHttpNhSvcTime.60 Integer32 2.6+  
IP地址缓存统计        
*.1.4.1.1.0 cacheIpEntries Gauge32 2.0+ IP缓存条目
*.1.4.1.2.0 cacheIpRequests Counter32 2.0+ IP缓存请求数量
*.1.4.1.3.0 cacheIpHits Counter32 2.0+ IP缓存命中次数
*.1.4.1.4.0 cacheIpPendingHits Gauge32 2.0+ IP缓存待处理命中次数
*.1.4.1.5.0 cacheIpNegativeHits Counter32 2.0+ IP缓存待处理命中次数
*.1.4.1.6.0 cacheIpMisses Counter32 2.0+ IP缓存未命中次数
*.1.4.1.7.0 cacheBlockingGetHostByName Counter32 2.0+ 阻塞式gethostbyname请求数量
*.1.4.1.8.0 cacheAttemptReleaseLckEntries Counter32 2.0+ 尝试释放锁定IP缓存条目的次数
*.1.4.1.9.0 cacheQueueLength Guage32 2.0-2.1 已弃用。
域名(FQDN)缓存统计        
*.1.4.2.1.0 cacheFqdnEntries Gauge32 2.0+ FQDN缓存条目
*.1.4.2.2.0 cacheFqdnRequests Counter32 2.0+ FQDN缓存请求数量
*.1.4.2.3.0 cacheFqdnHits Counter32 2.0+ FQDN缓存命中次数
*.1.4.2.4.0 cacheFqdnPendingHits Gauge32 2.0+ FQDN缓存待处理命中次数
*.1.4.2.5.0 cacheFqdnNegativeHits Counter32 2.0+ FQDN缓存负命中次数
*.1.4.2.6.0 cacheFqdnMisses Counter32 2.0+ FQDN缓存未命中次数
*.1.4.2.7.0 cacheBlockingGetHostByAddr Counter32 2.0+ 阻塞式gethostbyaddr请求数量
*.1.4.2.8.0 cacheQueueLength Guage32 2.0-2.1 已弃用。
DNS查找统计        
*.1.4.3.1.0 cacheDnsRequests Counter32 2.0+ 外部DNS服务器请求数量
*.1.4.3.2.0 cacheDnsReplies Counter32 2.0+ 外部DNS服务器回复数量
*.1.4.3.3.0 cacheDnsNumberServers Counter32 2.0+ 外部DNS服务器进程数量
对等服务器表(Squid-2.x)按IPv4地址索引        
*.1.5.1.1.1 cachePeerName STRING 2.0-3.0 对等缓存的FQDN名称或内部别名
*.1.5.1.1.2 cachePeerAddr IP地址 2.0-3.0 对等缓存的IP地址
*.1.5.1.1.3 cachePeerPortHttp Integer32 2.0-3.0 对等节点监听HTTP请求的端口
*.1.5.1.1.4 cachePeerPortIcp Integer32 2.0-3.0 对等节点监听ICP请求的端口,如果未配置发送ICP请求则应为0。
*.1.5.1.1.5 cachePeerType Integer32 2.0-3.0 对等节点类型
*.1.5.1.1.6 cachePeerState Integer32 2.0-3.0 此对等节点的运行状态
*.1.5.1.1.7 cachePeerPingsSent Counter32 2.0-3.0 发送给对等节点的ping次数
*.1.5.1.1.8 cachePeerPingsAcked Counter32 2.0-3.0 从对等节点收到的ping次数
*.1.5.1.1.9 cachePeerFetches Counter32 2.0-3.0 选择此对等节点的次数
*.1.5.1.1.10 cachePeerRtt Integer32 2.0-3.0 到对等节点的最后已知往返时间(以毫秒为单位)
*.1.5.1.1.11 cachePeerIgnored Counter32 2.0-3.0 此对等节点被忽略的次数
*.1.5.1.1.12 cachePeerKeepAlSent Counter32 2.0-3.0 发送的keepalive次数
*.1.5.1.1.13 cachePeerKeepAlRecv Counter32 2.0-3.0 收到的keepalive次数
*.1.5.1.1.14 cachePeerIndex Integer32 2.6-2.8 每个对等节点的引用索引
*.1.5.1.1.15 cachePeerHost Integer32 2.6-2.8 对等缓存的FQDN名称
对等服务器表(Squid-2.6)按squid.conf顺序索引        
*.1.5.1.2.1 cachePeerName Integer32 2.6-2.8 对等缓存的FQDN名称或内部别名
*.1.5.1.2.2 cachePeerAddr IP地址 2.6-2.8 对等缓存的IP地址
*.1.5.1.2.3 cachePeerPortHttp Integer32 2.6-2.8 对等节点监听HTTP请求的端口
*.1.5.1.2.4 cachePeerPortIcp Integer32 2.6-2.8 对等节点监听ICP请求的端口,如果未配置发送ICP请求则应为0。
*.1.5.1.2.5 cachePeerType Integer32 2.6-2.8 对等节点类型
*.1.5.1.2.6 cachePeerState Integer32 2.6-2.8 此对等节点的运行状态
*.1.5.1.2.7 cachePeerPingsSent Counter32 2.6-2.8 发送给对等节点的ping次数
*.1.5.1.2.8 cachePeerPingsAcked Counter32 2.6-2.8 从对等节点收到的ping次数
*.1.5.1.2.9 cachePeerFetches Counter32 2.6-2.8 选择此对等节点的次数
*.1.5.1.2.10 cachePeerRtt Integer32 2.6-2.8 到对等节点的最后已知往返时间(以毫秒为单位)
*.1.5.1.2.11 cachePeerIgnored Counter32 2.6-2.8 此对等节点被忽略的次数
*.1.5.1.2.12 cachePeerKeepAlSent Counter32 2.6-2.8 发送的keepalive次数
*.1.5.1.2.13 cachePeerKeepAlRecv Counter32 2.6-2.8 收到的keepalive次数
*.1.5.1.2.14 cachePeerIndex Integer32 2.6-2.8 每个对等节点的引用索引
*.1.5.1.2.15 cachePeerHost STRING 2.6-2.8 对等缓存的FQDN名称
对等服务器表(Squid-3.1及更高版本)        
*.1.5.1.3.1 cachePeerIndex Integer32 3.1+ 对于托管系统中的每个cache_peer实例,这是一个大于零的唯一值。
*.1.5.1.3.2 cachePeerName STRING 3.1+ 对等缓存的FQDN名称或内部别名
*.1.5.1.3.3 cachePeerAddressType InetAddressType 3.1+ 对等缓存可达的Internet地址类型。
*.1.5.1.3.4 cachePeerAddress InetAddress 3.1+ 对等缓存的Internet地址。此地址的类型由cachePeerAddressType对象的值确定。
*.1.5.1.3.5 cachePeerPortHttp Integer32 3.1+ 对等节点监听HTTP请求的端口
*.1.5.1.3.6 cachePeerPortIcp Integer32 3.1+ 对等节点监听ICP请求的端口,如果未配置发送ICP请求则应为0。
*.1.5.1.3.7 cachePeerType Integer32 3.1+ 对等节点类型
*.1.5.1.3.8 cachePeerState Integer32 3.1+ 此对等节点的运行状态
*.1.5.1.3.9 cachePeerPingsSent Counter32 3.1+ 发送给对等节点的ping次数
*.1.5.1.3.10 cachePeerPingsAcked Counter32 3.1+ 从对等节点收到的ping次数
*.1.5.1.3.11 cachePeerFetches Counter32 3.1+ 选择此对等节点的次数
*.1.5.1.3.12 cachePeerRtt Integer32 3.1+ 到对等节点的最后已知往返时间(以毫秒为单位)
*.1.5.1.3.13 cachePeerIgnored Counter32 3.1+ 此对等节点被忽略的次数
*.1.5.1.3.14 cachePeerKeepAlSent Counter32 3.1+ 发送的keepalive次数
*.1.5.1.3.15 cachePeerKeepAlRecv Counter32 3.1+ 收到的keepalive次数
客户端表(Squid-2)        
*.1.5.2.1.1 cacheClientAddr IP地址 2.x-3.0 客户端的IP地址
*.1.5.2.1.2 cacheClientHttpRequests Counter32 2.x-3.0 从客户端收到的HTTP请求数量
*.1.5.2.1.3 cacheClientHttpKb Counter32 2.x-3.0 发送给此客户端的总HTTP流量大小
*.1.5.2.1.4 cacheClientHttpHits Counter32 2.x-3.0 响应此客户端HTTP请求的命中次数
*.1.5.2.1.5 cacheClientHTTPHitKb Counter32 2.x-3.0 HTTP命中流量大小,以KB为单位。
*.1.5.2.1.6 cacheClientIcpRequests Counter32 2.x-3.0 从客户端收到的ICP请求数量
*.1.5.2.1.7 cacheClientIcpKb Counter32 2.x-3.0 发送给此客户端(子进程)的总ICP流量大小。
*.1.5.2.1.8 cacheClientIcpHits Counter32 2.x-3.0 响应此客户端ICP请求的命中次数
*.1.5.2.1.9 cacheClientIcpHitKb Counter32 2.x-3.0 ICP命中流量大小,以KB为单位。
客户端表(Squid-3及更高版本)        
*.1.5.2.2.1 cacheClientAddrType Integer32 3.1+ IP版本 :: 1 = IPv4, 2 = IPv6
*.1.5.2.2.2 cacheClientAddr IP地址 3.1+ 客户端的IP地址
*.1.5.2.2.3 cacheClientHttpRequests Counter32 3.1+ 从客户端收到的HTTP请求数量
*.1.5.2.2.4 cacheClientHttpKb Counter32 3.1+ 发送给此客户端的总HTTP流量大小
*.1.5.2.2.5 cacheClientHttpHits Counter32 3.1+ 响应此客户端HTTP请求的命中次数
*.1.5.2.2.6 cacheClientHTTPHitKb Counter32 3.1+ HTTP命中流量大小,以KB为单位。
*.1.5.2.2.7 cacheClientIcpRequests Counter32 3.1+ 从客户端收到的ICP请求数量
*.1.5.2.2.8 cacheClientIcpKb Counter32 3.1+ 发送给此客户端(子进程)的总ICP流量大小。
*.1.5.2.2.9 cacheClientIcpHits Counter32 3.1+ 响应此客户端ICP请求的命中次数
*.1.5.2.2.10 cacheClientIcpHitKb Counter32 3.1+ ICP命中流量大小,以KB为单位。

🔗 FAQ

🔗 如何查询Squid SNMP代理?

您可以使用snmpwalk程序测试您的Squid是否支持SNMP(snmpwalkNET-SNMP项目的一部分)。请注意,您必须指定SNMP端口,Squid的默认端口是3401。

snmpwalk -m /usr/share/squid/mib.txt -v2c -Cc -c communitystring hostname:3401 .1.3.6.1.4.1.3495.1.1

如果输出类似以下内容:

enterprises.nlanr.squid.cacheSystem.cacheSysVMsize = 7970816
enterprises.nlanr.squid.cacheSystem.cacheSysStorage = 2796142
enterprises.nlanr.squid.cacheSystem.cacheUptime = Timeticks: (766299) 2:07:42.99

或者

SQUID-MIB::cacheUptime.0 = Timeticks: (237007) 0:39:30.07
SQUID-MIB::cacheSoftware.0 = STRING: squid
SQUID-MIB::cacheVersionId.0 = STRING: "3.1"

或者

SNMPv2-SMI::enterprises.3495.1.1.1.0 = INTEGER: 460
SNMPv2-SMI::enterprises.3495.1.1.2.0 = INTEGER: 1566452
SNMPv2-SMI::enterprises.3495.1.1.3.0 = Timeticks: (584627) 1:37:26.27

那么它工作正常,您应该能够从中生成有用的统计信息。

🔗 SNMP和Squid可以用于什么?

您可以使用SNMP和Squid做很多事情。在一定程度上,它可以提供关于您的代理服务器运行情况的长期概览。它还可以用作问题解决工具。例如:您的文件描述符使用情况如何?或者您的LRU在一天的不同时间如何变化。这些是您通常无法很好地监控的,除了频繁点击cachemgr。为什么不让MRTG为您完成呢?

🔗 如何在Squid中使用SNMP?

有许多工具可用于通过SNMP监控Squid。许多人使用MRTG。另一个不错的组合是NET-SNMP加上RRDTool

🔗 在哪里可以获得更多关于Squid和SNMP的信息/讨论?

有一个来自cache-snmp@ircache.net邮件列表的邮件归档,网址是邮件列表

订阅应发送至:cache-snmp-request@ircache.net

🔗 使用MRTG监控Squid

有些人使用MRTG通过Squid的SNMP接口进行查询。

要获取有关使用MRTG与Squid结合的说明,请访问这些页面:

Squid MRTG配置的更多示例可以在这里找到:

🔗 使用Cacti监控Squid

Cacti是一个基于MRTG相同概念的软件工具,但具有更用户友好的界面和基础设施。其主页是http://www.cacti.net/。它允许使用预定义的模板来简化部署。Squid的模板可以在Cacti论坛上找到。

🔗 使用OpenNMS进行监控

OpenNMS网站有一个完整的教程

🔗 未来工作

Squid内置的SNMP代理非常有限,因为它是在某些地方与v1兼容的SNMP v2c。

  1. 捆绑的库需要更换。
    • net-snmp v5.4现已广泛可用。net-snmp
    • 仅通过更新就应该可以解决64位整数问题。
    • 这可能在没有其他特殊更改的情况下解决批量OID请求。
  2. Squid内部的许多统计信息和细节需要添加到树中。
    • 与cachemgr可用数据同步。
    • 可能导致从SMP工作进程共享cachemgr/SNMP内部PDU获取。
  3. 可以通过SNMP代理进行实时配置更改。
    • 切换指令和标量值是主要的。
    • 可能还会在某些指令上切换选项。
    • 需要库支持SET操作。
  4. MIB文件的自动生成需要在某个时候完成。
    • MIB内容的管理已经很复杂,随着OID的增加,它只会变得更加困难。
    • 在日常维护或捆绑过程中构建MIB文件的过程将非常有助于长期发展。

类别:功能

导航:站点搜索站点页面类别🔼 向上