Squid proxy i praćenje rada/brzine pristupa – deo 1

Ovo može da se radi na dva načina :
1. Ručno iz komandne linije
2. Korišćenjem SNMP upita kroz mrežu, sa drugog hosta sa koga se vrši monitoring (a na kome može biti MRTG, Zabbix, Nagios, etc)

Ručni upit iz komandne linije
Mora da se radi u GUI okruženju…..
a. Veličina Squid procesa. Ako pređe veličinu RAM-a, JAKO se uspori rad. Ovaj upit daje samo DO veličine RAM-a…..
# squidclient -h 10.10.10.95 -p 8080 mgr:info|grep sbrk
Process Data Segment Size via sbrk(): 49356 KB
b. Greška na stranici se dešava (pored ostalog) kada Squid mora da ode u swap područje.
# squidclient -h 10.10.10.95 -p 8080 mgr:info|grep “Page faults”
Page faults with physical i/o: 59
A to isto, u zadnjih 5 minuta i jedan sat :
# squidclient -h 10.10.10.95 -p 8080 mgr:5min|grep page_fault
page_faults = 0.000000/sec
# squidclient -h 10.10.10.95 -p 8080 mgr:60min|grep page_fault
page_faults = 0.003333/sec
c. Broj HTTP zahteva
# squidclient -h 10.10.10.95 -p 8080 mgr:info|grep “Number of HTTP requests”
Number of HTTP requests received: 5303
# squidclient -h 10.10.10.95 -p 8080 mgr:60min|grep client_http.requests
client_http.requests = 0.453610/sec
Median je vrednost člana niza poređanog po veličini, akoji se fizički nalazi u sredini niza…..
# squidclient -h 10.10.10.95 -p 8080 mgr:5min | grep client_http.all_median_svc_time
client_http.all_median_svc_time = 19.514897 seconds
d. Brzina odziva primarnog DNS servera Squid proxy servera, trebalo bi da je ispod 500ms.
# squidclient -h 10.10.10.95 -p 8080 mgr:5min | grep dns.median_svc_time
dns.median_svc_time = 18.871632 seconds
Broj file descriptors koji su trenutno u upotrebi. Njihov ukupan broj je ograničen!
# squidclient -h 10.10.10.95 -p 8080 mgr:info | grep “Number of file desc currently in use”
Number of file desc currently in use: 22
Kako videti ukupan broj fajl deskriptora na sistemu, na dva načina :
# ulimit -n
1024
# less /var/log/squid/cache.log|grep descriptors
2014/04/16 08:43:59| With 1024 file descriptors available

Postavljanje SNMP-a na proxy serveru
Da bi cela (sofisticirana) priča radila, potrebno je da se sa proxy servera podaci vuku korišćenjem SNMP protokola, i to treba na serveru instalirati i konfigurisati.
Instalacija
# yum install net-snmp net-snmp-utils
# yum install net-snmp*
Konfiguracija
Podešava se glavni konfiguracioni fajl za SNMP : /etc/snmp/snmpd.conf :
############################
com2sec local localhost LOZINKA
com2sec nagios 10.10.10.222/32 LOZINKA
com2sec nagios 10.10.10.43/32 LOZINKA
#############################
## Access.group.name sec.model sec.name
## ================= ========= ========
group grupa1 v1 local
group nagios v1 nagios
group nagios v2c nagios
#############################
## MIB.view.name incl/excl MIB.subtree mask
## ============== ========= =========== ====
view all-mibs included .1 80
view hdd included .1.3.6.1.2.1.25.2.3 ff
############################
## MIB
## group.name context sec.model sec.level prefix read write notif
## ========== ======= ========= ========= ====== ==== ===== =====
access grupa1 “” v1 noauth exact all-mibs none none
access nagios “” v1 noauth exact all-mibs none none
access nagios “” v2c noauth exact all-mibs none none
Testiranje
Uključivanje servisa :
# service snmpd start
Starting snmpd: [ OK ]
# chkconfig snmpd on
Sa lokalnog hosta (proxy ovde) :
# snmpget -mALL -v1 -cLOZINKA localhost sysName.0
SNMPv2-MIB::sysName.0 = STRING: proxy-2013.moj.domen
You have new mail in /var/spool/mail/root
Pa onda sa servera sa koga planiramo da vršimo praćenje stanja :
# snmpget -mALL -v1 -cLOZINKA 10.10.10.95 sysName.0
SNMPv2-MIB::sysName.0 = STRING: proxy-2013.moj.domen

Napomena : Squid je SNMPv1 agent, znači pri upitima UVEK koristiti “-v1”

Integracija SNMP-a i Squid-a
Na relativnom početku /etc/squid/squid.conf fajla ubaciti :
snmp_port 3401
acl nagios snmp_community LOZINKA
snmp_access allow nagios all

Napomena 1 : LOZINKA je ista kao i u snmpd.conf fajlu, a nagios je ime grupe (u istom fajlu).
Napomena 2 : Squid MIB-ovi se NEĆE videti dok se ovo ne uradi sa Squid-om.

Squid MIB-ovi
Kako videti sve MIB-ove vezane za Squid :
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 .1.3.6.1.4.1.3495.1
Pojedinačni MIB-ovi od interesa :
a. Veličina procesa
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheSysPerf.cacheMaxResSize
SQUID-MIB::cacheMaxResSize.0 = INTEGER: 156896
b. Page fault rate
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheSysPerf.cacheSysPageFaults
SQUID-MIB::cacheSysPageFaults.0 = Counter32: 5
c. HTTP request rate
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheProtoStats.cacheProtoAggregateStats.cacheProtoClientHttpRequests
SQUID-MIB::cacheProtoClientHttpRequests.0 = Counter32: 163
d. Vreme obrade HTTP zahteva – median od 5 minuta. Ova vrednost bi trebala da je između 100ms i 500ms (ova vrednost u sebi uključuje i vreme potrebno za DNS upit)
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheProtoStats.cacheMedianSvcTable.cacheMedianSvcEntry.cacheHttpAllSvcTime.5
SQUID-MIB::cacheHttpAllSvcTime.5 = INTEGER: 28476
e. Vreme DNS odziva – median od 5min
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheProtoStats.cacheMedianSvcTable.cacheMedianSvcEntry.cacheDnsSvcTime.5
SQUID-MIB::cacheDnsSvcTime.5 = INTEGER: 50
f. Iskorišćeni fajl deskriptori (ukupan broj im je konačan, videti gore)
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheSysPerf.cacheCurrentUnusedFDescrCnt
SQUID-MIB::cacheCurrentUnusedFDescrCnt.0 = Gauge32: 1010
g. Cache hit ratio, median na 5min, jako varira, tako da nije najbolji indikator
# snmpwalk -v1 -cLOZINKA -mALL localhost:3401 enterprises.nlanr.squid.cachePerf.cacheProtoStats.cacheMedianSvcTable.cacheMedianSvcEntry.cacheRequestHitRatio.5
SQUID-MIB::cacheRequestHitRatio.5 = INTEGER: 0

Napomena 1 : ovi MIB-ovi imaju i numeričku vrednost, videti link.
Napomena 2 : isti upit se može raditi i sa Nagios/Zabbix servera, samo umesto localhost staviti I P adresu