Daha önce Telegraf Influx ve Grafana kullanarak nasıl monitoring yapabileceğimizi anlatmıştım. Ancak aradan zaman geçti ve Influx kendisini geliştirerek farklı bir veri işleme yöntemi ile karşımıza çıktı. Bu gelişimle birlikte şuan mevcut iki Influx versiyonu bulunuyor ve bu yazıda yeni çıkanın nasıl çalıştığı ve kurulacağını göreceğiz.

Grafana

Öncelikle görselleştirme işlemini yapacağımız ortam olan Grafana kurulumu ile başlatalım. Bu işlem için Grafana’nın 8.4.0 versiyonu üzerinden gerçekleştirilecek.

Öncelikle ihtiyacımız olan paket ve kütüphaneleri yükleyelim.

$ sudo apt-get install -y adduser libfontconfig1

Daha sonra paketimizi sunucumuza çekelim.

$ wget https://dl.grafana.com/oss/release/grafana_8.4.0_amd64.deb

Kurulumunu yapalım

$ sudo dpkg -i grafana_8.4.0_amd64.deb

Servisi çalışır hale getirip durumunu kontrol edelim.

$ sudo systemctl enable --now grafana-server
$ sudo systemctl status grafana-server
● grafana-server.service - Grafana instance
     Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-04-19 12:07:37 UTC; 8s ago
       Docs: http://docs.grafana.org
   Main PID: 3805 (grafana-server)
      Tasks: 6 (limit: 2237)
     Memory: 30.4M
     CGroup: /system.slice/grafana-server.service
             └─3805 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.path>

Apr 19 12:07:38 tig3 grafana-server[3805]: logger=sqlstore t=2022-04-19T12:07:38.2+0000 lvl=info msg="Created default admin" user=admin
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=sqlstore t=2022-04-19T12:07:38.2+0000 lvl=info msg="Created default organization"
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=plugin.manager t=2022-04-19T12:07:38.21+0000 lvl=info msg="Plugin registered" pluginId=input
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=plugin.finder t=2022-04-19T12:07:38.21+0000 lvl=warn msg="Skipping finding plugins as directory does not exist" path=/var/lib/grafana/plugins
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=query_data t=2022-04-19T12:07:38.23+0000 lvl=info msg="Query Service initialization"
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=live.push_http t=2022-04-19T12:07:38.23+0000 lvl=info msg="Live Push Gateway initialization"
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=server t=2022-04-19T12:07:38.4+0000 lvl=info msg="Writing PID file" path=/run/grafana/grafana-server.pid pid=3805
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=http.server t=2022-04-19T12:07:38.41+0000 lvl=info msg="HTTP Server Listen" address=[::]:3000 protocol=http subUrl= socket=
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=ngalert t=2022-04-19T12:07:38.41+0000 lvl=info msg="warming cache for startup"
Apr 19 12:07:38 tig3 grafana-server[3805]: logger=ngalert.multiorg.alertmanager t=2022-04-19T12:07:38.41+0000 lvl=info msg="starting MultiOrg Alertmanager"

Son olarak sunucuda firewall’u aktif etme durumumuz için kural yazalım.

$ sudo ufw allow 3000/tcp

Tarayıcıda gördüğümüze göre sıradaki işleme geçebiliriz, Telegraf aşamasından sonra Influxdb Grafana bağlantısını yaparken buraya uğrayacağız.

Influx v2

Influxdb zaman bazlı bir veritabanıdır ve genel olarak IOT cihazlarından gelen metrikleri okumak ve barındırmak için tasarlanmıştır. Versiyon 2 ile birlikte yönetim ve kullanımda farklılıklar oluştu. Bu farklılıkları parça parça göreceğiz.

Öncelikle influxdb kurulumu için tanımlayacağımız paketlerin keylerini sunucularımıza ekleyelim

$ wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null

Burada bir sonraki komutumuzda kullanacağımız değişkenleri sisteme tanıtıyoruz. Bunlar işletim sisteminin adı ve versiyon ismidir.

$ export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc)

Değişkenleri de kullanarak paket deposuna ekleyelim.

$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list > /dev/null

Sistemdeki paketleri güncelleyelim ve çıktıda mutlaka influxdata adresini görelim.

$ sudo apt update
Get:1 https://repos.influxdata.com/ubuntu focal InRelease [4,736 B]
...

Şimdi paket kurulumunu yapabiliriz.

$ apt-get install -y influxdb2

Servisi başlatalım ve sonrasında kontrol edelim.

$ sudo systemctl enable --now influxdb
$ sudo systemctl status influxdb
● influxdb.service - InfluxDB is an open-source, distributed, time series database
     Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-04-19 12:29:18 UTC; 6s ago
       Docs: https://docs.influxdata.com/influxdb/
    Process: 5643 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (code=exited, status=0/SUCCESS)
   Main PID: 5644 (influxd)
      Tasks: 7 (limit: 2237)
     Memory: 47.8M
     CGroup: /system.slice/influxdb.service
             └─5644 /usr/bin/influxd

Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.452929Z lvl=info msg="Open store (start)" log_id=0_xScIdG000 service=storage-engine service=store op_name=tsdb_open op_event=start
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.453083Z lvl=info msg="Open store (end)" log_id=0_xScIdG000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=0.155ms
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.453187Z lvl=info msg="Starting retention policy enforcement service" log_id=0_xScIdG000 service=retention check_interval=30m
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.453320Z lvl=info msg="Starting precreation service" log_id=0_xScIdG000 service=shard-precreation check_interval=10m advance_period=30m
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.454349Z lvl=info msg="Starting query controller" log_id=0_xScIdG000 service=storage-reads concurrency_quota=1024 initial_memory_bytes_quota_per_query=9223372>
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.455554Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0_xScIdG000 max_select_point=0 max_select_series=0 max_sele>
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.462154Z lvl=info msg=Starting log_id=0_xScIdG000 service=telemetry interval=8h
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5644]: ts=2022-04-19T12:29:18.464642Z lvl=info msg=Listening log_id=0_xScIdG000 service=tcp-listener transport=http addr=:8086 port=8086
Apr 19 12:29:18 tig3 influxd-systemd-start.sh[5643]: InfluxDB started
Apr 19 12:29:18 tig3 systemd[1]: Started InfluxDB is an open-source, distributed, time series database.

Şimdi, buraya kadar olan kısım daha öncesine benziyor ancak v2 ile birlikte gelen özelliklerden birisi olan kurulum aşamasını yapacağız. Bunun için komut satırınca komut yürütmemiz yeterli.

$ influx setup
> Welcome to InfluxDB 2.0!
? Please type your primary username sergen
? Please type your password *********
? Please type your password again *********
? Please type your primary organization name sergenaras.com
? Please type your primary bucket name vmware-esxi01
? Please type your retention period in hours, or 0 for infinite 0
? Setup with these parameters?
  Username:          sergen
  Organization:      sergenaras.com
  Bucket:            vmware-esxi01
  Retention Period:  infinite
 Yes
User    Organization    Bucket
sergen  sergenaras.com  vmware-esxi01

Son olarak firewall için kural yazalım.

$ sudo ufw allow 8086/tcp

Telegraf

Telegraf izlemek istediğimiz sisteme bağlanıp metrikleri çeken ve veritabanına gönderen bir aracı olarak görev yapmaktadır. Influxdb’nin versiyonunun değişmesi sebebiyle burada yapılacak işlemler de değişmiştir. Kurulum için bir ön hazırlık yapmaya gerek yok zira kurulum için ihtiyacımız olan paketler yukarıda Influxdb aşamasında sisteme eklendi.

$ sudo apt-get install telegraf

Servislerin çalışır durumda olduğuna emin olalım.

$ sudo systemctl enable --now telegraf
$ systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
     Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-04-19 12:47:46 UTC; 15s ago
       Docs: https://github.com/influxdata/telegraf
   Main PID: 6351 (telegraf)
      Tasks: 7 (limit: 2237)
     Memory: 32.7M
     CGroup: /system.slice/telegraf.service
             └─6351 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Starting Telegraf 1.22.1
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Loaded inputs: cpu disk diskio kernel mem processes swap system
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Loaded aggregators:
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Loaded processors:
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Loaded outputs: influxdb
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! Tags enabled: host=tig3
Apr 19 12:47:46 tig3 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"tig3", Flush Interval:10s
Apr 19 12:47:46 tig3 telegraf[6351]: 2022-04-19T12:47:46Z W! [outputs.influxdb] When writing to [http://localhost:8086]: database "telegraf" creation failed: 401 Unauthorized
Apr 19 12:47:56 tig3 telegraf[6351]: 2022-04-19T12:47:56Z E! [outputs.influxdb] E! [outputs.influxdb] Failed to write metric (will be dropped: 401 Unauthorized):

Çıktının son satırlarına bakıldığında konfigürasyonda varsayılan olarak açık gelen outputs.influxdb kısmının hata verdiğini görüyoruz. Buranın hata vermesi normal.. çünkü gerekli parola ve tanımlar henüz gerçekleştirilmedi ve zaten bu kısımda gerçekleştirilmeyecek. Bizim konfigürasyon dosyasında kullanacağımız kısım outputs.influxdb_v2‘dir.

/etc/telegraf/telegraf.conf dosyasına girip [[outputs.influxdb]] satırını bulup # karakteri ile kapatalım.

Şimdi aynı dosya içerisinde [[outputs.influxdb_v2]] kısmını bulup önündeki # karakterini kaldıralım.

Şimdi influxdb ile iletişim kuracağı kısmı açmış olduk. Burası altında doldurmamız gereken kısımlar yukarıda da görünen url, token, organization ve bucket kısmıdır. Bunlar kurulum aşamasında verdiğimiz şeyler, sadece token bilgisini ekstra almamız gerekiyor. Bunu öğrenmek için aşağıdaki komutu kullanabiliriz.

$ influx auth list
ID        Description    Token        User Name    User ID            Permissions 
093c734d  sergen's Token 2o0ic7wIE..  sergen       093c734dbcf2a000   [read:/authoriza...

Bu çıktı yukarıdakinden çok daha uzun özellike izinlerin olduğu kısım bir kaç satır çünkü herhangi bir kısıtlama yapmadık, ancak sığmadığı için ben uzun olanları kestim. Token bilgisini de buradan aldığımıza göre konfigürasyon dosyamıza işleyelim.

Şimdi konfigürasyon dosyasını kapatmadan verileri çekeceğimiz kısma gidelim. Bu örnekte VMware üzerinden gideceğimiz için dosyada [[inputs.vsphere]] kısmına gitmemiz ve öncelikle burada bulunan # işaretlerini kaldırmamız gerekiyor. Bu dosyada çok fazla satır olduğu için regex ile halledeceğiz.

Aşağıdaki komutu vi içerisinde command mod’a gerçekleştirdik. Ben öncesinde :set nu ile açtığım dosyadaki tüm satırların numara almasını ve sonrasında bunların hangi satırlarda olduğunu kontrol ettim. Konfigürasyon dosyasına yeni bir şeyler eklenebildiği için satır değişebiliyor. Bu komutu çalışrırmadan önce kontrol etmenizi öneririm.

:9441,9638s/#//

Bunu yaptığımızda artık tüm vsphere bölümünü açmış olduk ancak hala önlerinde # işareti olan satırlar olduğunu göreceksiniz, onlar öyle kalabilir. Birim için önemli olan [[inputs.vsphere]] satırının açılmış olmasıdır. Burada bir sonraki aşama olarak veri çekilecek olan vCenter veya ESXI’nin verileri ekleyelim.

Son olarak burayı kapatmadan önce [[inputs.vsphere]] kısmının en altında bulunan insecure_skip_verify = false satırının başındaki # işaretini kaldırıp true hale getirelim.

Şimdi servisimizi yeniden başlatıp durumuna bakalım.

$ sudo systemctl restart telegraf
$ systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
     Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-04-19 13:07:56 UTC; 4s ago
       Docs: https://github.com/influxdata/telegraf
   Main PID: 7013 (telegraf)
      Tasks: 7 (limit: 2237)
     Memory: 19.9M
     CGroup: /system.slice/telegraf.service
             └─7013 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Apr 19 13:07:56 tig3 systemd[1]: Starting The plugin-driven server agent for reporting metrics into InfluxDB...
Apr 19 13:07:56 tig3 telegraf[7013]: 2022-04-19T13:07:56Z I! Starting Telegraf 1.22.1
Apr 19 13:07:56 tig3 telegraf[7013]: 2022-04-19T13:07:56Z I! Loaded inputs: cpu disk diskio kernel mem processes swap 
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! Loaded aggregators:
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! Loaded processors:
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! Loaded outputs: influxdb_v2
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! Tags enabled: host=tig3
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z W! Deprecated inputs: 0 and 1 options
Apr 19 13:25:59 tig3 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"tig3", Flush Interval:10s
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z I! [inputs.vsphere] Starting plugin
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z W! [inputs.vsphere] Metric name virtualDisk.throughput.usage.average is unknown. Will not be collected
Apr 19 13:25:59 tig3 telegraf[7564]: 2022-04-19T13:25:59Z E! [inputs.vsphere] Getting metric metadata. Discovery will be incomplete. Error: ServerFaultCode: A specified parameter was not correct: entity

Görülebileceği gibi daha önceki hatalar gitti. Yerine vsphere ile ilgili bazı hatalar geldi.

Grafana tarafındaki konfigürasyona gelirsek öncelikle bir datasource oluşturmamız gerekiyor.

Bunun için ana ekrandan configuration > data sources > add datasource > influxdb olanı seçmemiz gerekiyor.

Seçtiğimizde bize yukarıdaki ekran gelecek. Burada ilk olarak Query Language kısmını değiştirmemiz gerekiyor. InfluxQL versiyon 1 için kullanılan sorgu diliyken versiyon 2 için Flux kullanılıyor.

URL kısmında influxdb’mizin olduğu sunucunun ip’sini yazıyoruz. Auth kısmındaki her şeyin kapalı olduğuna emin olup ekranı aşağıya doğru kaydırıyoruz.

Bu kısımda Telegraf konfigürasyonunda yazdığımız organization, token ve bucket kısımlarını yazıyoruz. Save & test dediğimizde ayarları kayıt edip test yapıyor. Yeşil gördüğümüzde gidip dashboard ekleyerek izleme işlemine başlayabiliriz. Bu aşamada ben Jorge de la Cruz‘un dashboardlarını öneriyorum. VMware için hazırlanmış, çok temiz ve ekstra bir şeyler yapmamıza gerek kalmadan kullanabileceğimiz bir dashboard’lardır. Bunlardan bir kaç tanesi için link bırakmam gerekirse;

VMware vSphere – Datastore

VMware vSphere – VMs

VMware vSphere – Hosts

VMware vSphere – Overview

Dashboardlar arasında en beğendiğim dashboard budur. Yalnız son telegraf status komutunda da görüleceği üzere datastore kısmı ile ilgili metriklerden birini kullanamadığına dair bir hata vardı. İlgili metriği çekemediği için dashboard’da datastores kısmında veri görünmüyor.

vCenter eklediğimiz durumda burada vCenter altında bulunan tüm sunucuları görebiliyoruz. Şuan sadece mevcut ESXI’nin metriklerinin görselleştirmesini görüyoruz.