snmp_agent.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 49 SNMP Interface */
10 
11 #include "squid.h"
12 #include "cache_snmp.h"
13 #include "CachePeer.h"
14 #include "CachePeers.h"
15 #include "globals.h"
16 #include "mem/Meter.h"
17 #include "mem/Stats.h"
18 #include "mem_node.h"
19 #include "neighbors.h"
20 #include "snmp_agent.h"
21 #include "snmp_core.h"
22 #include "SquidConfig.h"
23 #include "SquidMath.h"
24 #include "stat.h"
25 #include "StatCounters.h"
26 #include "StatHist.h"
27 #include "Store.h"
28 #include "store/Controller.h"
29 #include "StoreStats.h"
30 #include "tools.h"
31 #include "util.h"
32 
33 /************************************************************************
34 
35  SQUID MIB Implementation
36 
37  ************************************************************************/
38 
39 /*
40  * cacheSystem group
41  */
42 
45 {
46  variable_list *Answer = nullptr;
47  MemBuf tmp;
48  debugs(49, 5, "snmp_sysFn: Processing request:" << snmpDebugOid(Var->name, Var->name_length, tmp));
49  *ErrP = SNMP_ERR_NOERROR;
50 
51  switch (Var->name[LEN_SQ_SYS]) {
52 
53  case SYSVMSIZ:
54  Answer = snmp_var_new_integer(Var->name, Var->name_length,
55  mem_node::StoreMemSize() >> 10,
56  ASN_INTEGER);
57  break;
58 
59  case SYSSTOR:
60  Answer = snmp_var_new_integer(Var->name, Var->name_length,
61  Store::Root().currentSize() >> 10,
62  ASN_INTEGER);
63  break;
64 
65  case SYS_UPTIME:
66  Answer = snmp_var_new_integer(Var->name, Var->name_length,
67  (int)(tvSubDsec(squid_start, current_time) * 100),
69  break;
70 
71  default:
72  *ErrP = SNMP_ERR_NOSUCHNAME;
73  break;
74  }
75 
76  return Answer;
77 }
78 
79 /*
80  * cacheConfig group
81  */
84 {
85  variable_list *Answer = nullptr;
86  const char *cp = nullptr;
87  debugs(49, 5, "snmp_confFn: Processing request with magic " << Var->name[8] << "!");
88  *ErrP = SNMP_ERR_NOERROR;
89 
90  switch (Var->name[LEN_SQ_CONF]) {
91 
92  case CONF_ADMIN:
93  Answer = snmp_var_new(Var->name, Var->name_length);
94  Answer->type = ASN_OCTET_STR;
95  Answer->val_len = strlen(Config.adminEmail);
96  Answer->val.string = (u_char *) xstrdup(Config.adminEmail);
97  break;
98 
99  case CONF_VERSION:
100  Answer = snmp_var_new(Var->name, Var->name_length);
101  Answer->type = ASN_OCTET_STR;
102  Answer->val_len = strlen(APP_SHORTNAME);
103  Answer->val.string = (u_char *) xstrdup(APP_SHORTNAME);
104  break;
105 
106  case CONF_VERSION_ID:
107  Answer = snmp_var_new(Var->name, Var->name_length);
108  Answer->type = ASN_OCTET_STR;
109  Answer->val_len = strlen(VERSION);
110  Answer->val.string = (u_char *) xstrdup(VERSION);
111  break;
112 
113  case CONF_STORAGE:
114 
115  switch (Var->name[LEN_SQ_CONF + 1]) {
116 
117  case CONF_ST_MMAXSZ:
118  Answer = snmp_var_new_integer(Var->name, Var->name_length,
119  (snint) (Config.memMaxSize >> 20),
120  ASN_INTEGER);
121  break;
122 
123  case CONF_ST_SWMAXSZ:
124  Answer = snmp_var_new_integer(Var->name, Var->name_length,
125  (snint) (Store::Root().maxSize() >> 20),
126  ASN_INTEGER);
127  break;
128 
129  case CONF_ST_SWHIWM:
130  Answer = snmp_var_new_integer(Var->name, Var->name_length,
132  ASN_INTEGER);
133  break;
134 
135  case CONF_ST_SWLOWM:
136  Answer = snmp_var_new_integer(Var->name, Var->name_length,
138  ASN_INTEGER);
139  break;
140 
141  default:
142  *ErrP = SNMP_ERR_NOSUCHNAME;
143  break;
144  }
145 
146  break;
147 
148  case CONF_LOG_FAC:
149  Answer = snmp_var_new(Var->name, Var->name_length);
150 
151  if (!(cp = Debug::debugOptions))
152  cp = "None";
153 
154  Answer->type = ASN_OCTET_STR;
155 
156  Answer->val_len = strlen(cp);
157 
158  Answer->val.string = (u_char *) xstrdup(cp);
159 
160  break;
161 
162  case CONF_UNIQNAME:
163  Answer = snmp_var_new(Var->name, Var->name_length);
164 
165  cp = uniqueHostname();
166 
167  Answer->type = ASN_OCTET_STR;
168 
169  Answer->val_len = strlen(cp);
170 
171  Answer->val.string = (u_char *) xstrdup(cp);
172 
173  break;
174 
175  default:
176  *ErrP = SNMP_ERR_NOSUCHNAME;
177 
178  break;
179  }
180 
181  return Answer;
182 }
183 
184 /*
185  * cacheMesh group
186  * - cachePeerTable
187  */
190 {
191  variable_list *Answer = nullptr;
192 
193  Ip::Address laddr;
194  char *cp = nullptr;
195  CachePeer *p = nullptr;
196  debugs(49, 5, "snmp_meshPtblFn: peer " << Var->name[LEN_SQ_MESH + 3] << " requested!");
197  *ErrP = SNMP_ERR_NOERROR;
198 
199  u_int index = Var->name[LEN_SQ_MESH + 3] ;
200  for (const auto &peer: CurrentCachePeers()) {
201  if (peer->index == index) {
202  laddr = peer->in_addr ;
203  p = peer.get();
204  break;
205  }
206  }
207 
208  if (p == nullptr) {
209  *ErrP = SNMP_ERR_NOSUCHNAME;
210  return nullptr;
211  }
212 
213  switch (Var->name[LEN_SQ_MESH + 2]) {
214  case MESH_PTBL_INDEX: { // XXX: Should be visible?
215  Answer = snmp_var_new_integer(Var->name, Var->name_length,
216  (snint)p->index, SMI_INTEGER);
217  }
218  break;
219 
220  case MESH_PTBL_NAME:
221  cp = p->host;
222  Answer = snmp_var_new(Var->name, Var->name_length);
223  Answer->type = ASN_OCTET_STR;
224  Answer->val_len = strlen(cp);
225  Answer->val.string = (u_char *) xstrdup(cp);
226 
227  break;
228 
229  case MESH_PTBL_ADDR_TYPE: {
230  int ival;
232  Answer = snmp_var_new_integer(Var->name, Var->name_length,
233  ival, SMI_INTEGER);
234  }
235  break;
236  case MESH_PTBL_ADDR: {
237  Answer = snmp_var_new(Var->name, Var->name_length);
238  // InetAddress doesn't have its own ASN.1 type,
239  // like IpAddr does (SMI_IPADDRESS)
240  // See: rfc4001.txt
241  Answer->type = ASN_OCTET_STR;
242  char host[MAX_IPSTRLEN];
243  laddr.toStr(host,MAX_IPSTRLEN);
244  Answer->val_len = strlen(host);
245  Answer->val.string = (u_char *) xstrdup(host);
246  }
247  break;
248 
249  case MESH_PTBL_HTTP:
250  Answer = snmp_var_new_integer(Var->name, Var->name_length,
251  (snint) p->http_port,
252  ASN_INTEGER);
253  break;
254 
255  case MESH_PTBL_ICP:
256  Answer = snmp_var_new_integer(Var->name, Var->name_length,
257  (snint) p->icp.port,
258  ASN_INTEGER);
259  break;
260 
261  case MESH_PTBL_TYPE:
262  Answer = snmp_var_new_integer(Var->name, Var->name_length,
263  (snint) p->type,
264  ASN_INTEGER);
265  break;
266 
267  case MESH_PTBL_STATE:
268  Answer = snmp_var_new_integer(Var->name, Var->name_length,
269  (snint) neighborUp(p),
270  ASN_INTEGER);
271  break;
272 
273  case MESH_PTBL_SENT:
274  Answer = snmp_var_new_integer(Var->name, Var->name_length,
275  p->stats.pings_sent,
276  SMI_COUNTER32);
277  break;
278 
279  case MESH_PTBL_PACKED:
280  Answer = snmp_var_new_integer(Var->name, Var->name_length,
281  p->stats.pings_acked,
282  SMI_COUNTER32);
283  break;
284 
285  case MESH_PTBL_FETCHES:
286  Answer = snmp_var_new_integer(Var->name, Var->name_length,
287  p->stats.fetches,
288  SMI_COUNTER32);
289  break;
290 
291  case MESH_PTBL_RTT:
292  Answer = snmp_var_new_integer(Var->name, Var->name_length,
293  p->stats.rtt,
294  ASN_INTEGER);
295  break;
296 
297  case MESH_PTBL_IGN:
298  Answer = snmp_var_new_integer(Var->name, Var->name_length,
300  SMI_COUNTER32);
301  break;
302 
303  case MESH_PTBL_KEEPAL_S:
304  Answer = snmp_var_new_integer(Var->name, Var->name_length,
306  SMI_COUNTER32);
307  break;
308 
309  case MESH_PTBL_KEEPAL_R:
310  Answer = snmp_var_new_integer(Var->name, Var->name_length,
312  SMI_COUNTER32);
313  break;
314 
315  default:
316  *ErrP = SNMP_ERR_NOSUCHNAME;
317  break;
318  }
319 
320  return Answer;
321 }
322 
325 {
326  variable_list *Answer = nullptr;
327 
328  static struct rusage rusage;
329  debugs(49, 5, "snmp_prfSysFn: Processing request with magic " << Var->name[LEN_SQ_PRF + 1] << "!");
330  *ErrP = SNMP_ERR_NOERROR;
331 
332  switch (Var->name[LEN_SQ_PRF + 1]) {
333 
334  case PERF_SYS_PF:
336  Answer = snmp_var_new_integer(Var->name, Var->name_length,
338  SMI_COUNTER32);
339  break;
340 
341  case PERF_SYS_NUMR:
342  Answer = snmp_var_new_integer(Var->name, Var->name_length,
344  SMI_COUNTER32);
345  break;
346 
347  case PERF_SYS_MEMUSAGE: {
348  Mem::PoolStats stats;
349  Mem::GlobalStats(stats);
350  Answer = snmp_var_new_integer(Var->name, Var->name_length,
351  (snint) stats.meter->alloc.currentLevel() >> 10,
352  ASN_INTEGER);
353  }
354  break;
355 
356  case PERF_SYS_CPUTIME:
358  Answer = snmp_var_new_integer(Var->name, Var->name_length,
360  ASN_INTEGER);
361  break;
362 
363  case PERF_SYS_CPUUSAGE:
365  Answer = snmp_var_new_integer(Var->name, Var->name_length,
367  ASN_INTEGER);
368  break;
369 
370  case PERF_SYS_MAXRESSZ:
372  Answer = snmp_var_new_integer(Var->name, Var->name_length,
374  ASN_INTEGER);
375  break;
376 
377  case PERF_SYS_CURLRUEXP:
378  /* No global LRU info anymore */
379  Answer = snmp_var_new_integer(Var->name, Var->name_length,
380  0,
381  SMI_TIMETICKS);
382  break;
383 
384  case PERF_SYS_CURUNLREQ:
385  Answer = snmp_var_new_integer(Var->name, Var->name_length,
387  SMI_GAUGE32);
388  break;
389 
391  Answer = snmp_var_new_integer(Var->name, Var->name_length,
393  SMI_GAUGE32);
394  break;
395 
397  Answer = snmp_var_new_integer(Var->name, Var->name_length,
398  (snint) RESERVED_FD,
399  SMI_GAUGE32);
400  break;
401 
402  case PERF_SYS_CURUSED_FD:
403  Answer = snmp_var_new_integer(Var->name, Var->name_length,
404  (snint) Number_FD,
405  SMI_GAUGE32);
406  break;
407 
408  case PERF_SYS_CURMAX_FD:
409  Answer = snmp_var_new_integer(Var->name, Var->name_length,
410  (snint) Biggest_FD,
411  SMI_GAUGE32);
412  break;
413 
414  case PERF_SYS_NUMOBJCNT: {
415  StoreInfoStats stats;
416  Store::Root().getStats(stats);
417  Answer = snmp_var_new_integer(Var->name, Var->name_length,
418  (snint) (stats.mem.count + stats.swap.count),
419  SMI_GAUGE32);
420  break;
421  }
422 
423  default:
424  *ErrP = SNMP_ERR_NOSUCHNAME;
425  break;
426  }
427 
428  return Answer;
429 }
430 
433 {
434  variable_list *Answer = nullptr;
435  static StatCounters *f = nullptr;
436  static StatCounters *l = nullptr;
437  double x;
438  int minutes;
439  debugs(49, 5, "snmp_prfProtoFn: Processing request with magic " << Var->name[LEN_SQ_PRF] << "!");
440  *ErrP = SNMP_ERR_NOERROR;
441 
442  switch (Var->name[LEN_SQ_PRF + 1]) {
443 
444  case PERF_PROTOSTAT_AGGR: /* cacheProtoAggregateStats */
445 
446  switch (Var->name[LEN_SQ_PRF + 2]) {
447 
449  Answer = snmp_var_new_integer(Var->name, Var->name_length,
451  SMI_COUNTER32);
452  break;
453 
455  Answer = snmp_var_new_integer(Var->name, Var->name_length,
457  SMI_COUNTER32);
458  break;
459 
461  Answer = snmp_var_new_integer(Var->name, Var->name_length,
463  SMI_COUNTER32);
464  break;
465 
467  Answer = snmp_var_new_integer(Var->name, Var->name_length,
469  SMI_COUNTER32);
470  break;
471 
473  Answer = snmp_var_new_integer(Var->name, Var->name_length,
475  SMI_COUNTER32);
476  break;
477 
479  Answer = snmp_var_new_integer(Var->name, Var->name_length,
481  SMI_COUNTER32);
482  break;
483 
485  Answer = snmp_var_new_integer(Var->name, Var->name_length,
487  SMI_COUNTER32);
488  break;
489 
491  Answer = snmp_var_new_integer(Var->name, Var->name_length,
493  SMI_COUNTER32);
494  break;
495 
497  Answer = snmp_var_new_integer(Var->name, Var->name_length,
499  SMI_COUNTER32);
500  break;
501 
503  Answer = snmp_var_new_integer(Var->name, Var->name_length,
504  (snint) statCounter.server.all.requests,
505  SMI_INTEGER);
506  break;
507 
509  Answer = snmp_var_new_integer(Var->name, Var->name_length,
510  (snint) statCounter.server.all.errors,
511  SMI_INTEGER);
512  break;
513 
515  Answer = snmp_var_new_integer(Var->name, Var->name_length,
516  (snint) statCounter.server.all.kbytes_in.kb,
517  SMI_COUNTER32);
518  break;
519 
521  Answer = snmp_var_new_integer(Var->name, Var->name_length,
522  (snint) statCounter.server.all.kbytes_out.kb,
523  SMI_COUNTER32);
524  break;
525 
527  Answer = snmp_var_new_integer(Var->name, Var->name_length,
528  (snint) Store::Root().currentSize() >> 10,
529  SMI_GAUGE32);
530  break;
531 
533  Answer = snmp_var_new_integer(Var->name, Var->name_length,
535  SMI_GAUGE32);
536  break;
537 
538  default:
539  *ErrP = SNMP_ERR_NOSUCHNAME;
540  break;
541  }
542 
543  return Answer;
544 
546 
547  if (Var->name_length == LEN_SQ_PRF + 5)
548  minutes = Var->name[LEN_SQ_PRF + 4];
549  else
550  break;
551 
552  if ((minutes < 1) || (minutes > 60))
553  break;
554 
555  f = snmpStatGet(0);
556 
557  l = snmpStatGet(minutes);
558 
559  debugs(49, 8, "median: min= " << minutes << ", " << Var->name[LEN_SQ_PRF + 3] << " l= " << l << " , f = " << f);
560  debugs(49, 8, "median: l= " << l << " , f = " << f);
561 
562  switch (Var->name[LEN_SQ_PRF + 3]) {
563 
564  case PERF_MEDIAN_TIME:
565  x = minutes;
566  break;
567 
571  break;
572 
576  break;
577 
578  case PERF_MEDIAN_HTTP_NM:
581  break;
582 
586  break;
587 
590  break;
591 
594  break;
595 
596  case PERF_MEDIAN_DNS:
598  break;
599 
600  case PERF_MEDIAN_RHR:
601  x = statRequestHitRatio(minutes);
602  break;
603 
604  case PERF_MEDIAN_BHR:
605  x = statByteHitRatio(minutes);
606  break;
607 
608  case PERF_MEDIAN_HTTP_NH:
611  break;
612 
613  default:
614  *ErrP = SNMP_ERR_NOSUCHNAME;
615  return nullptr;
616  }
617 
618  return snmp_var_new_integer(Var->name, Var->name_length,
619  (snint) x,
620  SMI_INTEGER);
621  }
622 
623  *ErrP = SNMP_ERR_NOSUCHNAME;
624  return nullptr;
625 }
626 
@ MESH_PTBL_FETCHES
Definition: cache_snmp.h:246
static char * debugOptions
Definition: Stream.h:80
static size_t StoreMemSize()
Definition: mem_node.cc:64
@ SYSSTOR
Definition: cache_snmp.h:59
@ SYSVMSIZ
Definition: cache_snmp.h:58
@ PERF_SYS_CURMAX_FD
Definition: cache_snmp.h:125
double tvSubDsec(struct timeval t1, struct timeval t2)
Definition: gadgets.cc:44
struct timeval squid_start
@ PERF_PROTOSTAT_AGGR_HTTP_ERRORS
Definition: cache_snmp.h:142
@ PERF_PROTOSTAT_AGGR_ICP_SKB
Definition: cache_snmp.h:147
#define SMI_TIMETICKS
Definition: snmp_vars.h:79
@ MESH_PTBL_IGN
Definition: cache_snmp.h:248
const char * snmpDebugOid(oid *Name, snint Len, MemBuf &outbuf)
Definition: snmp_core.cc:1056
const char * uniqueHostname(void)
Definition: tools.cc:547
PoolMeter * meter
Definition: Stats.h:22
@ PERF_PROTOSTAT_AGGR_CURSWAP
Definition: cache_snmp.h:153
int fetches
Definition: CachePeer.h:75
@ PERF_SYS_CURRESERVED_FD
Definition: cache_snmp.h:123
u_int index
n-th cache_peer directive, starting with 1
Definition: CachePeer.h:53
double statByteHitRatio(int minutes)
Definition: stat.cc:1739
union variable_list::@19 val
@ PERF_PROTOSTAT_AGGR_ICP_S
Definition: cache_snmp.h:145
int reads
Definition: IoStats.h:19
struct StatCounters::@115 unlink
peer_t type
Definition: CachePeer.h:68
double count
number of cached objects
Definition: StoreStats.h:21
StatHist nearHitSvcTime
Definition: StatCounters.h:50
size_t memMaxSize
Definition: SquidConfig.h:91
struct StatCounters::@112::@122 all
@ PERF_PROTOSTAT_AGGR_ICP_R
Definition: cache_snmp.h:146
#define ASN_OCTET_STR
Definition: asn1.h:54
StatHist replySvcTime
Definition: StatCounters.h:83
@ PERF_PROTOSTAT_AGGR_REQ
Definition: cache_snmp.h:149
@ MESH_PTBL_ADDR
Definition: cache_snmp.h:239
@ PERF_PROTOSTAT_AGGR_HTTP_REQ
Definition: cache_snmp.h:140
@ PERF_MEDIAN_DNS
Definition: cache_snmp.h:168
@ PERF_SYS_CURLRUEXP
Definition: cache_snmp.h:120
@ PERF_SYS_CURUNLREQ
Definition: cache_snmp.h:121
#define xstrdup
@ PERF_MEDIAN_BHR
Definition: cache_snmp.h:170
struct CachePeer::@25 stats
@ PERF_MEDIAN_ICP_REPLY
Definition: cache_snmp.h:167
struct StatCounters::@112 server
@ PERF_PROTOSTAT_MEDIAN
Definition: cache_snmp.h:133
IoStats IOStats
unsigned short port
Definition: CachePeer.h:93
@ PERF_SYS_CPUTIME
Definition: cache_snmp.h:116
@ PERF_MEDIAN_HTTP_NM
Definition: cache_snmp.h:164
#define INETADDRESSTYPE_IPV4
Definition: snmp_vars.h:93
#define LEN_SQ_PRF
Definition: cache_snmp.h:47
struct StatCounters::@116 dns
@ PERF_SYS_NUMOBJCNT
Definition: cache_snmp.h:119
Meter alloc
Definition: Meter.h:89
bool isIPv4() const
Definition: Address.cc:178
@ MESH_PTBL_PACKED
Definition: cache_snmp.h:245
size_t GlobalStats(PoolStats &)
Definition: Stats.cc:15
variable_list * snmp_confFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:83
struct StatCounters::@111 client_http
struct SquidConfig::@82 Swap
int highWaterMark
Definition: SquidConfig.h:85
double statHistDeltaMedian(const StatHist &A, const StatHist &B)
Definition: StatHist.cc:91
@ MESH_PTBL_INDEX
Definition: cache_snmp.h:236
ssize_t currentLevel() const
Definition: Meter.h:26
#define LEN_SQ_CONF
Definition: cache_snmp.h:45
@ CONF_LOG_FAC
Definition: cache_snmp.h:75
char * toStr(char *buf, const unsigned int blen, int force=AF_UNSPEC) const
Definition: Address.cc:812
size_t kb
Definition: ByteCounter.h:25
ByteCounter kbytes_sent
Definition: StatCounters.h:76
int name_length
Definition: snmp_vars.h:71
#define APP_SHORTNAME
Definition: version.h:22
@ CONF_ST_SWLOWM
Definition: cache_snmp.h:92
#define MAX_IPSTRLEN
Length of buffer that needs to be allocated to old a null-terminated IP-string.
Definition: forward.h:25
int pings_acked
Definition: CachePeer.h:74
oid * name
Definition: snmp_vars.h:70
variable_list * snmp_prfProtoFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:432
@ CONF_ADMIN
Definition: cache_snmp.h:72
double doublePercent(const double, const double)
Definition: SquidMath.cc:25
@ PERF_SYS_MAXRESSZ
Definition: cache_snmp.h:118
@ CONF_ST_SWHIWM
Definition: cache_snmp.h:91
int64_t snint
Definition: cache_snmp.h:14
ByteCounter kbytes_in
Definition: StatCounters.h:45
StatHist nearMissSvcTime
Definition: StatCounters.h:49
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:18
StatHist svcTime
Definition: StatCounters.h:98
#define LEN_SQ_MESH
Definition: cache_snmp.h:51
int n_keepalives_sent
Definition: CachePeer.h:78
struct variable_list * snmp_var_new(oid *, int)
Definition: snmp_vars.c:109
#define LEN_SQ_SYS
Definition: cache_snmp.h:43
#define SMI_INTEGER
Definition: snmp_vars.h:71
int rusage_pagefaults(struct rusage *r)
Definition: tools.cc:274
@ PERF_MEDIAN_RHR
Definition: cache_snmp.h:169
variable_list * snmp_meshPtblFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:189
Mem mem
all cache_dirs stats
Definition: StoreStats.h:48
@ PERF_SYS_MEMUSAGE
Definition: cache_snmp.h:115
Swap swap
cache_mem stats
Definition: StoreStats.h:47
u_char * string
Definition: snmp_vars.h:75
Definition: MemBuf.h:23
StatHist hitSvcTime
Definition: StatCounters.h:51
#define SMI_GAUGE32
Definition: snmp_vars.h:77
@ MESH_PTBL_KEEPAL_S
Definition: cache_snmp.h:249
struct variable_list * snmp_var_new_integer(oid *, int, int, unsigned char)
Definition: snmp_vars.c:151
char * adminEmail
Definition: SquidConfig.h:193
@ PERF_MEDIAN_ICP_QUERY
Definition: cache_snmp.h:166
#define ASN_INTEGER
Definition: asn1.h:52
struct CachePeer::icp_ icp
@ PERF_MEDIAN_HTTP_NH
Definition: cache_snmp.h:171
@ PERF_PROTOSTAT_AGGR_KBYTES_IN
Definition: cache_snmp.h:151
StatHist missSvcTime
Definition: StatCounters.h:48
void getStats(StoreInfoStats &stats) const override
collect statistics
Definition: Controller.cc:106
u_char type
Definition: snmp_vars.h:72
@ CONF_VERSION
Definition: cache_snmp.h:73
@ CONF_ST_SWMAXSZ
Definition: cache_snmp.h:90
void squid_getrusage(struct rusage *r)
Definition: tools.cc:180
@ MESH_PTBL_STATE
Definition: cache_snmp.h:243
@ PERF_PROTOSTAT_AGGR_ERRORS
Definition: cache_snmp.h:150
@ PERF_MEDIAN_TIME
Definition: cache_snmp.h:161
@ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN
Definition: cache_snmp.h:143
int Squid_MaxFD
@ MESH_PTBL_TYPE
Definition: cache_snmp.h:242
@ PERF_SYS_PF
Definition: cache_snmp.h:113
int lowWaterMark
Definition: SquidConfig.h:86
uint64_t currentSize() const override
current size
Definition: Controller.cc:167
uint64_t maxSize() const override
Definition: Controller.cc:153
int rusage_maxrss(struct rusage *r)
Definition: tools.cc:253
double rusage_cputime(struct rusage *r)
Definition: tools.cc:238
int pings_sent
Definition: CachePeer.h:73
@ MESH_PTBL_SENT
Definition: cache_snmp.h:244
char * host
Definition: CachePeer.h:66
variable_list * snmp_sysFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:44
StatHist allSvcTime
Definition: StatCounters.h:52
@ PERF_PROTOSTAT_AGGR_CLIENTS
Definition: cache_snmp.h:154
@ PERF_MEDIAN_HTTP_ALL
Definition: cache_snmp.h:162
int rtt
Definition: CachePeer.h:76
@ CONF_VERSION_ID
Definition: cache_snmp.h:74
@ PERF_SYS_CURUNUSED_FD
Definition: cache_snmp.h:122
int RESERVED_FD
@ PERF_PROTOSTAT_AGGR_KBYTES_OUT
Definition: cache_snmp.h:152
@ PERF_MEDIAN_HTTP_MISS
Definition: cache_snmp.h:163
StatHist querySvcTime
Definition: StatCounters.h:82
int neighborUp(const CachePeer *p)
Definition: neighbors.cc:1058
StatCounters * snmpStatGet(int minutes)
Definition: stat.cc:1682
@ CONF_UNIQNAME
Definition: cache_snmp.h:77
@ PERF_SYS_CPUUSAGE
Definition: cache_snmp.h:117
@ CONF_ST_MMAXSZ
Definition: cache_snmp.h:89
@ MESH_PTBL_ADDR_TYPE
Definition: cache_snmp.h:238
#define INETADDRESSTYPE_IPV6
Definition: snmp_vars.h:94
int n_keepalives_recv
Definition: CachePeer.h:79
@ MESH_PTBL_RTT
Definition: cache_snmp.h:247
@ MESH_PTBL_HTTP
Definition: cache_snmp.h:240
@ MESH_PTBL_NAME
Definition: cache_snmp.h:237
@ SYS_UPTIME
Definition: cache_snmp.h:60
@ PERF_PROTOSTAT_AGGR_HTTP_HITS
Definition: cache_snmp.h:141
double statRequestHitRatio(int minutes)
Definition: stat.cc:1709
@ CONF_STORAGE
Definition: cache_snmp.h:76
int ignored_replies
Definition: CachePeer.h:77
#define SNMP_ERR_NOSUCHNAME
Definition: snmp_error.h:44
const CachePeers & CurrentCachePeers()
Definition: CachePeers.cc:43
#define VERSION
variable_list * snmp_prfSysFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:324
@ PERF_SYS_CURUSED_FD
Definition: cache_snmp.h:124
@ MESH_PTBL_KEEPAL_R
Definition: cache_snmp.h:250
struct IoStats::@66 Http
@ PERF_PROTOSTAT_AGGR
Definition: cache_snmp.h:132
struct StatCounters::@113 icp
@ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT
Definition: cache_snmp.h:144
@ PERF_MEDIAN_HTTP_HIT
Definition: cache_snmp.h:165
ByteCounter kbytes_out
Definition: StatCounters.h:46
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:192
ByteCounter kbytes_recv
Definition: StatCounters.h:79
int Number_FD
unsigned short http_port
Definition: CachePeer.h:104
@ MESH_PTBL_ICP
Definition: cache_snmp.h:241
int Biggest_FD
#define SNMP_ERR_NOERROR
Definition: snmp_error.h:42
High-level store statistics used by mgr:info action. Used inside PODs!
Definition: StoreStats.h:13
class SquidConfig Config
Definition: SquidConfig.cc:12
#define SMI_COUNTER32
Definition: snmp_vars.h:76
StatCounters statCounter
Definition: StatCounters.cc:12
@ PERF_SYS_NUMR
Definition: cache_snmp.h:114
@ PERF_PROTOSTAT_AGGR_ICP_RKB
Definition: cache_snmp.h:148
Controller & Root()
safely access controller singleton
Definition: Controller.cc:926

 

Introduction

Documentation

Support

Miscellaneous