Erinevus lehekülje "Collectd" redaktsioonide vahel

Allikas: Kuutõrvaja
(Keerukamad kasutusjuhud)
(Keerukamad kasutusjuhud)
71. rida: 71. rida:
 
Mõned kasutusnäited
 
Mõned kasutusnäited
  
Näiteks selleks, et cpudest joonistataks kogusumma kohta protsentuaalne graafik
+
Näiteks selleks, et cpudest joonistataks kogusumma kohta protsentuaalne graafik ja mitte iga protsessori kohta eraldi
  
 
  <Plugin "cpu">
 
  <Plugin "cpu">

Redaktsioon: 10. aprill 2016, kell 19:49

Sissejuhatus

Collectd on klient-server töövahend erinevate mõõtemeetrikute korjamiseks ja salvestamiseks. Tegemist on ühe süsteemis töötava deemoniga, mille funktsionaalsus ehk kas tegemist serveri, klienti, proxyga saavutatakse erinevate pluginate vahendusel. Samamoodi on kõik info mida süsteemist korjatakse seadistatav läbi erinevate pluginate.

Mõned lihtsad asjad mida annab collect abil koguda on nt cpu, mälu ja võrgu kohta käiv info.

Collectd deemon ise vaid kogub ja salvestab infot ning graafikute loomiseks on vaja eraldi rakendust. Collectd töövoogu iseloomustab järgnev pilt.

Collectd.png

Paigaldamine

Debianis

# apt-get install collectd

Lihtne klienti seadistus

 LoadPlugin "cpu"       # protsessori statistika 
 LoadPlugin "memory"    # mälu
 LoadPlugin "interface" # võrguseadmed
 
 # välistame teatud võrguseadmete graafikute joonistamise, vastupidise saavutamiseks IgnoreSelected false                                                                              
 <Plugin interface>
 Interface lo
 Interface sit0
 IgnoreSelected true
 </Plugin>
 
 LoadPlugin "network"
 # saadame kõik info enda collectd serverile, servereid võib olla seejuures mitu
 <Plugin "network">
 Server "collectd0.example.com"
 </Plugin>

Lihtne serveri seadistusfail

 LoadPlugin "network"
 <Plugin "network">
 Listen "ip_aadress"
 </Plugin>
 
 LoadPlugin "rrdtool"
 
 <Plugin "rrdtool">
 DataDir "/var/lib/collectd/rrd"
 </Plugin>

Proxy

LoadPlugin "network"
<Plugin "network">
Listen "collectgw.extern.example.com"
Server "collectd1.intern.example.com"
Forward true
</Plugin>

Collectd web

Collektus.png

Keerukamad kasutusjuhud

Mõned kasutusnäited

Näiteks selleks, et cpudest joonistataks kogusumma kohta protsentuaalne graafik ja mitte iga protsessori kohta eraldi

<Plugin "cpu">
  ReportByCpu false
</Plugin>

Kindlad protsessid

LoadPlugin processes                                                                                      

<Plugin processes>                                                                                        
        Process uhttpd                                                                                    
        Process dnsmasq                                                                                   
        Process dropbear                                                                                  
</Plugin>

Postfixi järjekord omatehtud skriptiga

Skripti käivitamine, antud näites loeb skript kokku faile postfixi järjekorra kaustadest

LoadPlugin exec
<Plugin exec>
  Exec "postfix:postfix" "/etc/collectd.d/collectd-postfix.sh"
</Plugin>

collectd-postfix.sh

#!/bin/bash

INTERVAL=60
POSTFIX_QDIR=/var/spool/postfix

while :; do
  time=$(date +%s)
  for q in incoming active deferred corrupt hold; do
    count=$(find $POSTFIX_QDIR/$q -type f -print | wc -l)
    eval "$q=$count"
  done
  echo "PUTVAL \"$HOSTNAME/postfix/postfix_queue\" interval=$INTERVAL $time:$incoming:$active:$deferred:$corrupt:$hold"
  sleep $INTERVAL
done

Isetehtud skriptil tuleks täiendada ka tüüpide andmebaasi

echo "postfix_queue	incoming:GAUGE:0:U, active:GAUGE:0:U, deferred:GAUGE:0:U, corrupt:GAUGE:0:U, hold:GAUGE:0:U" >> /etc/collectd.d/types.db

Postgresqli jälgimine

Postgresile saab teha lihtsa päringu, millepeale siis graafik joonistatakse. Seda näiteks selliselt:

LoadPlugin postgresql

<Plugin postgresql>
  <Query rt36_tickets>
    Statement "SELECT COUNT(type) AS count, type \
                      FROM (SELECT CASE \
                                   WHEN resolved = 'epoch' THEN 'open' \
                                   ELSE 'resolved' END AS type \
                                   FROM tickets) type \
                      GROUP BY type;"
    <Result>
      Type counter 
      InstancePrefix "rt36_tickets"
      InstancesFrom "type"
      ValuesFrom "count" 
    </Result>
  </Query>

Ja lihtsalt monitooringu jaoks piisab ühest pluginast ja paarist regexpist

LoadPlugin processes

<Plugin "processes">
ProcessMatch pg_writer "postgres:.writer.process"
ProcessMatch pg_wal_writer "postgres:.wal.writer.process"
ProcessMatch pg_autovacuum "postgres:.*autovacuum"
ProcessMatch pg_stats_collector "postgres:.stats.collector.process"
# database connections by ’user’
ProcessMatch pg_user_kasutaja_test "postgres:.kasutaja_test"
# database connections to database ’mail’
ProcessMatch pg_db_kasutaja_test "postgres:.[A-Za-z0-9]+.kasutaja_test"
</Plugin>

Temperatuurianduri andmed failist

Kasutusel on Beaglebone Black, mille GPIO külge on joodetud kaks temperatuuriandurit

Kaks andurit, kumbki annab eraldi failist väljundit

10-00080013237c
10-0008001327a7

Näiteks

# cat /sys/devices/w1_bus_master1/10-0008001327a7/w1_slave 
24 00 4b 46 ff ff 09 10 53 : crc=53 YES
24 00 4b 46 ff ff 09 10 53 t=18187

seal t=17375 on temperatuur millikraadides.

Järgnev konfilõik loeb curliga failist info, korjab sellest regexpi abil millikraadides temperatuuri, ja viimaks teisendab millikraadid normaalseteks ühikuteks

 # laadime vajalikud pluginad
 LoadPlugin curl
 LoadPlugin match_regex
 LoadPlugin target_scale
 
 <Plugin curl>
   <Page "Cont1_T">
     URL "file:///sys/devices/w1_bus_master1/10-0008001327a7/w1_slave"
       <Match>
 	Regex "t=(-?[0-9]+)" 
         DSType "GaugeLast"
         Type "temperature"
         Instance "Andur 1"
       </Match>
   </Page>
   <Page "Cont2_T">
     URL "file:///sys/devices/w1_bus_master1/10-00080013237c/w1_slave"
       <Match>
         Regex "t=(-?[0-9]+)"
         DSType "GaugeLast"
         Type "temperature"
         Instance "Andur 2"
       </Match>
   </Page>
 </Plugin>
 
 <Chain "PreCache">
   <Rule "m_to_c">
     <Match "regex">
       Plugin "^curl$"
       Type "^temperature$"
     </Match>
     <Target "scale">
      Factor 0.001 
     </Target>
   </Rule>
 </Chain>

UPSi andmete lugemine

Võrgu-upside puhul oleks tarvis paigaldada ja seadistada nut tarkvara

/etc/nut/ups.conf

[juurups]
  driver = snmp-ups
  port = 10.1.1.7
  community = public
  snmp_version = v2c
  mibs = ietf
  pollfreq = 60

collectd konfiguratsioon

<Plugin nut>
        UPS "juurups@localhost:3493"
</Plugin>