Grafana ile Endüstriyel Veri Görselleştirme: Gerçek Zamanlı İzleme ve Dashboard Tasarımı
Giriş
Endüstriyel tesislerde her saniye onlarca sensörden veri akıyor: sıcaklık, basınç, ağırlık, titreşim... Ancak bu veriler anlamlı hale getirilmezse sadece "sayılar" olarak kalır. İşte tam bu noktada Grafana, endüstriyel verileri görselleştirmenin ve anlamlı hale getirmenin en güçlü açık kaynak aracı olarak öne çıkıyor.
Bu yazımızda, Grafana'nın endüstriyel IoT projelerinde nasıl kullanılacağını, ZMA/GDT cihazlarımızla entegrasyonunu ve profesyonel dashboard tasarımını ele alacağız.
Grafana Nedir?
Grafana, zaman serisi veritabanlarından (InfluxDB, Prometheus, TimescaleDB, Amazon Timestream vb.) gelen verileri görselleştirmek için kullanılan açık kaynak bir platformdur. Özellikle IoT ve endüstriyel izleme sistemlerinde tercih edilir çünkü:
- Gerçek Zamanlı Veri Akışı: Milisaniye seviyesinde güncelleme yapabilir.
- Esnek Dashboard Tasarımı: Drag-and-drop ile zengin görselleştirme panelleri oluşturabilirsiniz.
- Alarm Sistemi: Belirlediğiniz eşik değerlerde otomatik alarm üretir (e-posta, Slack, Telegram vb.).
- Çoklu Veri Kaynağı: Birden fazla veritabanını tek bir dashboard'da birleştirebilir.
Endüstriyel IoT için Grafana Mimarisi
Tipik bir endüstriyel Grafana entegrasyonu şu şekilde çalışır:
ZMA/GDT Cihazlar → MQTT/Modbus → IoT Gateway → Time Series DB (InfluxDB) → Grafana Dashboard
1. Veri Toplama: ZMA ve GDT
ZMA Data Acquisition ve GDT Digital Transmitter cihazlarımız:
- 24-bit çözünürlükte yüksek hassasiyetli veri toplar
- Modbus RTU/TCP ile haberleşir
- MQTT veya HTTP ile bulut/yerel sunuculara iletir
2. Zaman Serisi Veritabanı
Grafana'nın en iyi çalıştığı veri kaynakları:
- InfluxDB: Açık kaynak, yüksek performanslı time-series DB
- Amazon Timestream: Bulut tabanlı, yönetilmeyen servis (Amazon Timestream yazımız)
- TimescaleDB: PostgreSQL tabanlı time-series uzantısı
3. Grafana Dashboard
Dashboard'lar farklı panellerden oluşur:
- Graph Panel: Zaman serisi grafikleri
- Gauge Panel: Anlık değer göstergesi (RPM, sıcaklık vb.)
- Stat Panel: Tek bir sayısal değer gösterimi
- Table Panel: Tablosal veri gösterimi
- Heatmap: Yoğunluk haritaları
Gerçek Dünya Uygulaması: Tartım Sistemi Dashboard'u
Bir süt tankı izleme sistemi için örnek Grafana dashboard yapısı:
Panel 1: Anlık Ağırlık (Gauge)
SELECT last("weight") FROM "tank_data"
WHERE ("device_id" = 'GDT-001') AND time > now() - 5m
Panel 2: Dolum Trendi (Graph)
SELECT mean("weight") FROM "tank_data"
WHERE time > now() - 24h
GROUP BY time(10m)
Panel 3: Sıcaklık İzleme
SELECT "temperature" FROM "sensor_data"
WHERE ("sensor_id" = 'ZMA-TEMP-01') AND time > now() - 1h
Panel 4: Alarm Durumu (Stat Panel)
SELECT count("alarm") FROM "alerts"
WHERE time > now() - 1h
Grafana Alert Yapılandırması
Kritik durumlar için otomatik alarm kurulumu:
alert:
name: "Tank Overflow Warning"
condition:
- query: SELECT last("weight") FROM "tank_data"
- threshold: > 950 kg
notification:
- email: [email protected]
- telegram: @fabrika_alarms
ZMA/GDT ile Grafana Entegrasyonu
Adım 1: MQTT Broker Kurulumu
# Mosquitto MQTT broker kurulumu
sudo apt-get install mosquitto mosquitto-clients
Adım 2: InfluxDB Kurulumu
# InfluxDB 2.x kurulumu
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-amd64.deb
sudo dpkg -i influxdb2-2.7.1-amd64.deb
Adım 3: Node-RED ile Veri Akışı
// MQTT'den gelen ZMA verilerini InfluxDB'ye yazma
msg.payload = {
measurement: 'sensor_data',
tags: {
device_id: msg.topic.split('/')[1],
},
fields: {
weight: parseFloat(msg.payload.weight),
temperature: parseFloat(msg.payload.temp),
},
timestamp: new Date(),
}
return msg
Adım 4: Grafana Data Source Ayarı
URL: http://localhost:8086
Organization: amazeng
Token: [InfluxDB API Token]
Default Bucket: industrial_data
Dashboard Tasarım İpuçları
1. Renk Kodlaması
- 🟢 Yeşil: Normal çalışma (0-80%)
- 🟡 Sarı: Dikkat (80-95%)
- 🔴 Kırmızı: Kritik (95-100%)
2. Panel Organizasyonu
- Üst satır: Anlık değerler (Gauge, Stat)
- Orta bölge: Trend grafikleri (Graph)
- Alt bölge: Alarm logları (Table)
3. Değişken Kullanımı
Dashboard'a dinamiklik kazandırın:
$device_id = InfluxDB Query: SHOW TAG VALUES WITH KEY = "device_id"
Grafana Cloud vs. Self-Hosted
| Özellik | Grafana Cloud | Self-Hosted |
|---|---|---|
| Maliyet | Sınırlı ücretsiz, sonra ücretli | Sadece sunucu maliyeti |
| Bakım | Yok | Güncelleme ve yedekleme gerekli |
| Performans | Yüksek | Donanıma bağlı |
| Veri Kontrolü | Bulutta | Yerinde (on-premise) |
Amazeng Önerisi: Kritik veriler için self-hosted InfluxDB + Grafana kurulumu.
Örnek Dashboard: ZMA Desk Entegrasyonu
ZMA Desk yazılımımızın ürettiği verileri Grafana'da görselleştirebilirsiniz:
- ZMA Desk → CSV/JSON export
- Telegraf ile InfluxDB'ye aktarım
- Grafana'da özel dashboard oluşturma
Gelişmiş Özellikler
1. Annotations (İşaretlemeler)
Önemli olayları (bakım, arıza vb.) timeline üzerinde işaretleyin.
2. Variables ve Templating
Tek bir dashboard ile tüm cihazları izleyin:
SELECT * FROM "data" WHERE "device_id" = '$device'
3. Grafana Loki (Log Yönetimi)
Cihaz loglarını Grafana içinde arayın ve analiz edin.
Gerçek Proje: Tam Entegre Çözüm
Amazeng olarak sunduğumuz tam entegre tartım sistemi:
- GDT → Modbus → ZMA → MQTT → InfluxDB → Grafana
- HMI Panel (lokal) + Grafana (uzaktan izleme)
- AWS IoT Core ile bulut entegrasyonu
Sonuç ve Öneriler
Grafana, endüstriyel verileri anlamlı hale getiren ve karar verme süreçlerini hızlandıran güçlü bir araçtır. ZMA ve GDT cihazlarımızla entegre edildiğinde:
✅ Gerçek zamanlı fabrika izleme
✅ Proaktif bakım (predictive maintenance)
✅ Veri tabanlı karar verme
✅ Uzaktan erişim ve mobil izleme
Grafana tabanlı izleme sistemleri ve ZMA/GDT entegrasyonu hakkında daha fazla bilgi için mühendislerimize ulaşın.