Bu örneğimizde sistem istatistiklerini collectd ile toplayıp, InfluxDB'ye depolaması için ileteceğiz. Daha sonra istatistikleri Grafana ile görselleştireceğiz. Versiyon olarak collectd 5.5.1, InfluxDB 1.3.5 ve Grafana 4.4.3 kullanacağız.


Sisteminizde InfluxDB ve Grafana'nın kurulu olduğunu varsayıyorum. Eğer kurulumun ve ayarların nasıl yapılacağını merak ediyorsanız, LINUX kategorisi altındaki "InfluxDB ve Grafana entegrasyonu" başlıklı yazımı okuyabilirsiniz.


Sistem yapısı


Aşağıda da gördüğünüz gibi, sunucu olarak iki tane vagrant kutusu kullanıyorum.



Sunucu 1 bilgisi


Collectd'nin istatistikleri transfer edebilmesi için, sunucu 1'in UDP port 25826 üzerinden sunucu 2 ile iletişim kurabilmesi gereklidir. İletişimin çalışıp çalışmadığını kontrol edelim. Eğer çalışıyor ise, aşağıdakine benzer bir şey görmemiz gerekir.


server1:~$ sudo tcpdump -i eth0 -p -n dst port 25826
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:52:34.138885 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1297
10:52:44.137505 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1319
10:52:54.138522 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1301
10:53:04.137666 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1298

InfluxDB


Collectd ile etkileşimi başlatmadan önce, InfluxDB'nin hazır hale getirilmesi için aşağıdakileri yapalım.


Kullanıcı doğrulama


Aşağıdakileri yapıp doğrulanmamış kullanıcıların veritabanına iletişimlerini engelleyelim. Bir tane admin kullanıcı yaratıp, sadece onun veritabanına kullanıcı adı ve şifresiyle ulaşımını sağlayacağız.


server-2:~$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> CREATE USER inanzzz WITH PASSWORD '123123' WITH ALL PRIVILEGES
>
> SHOW USERS
user admin
---- -----
inanzzz true
>
> EXIT

Konfigürasyon dosyası /etc/influxdb/influxdb.conf içinden auth-enabled girdisini bulup, auth-enabled = true olarak ayarlayın.


Servisi yeniden başlatın.


server-2:~$ sudo service influxdb restart

Veritabanını yaratma


server-2:~$ curl -i -XPOST http://localhost:8086/query -u inanzzz:123123 --data-urlencode "q=CREATE DATABASE collectd"

Veritabanını doğrulama


server-2:~$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
name: databases
name
----
_internal
collectd
>

collectd konfigürasyonu


Konfigürasyon dosyası /etc/influxdb/influxdb.conf içinden [[collectd]] ayarlar bölümünü bulup aşağıdakine benzetin.


[[collectd]]
enabled = true
bind-address = ":25826"
database = "collectd"
retention-policy = ""
typesdb = "/usr/local/share/collectd/types.db"
batch-size = 5000
batch-pending = 10
batch-timeout = "10s"
read-buffer = 0

Download types.db


server-2:~$ sudo mkdir /usr/local/share/collectd
server-2:~$ sudo wget -P /usr/local/share/collectd https://raw.githubusercontent.com/collectd/collectd/master/src/types.db

InfluxDB yeniden başlatımı


server-2:~$ sudo service influxdb stop
server-2:~$ sudo service influxdb start

CollectD


Bilgilendirme


CollectD sistem istatistiklerini periyodik olarak toplayıp, InfluxDB gibi veri depolama unitelerine transfer etmeye yarar. Collectd varsayılan olarak CPU, memory, interface, load ve diğer bazı sistemlerin bilgileri toplar ama siz daha fazla sistem bilgisini almak isterseniz, ilgili ekleri aktif hale getirebilirsiniz.


Kurulum


server-1:~$ sudo apt-get update
server-1:~$ sudo apt-get install collectd collectd-utils
server-1:~$ sudo service collectd status

Konfigürasyon


Varsayılan olarak birden fazla ek aktif haldedir ama biz bu örnekte sadece cpu, disk, load, memory, processes, swap ve users istatistiklerini aktif halde tutup diğerlerini iptal edeceğiz.


Not: Ekleri iptal ettiğiniz zaman, eğer var ise ilgili bloklarıda iptal etmeniz gerekir. Mesela df ve rrdtool gibi.


server-1:~$ sudo nano /etc/collectd/collectd.conf

# Enable just these
LoadPlugin cpu
LoadPlugin disk
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin swap
LoadPlugin users

Yukarıdakilere ek olarak LoadPlugin network ekini de aktifleştirin ve aşağıdaki bölümü sayfanın sonuna ekleyin.


<Plugin "network">
Server "192.168.99.30" "25826"
</Plugin>

collectd yeniden başlatımı


server-1:~$ sudo service influxdb restart

INFLUXDB


Sadece collectd veritabanında ne olduğunu kontrol edelim.


server-2:~$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> USE collectd
Using database collectd
>
> SHOW MEASUREMENTS
name: measurements
name
----
cpu_value
memory_value
>
>
> SELECT * FROM cpu_value LIMIT 5
name: cpu_value
time host instance type type_instance value
---- ---- -------- ---- ------------- -----
1504974634305158622 other 0 cpu user 2711
1504974634305164974 other 0 cpu nice 0
1504974634305167452 other 0 cpu system 2448
1504974634305167969 other 0 cpu idle 2227665
1504974634305168533 other 0 cpu wait 372
>
> SELECT * FROM memory_value LIMIT 5
name: memory_value
time host type type_instance value
---- ---- ---- ------------- -----
1504974634305230505 other memory used 190013440
1504974634305231222 other memory buffered 16171008
1504974634305231662 other memory cached 265412608
1504974634305232101 other memory free 42156032
1504974644301487467 other memory used 188911616

Grafana


Tarayıcıdan http://192.168.99.30:3000 adresine gidin ve admin:admin ile login olun.


Data Source eklemesi


  1. Sol üst köşedeki Grafana ikonuna tıklayıp "Data Sources" seçeneğini seçin.

  2. Sayfadaki "Add data source" butonuna basın.

  3. Aşağıdaki resme bakıp formu doldurun ve "Add" butonuna basın.


Sol üst köşedeki Grafana ikonuna tıklayıp "Data Sources" seçeneğini seçerseniz, aşağıdakine benzer bir şey göreceksiniz.



Dashboard eklemesi


  1. Sol üst köşedeki Grafana ikonuna tıklayıp "Dashboard" seçeneğinin içindeki "New" seçeneğini seçin.

  2. Sayfadaki "Graph" ikonuna basın.

  3. "Panel Title" üzerine tıklayıp "Edit" seçeneğini seçin.

  4. Aşağıdaki resme bakıp "Metrics" formunu doldurun.

  5. Sayfanın en üstündeki disk ikonuna tıklayın ve "CPU stats" ismini vererek işleminizi kaydedin. Sonunda aşağıdaki grafiğe ulaşacaksınız.





Collectd linkleri