Bu örneğimizde InfluxDB ve Grafana servislerini aynı sunucu (Ubuntu 16.04) üzerine kurup, Grafana ile InfluxDB'de bulunan verileri görselleştireceğiz. Versiyon olarak InfluxDB 1.3.5 ve Grafana 4.4.3 kullanacağız.


InfluxDB


Bilgilendirme


Bu yazdığım zaman, InfluxDB zaman tabanlı verileri tutmak için en fazla kullanılan ve en performanslı çalışan veritabanıydı.


InfluxDB varsayılan olarak:



Port ilişkilendirme ve diğer konfigürasyonlar için /etc/influxdb/influxdb.conf dosyasını kullanabilirsiniz. Logları görmek için journalctl -u influxdb komutunu çalıştırabilirsiniz.


Not: Eğer veriler başka bir sunucudan InfluxDB'ye iletiliyorsa, her iki sunucunun tarihlerinin aynı olmasına dikkat edin. Senkronizasyon işlemi için Network Time Protocol (NTP) kullanabilirsiniz. Eğer bu işlemi yapmazsanız, veri gönderme ve alma tarihleri arasında uyuşmazlık olacaktır, ki bu da raporlama da tutarsızlığa sebebiyet verecektir. Tarih UTC format olarak tutulur. Tarih kontrolü için date komutunu kullanabilirsiniz.


Eğer InfluxDB için bir web arayüzü isterseniz, Chronograf yükleyip kullanabilirsiniz.


Kurulum


InfluxDB kütüphanesini ekleyelim.


$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/lsb-release
$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

InfluxDB servisini yükleyip çalıştıralım.


$ sudo apt-get update
$ sudo apt-get install influxdb
$ sudo service influxdb start

Eğer influxd komutunu çalıştırırsanız, servis ile ilgili temel bilgileri göreceksiniz. Eğer influxd config komutunu çalıştırırsanız, servisin varsayılan konfigürasyon bilgilerini göreceksiniz.


Not: Varsayılan olarak herhangi bir kullanıcı doğrulama işlemine tabi tutulmadan, veri tabanına bağlanıp istediğiniz komutu çalıştırabilirsiniz. Kullanıcı doğrulama işlemini daha sonra aktif hale getireceğiz.


Bağlantı


Veritabanına bağlanalım.


$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>

Mevcut olan kullanıcıları kontrol edelim. Varsayılan olarak herhangi bir kullanıcı olmaması lazım.


> SHOW USERS
user admin
---- -----
>

Mevcut olan veritabanlarını kontrol edelim.


> SHOW DATABASES
name: databases
name
----
_internal
>

_internal veritabanındaki tabloları kontrol edelim.


> USE _internal
Using database _internal
> SHOW MEASUREMENTS
name: measurements
name
----
cq
database
httpd
queryExecutor
runtime
shard
subscriber
tsm1_cache
tsm1_engine
tsm1_filestore
tsm1_wal
write
>

_internal veritabanı içindeki httpd tablosunu sorgulayalım.


> SELECT * FROM httpd
>

InfluxDB'den çıkalım.


> EXIT

Kullanıcı doğrulama


Aşağıdakileri yaparak veritabanına kullanıcı doğrulaması olmadan yapılan bağlantıları engelleyelim. Bir tane admin kullanıcı yaratıp, sadece onun veritabanına kullanıcı adı ve şifresiyle ulaşımını sağlayacağız.


Gerekli haklarla kullanıcıyı yaratalım.


$ 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.


$ sudo service influxdb restart

Kullanıcı adı ve şifresi kullanmadan yapılan bağlantılarda, listeleme işlemi bile yapılamaz durumda.


$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use ".

Kullanıcı adı ve şifresi kullanılarak yapılan bağlantılarda, herşey normal olarak çalışıyor.


$ 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
>

Veri kaydetme


Aşağıdaki işlem ile CPU ile ilgili istatistikleri tutmak için:



Daha sonra sorgularımızda kullanmak için verilere:



Bunun faydası, istatistikleri birbirlerinden host veya region olarak ayırabilmemizi sağlayacak. Daha sonra value alanına istatistik değeri olarak float veriler atayacağız.


Not: Eğer isterseniz veri ile birlikte manuel olarak Unix nanosecond timestamp bilgisini de gönderebilirsiniz. Eğer bunu yapmazsanız, sistem saati kullanılacaktır.


Eğer daha teknik olarak açıklayacak olursak, işlem sonucunda aşağıdakine benzer birşey yapabileceğiz.


SELECT value FROM server_stats.cpu WHERE host = 'server01'
SELECT value FROM server_stats.cpu WHERE host = 'server01' AND/OR region = 'europa'

Veritabanını yaratalım.


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

Tablo yaratıp içini test verileriyle dolduralım. Tablo mevcut değilse otomatik olarak yaratılacaktır.


$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.01 1504879906'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.01 1504879943'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.02'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=1.00 1504879906'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=1.00 1504879943'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=2.00'

Yukarıda da gördüğümüz gibi, europa bölgesine ait olan server01 ve server02 ile ilgili ayrı ayrı bilgiler girdik. İlk iki veri seti ile, her iki sunucu için aynı saat bilgisi verilirken, sonuncu veri seti ile sistem saati kullanıldı.


$ 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
server_stats
>
> USE server_stats
Using database server_stats
>
> SHOW MEASUREMENTS
name: measurements
name
----
cpu
>
> SELECT * FROM cpu
name: cpu
time host region value
---- ---- ------ -----
1504879906 server01 europa 0.01
1504879906 server02 europa 1
1504879943 server01 europa 0.01
1504879943 server02 europa 1
1504880003297061860 server01 europa 0.02
1504880123219102389 server02 europa 2

Linkler



Grafana


Bilgilendirme


Verileri görselleştirme haricinde, uyarıda bulunma gibi işlemler içinde kullanılır. Örneğin: Slack, email vs.


Kurulum


Paketin indirilelim.


$ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.4.3_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
$ sudo dpkg -i grafana_4.4.3_amd64.deb

InfluxDB kütüphanesini ekleyelim.


$ echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" | sudo tee -a /etc/apt/sources.list
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -

Grafana servisini kurup başlatalım.


$ sudo apt-get update
$ sudo apt-get install grafana
$ sudo service grafana-server start

Web GUI


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


Linkler



Entegrasyon


GUI'ye ulaşım


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 "Host stats" ismini vererek işleminizi kaydedin. Sonunda aşağıdaki grafiğe ulaşacaksınız.





Eğer auto-refresh seçeneğini aktif hale getirip, veritabanını daha fazla veri ile doldurursanın, grafiğin gerçek zamanlı olarak yenilendiğini göreceksiniz. Aşağıdaki komut ile server02'ye karşılık gelen daha fazla veri ekleyip grafiğe doğrulama amaçlı olarak bakabilirsiniz.


$ for((i=1;i<=10;i+=1)); do curl -XPOST "http://localhost:8086/write?db=server_stats" -u inanzzz:123123 --data-binary "cpu,host=server02,region=europa value=$i.00"; sleep 5; done

Grafik sonuçta aşağıdakine benzer bir hal alacaktır.



Linkler