apache cassandra monitoring
4 min readJan 19, 2025
Apache Cassandra, büyük veri uygulamaları için güçlü bir dağıtık NoSQL veritabanıdır. Bu yazıda, Cassandra veritabanınızı izlemek ve bakımını yapmak için kullanabileceğiniz bir bash script’i paylaşacağım. Script, Cassandra’nın genel durumu, log hataları, performans verileri ve daha fazlasını kontrol eder. Aşağıda, script’in her bir adımının ne işe yaradığını ve nasıl kullanılacağını açıklıyorum.
#!/bin/bash
# Cassandra Servisinin Durumunu Kontrol Etme
echo -e "\nCassandra Servisinin Durumu:"
systemctl is-active cassandra
echo "------------------------"
# Cassandra Log Dosyasında Hata Arama
echo -e "\nCassandra Log Dosyasında Hata Arama (ERROR):"
grep "ERROR" /var/log/cassandra/system.log
echo "------------------------"
# Cassandra'nın Çalışıp Çalışmadığını Kontrol Etme
echo -e "\nCassandra'nın Durumu (Çalışıyor mu?):"
nodetool status | grep -q "UN\|DN" && echo "Cassandra çalışıyor" || echo "Cassandra çalışmıyor"
echo "------------------------"
# Cassandra Düğümünde Yavaş Sorguları Kontrol Etme
echo -e "\nCassandra Düğümünde Yavaş Sorgular:"
nodetool getsstables | awk 'NR>4 && $6 > 10 {print}'
echo "------------------------"
# Cassandra Düğümüne Ait Veri Dosyası Boyutları ve Latency Kontrolü
echo -e "\nCassandra Veri Dosyası Boyutları ve Latency:"
nodetool cfstats | awk '/^Keyspace:/ {ks=$2} /^Table:/ {tbl=$2} /Read Latency/ {getline; getline; read_latency=$3} /Write Latency/ {getline; getline; write_latency=$3} {if (ks && tbl) print ks, tbl, "Read Latency:", read_latency, "Write Latency:", write_latency; ks=""; tbl=""}'
echo "------------------------"
# Sadece Okuma ve Yazma Gecikme Sürelerini Görüntüleme
echo -e "\nOkuma ve Yazma Gecikme Süreleri:"
nodetool cfstats | awk '/Read Latency/ {getline; getline; print "Read Latency:", $3} /Write Latency/ {getline; getline; print "Write Latency:", $3}'
echo "------------------------"
# Cassandra'nın Bellek Kullanımını İzleme
echo -e "\nCassandra Bellek Kullanımı:"
nodetool info | grep "Heap Memory"
echo "------------------------"
# Cassandra'nın CPU Kullanımını İzleme
echo -e "\nCassandra CPU Kullanımı:"
top -b -n1 | grep -i cassand | awk '{print $9}'
echo "------------------------"
# Sadece Aktif Bağlantılar ve Bağlantı Sayısı
echo -e "\nAktif Bağlantılar ve Bağlantı Sayısı:"
nodetool netstats | grep "Mode\|Total active\|ReadStage\|RequestResponseStage\|MutationStage\|ReadRepairStage\|CounterMutationStage\|MiscStage"
echo "------------------------"
# Belirli Bir Düğümün Bağlantılarını Görüntüleme
echo -e "\nBelirli Bir Düğümün Bağlantıları:"
nodetool netstats | grep -A 6 "Address: <node_address>"
echo "------------------------"
# Cassandra Düğümündeki Sütun Ailesi İstatistiklerini Kontrol Etme
echo -e "\nCassandra Sütun Ailesi İstatistikleri:"
nodetool cfstats | grep -E "Keyspace|Table|Read Count|Write Count"
echo "------------------------"
# Onaylanan Yazma İşlemlerini Kontrol Etme
echo -e "\nOnaylanan Yazma İşlemleri:"
nodetool compactionstats | grep -E "pending tasks|completed tasks"
echo "------------------------"
# Onaylanmayan Yazma İşlemlerini Kontrol Etme
echo -e "\nOnaylanmayan Yazma İşlemleri:"
nodetool compactionstats | grep "Pending tasks"
echo "------------------------"
# Cassandra Düğüm İletişim Durumunu Kontrol Etme
echo -e "\nCassandra Düğüm İletişim Durumu:"
nodetool gossipinfo
echo "------------------------"
# Cassandra Düğümündeki Disk Kullanımını Kontrol Etme
echo -e "\nCassandra Disk Kullanımı:"
nodetool status | grep "^Datacenter" -A 100 | grep "^--" -A 100 | awk '{print $1,$5}'
echo "------------------------"
# Cassandra Toplam Anahtar (Token) Sayısını Kontrol Etme
echo -e "\nCassandra Token Sayısı:"
nodetool ring | grep -Eo "Token count: [0-9]+"
echo "------------------------"
# Cassandra Düğümündeki Sütun Ailesi İstatistiklerinin Ortalamasını Kontrol Etme
echo -e "\nCassandra Sütun Ailesi İstatistiklerinin Ortalaması:"
nodetool cfstats | grep -E "Keyspace|Table|Read Count|Write Count" | awk '{ sum += $NF } END { if (NR > 0) print "Average:", sum / NR }'
echo "------------------------"
# Cassandra SSTable Sayısı
echo -e "\nCassandra SSTable Sayısı:"
nodetool cfstats | grep -A 3 "Keyspace: <keyspace_name>" | grep "SSTable count" | awk '{print $NF}'
echo "------------------------"
# Cassandra Compaction Throughput (Birleştirme Hızı)
echo -e "\nCassandra Compaction Throughput:"
nodetool tpstats | awk '/CompactionExecutor/ {print $2 " " $3}'
echo "------------------------"
# Cassandra Okuma İstekleri
echo -e "\nCassandra Okuma İstekleri:"
nodetool cfstats | awk '/Read Count:/ {print $3}'
echo "------------------------"
# Cassandra Yazma İstekleri
echo -e "\nCassandra Yazma İstekleri:"
nodetool cfstats | awk '/Write Count:/ {print $3}'
echo "------------------------"
# Bekleyen Compactions (Birleştirmeler)
echo -e "\nBekleyen Compactions:"
nodetool compactionstats | grep "pending tasks" | awk '{print $NF}'
echo "------------------------"
# Bekleyen Akıtma İşlemleri (Flushes)
echo -e "\nBekleyen Akıtma İşlemleri:"
nodetool netstats | grep "FlushWriter" | awk '{print $5}'
echo "------------------------"
# Cassandra Bloom Filter False Positive Oranı
echo -e "\nCassandra Bloom Filter False Positive Oranı:"
nodetool cfstats | awk '/Bloom Filter False Positive/ {print $6}'
echo "------------------------"
# Cassandra SSTable Sayısı
echo -e "\nCassandra SSTable Sayısı:"
nodetool cfstats | awk '/SSTable count:/ {print $3}'
echo "------------------------"
# Cassandra Pending Compaction Görevleri
echo -e "\nCassandra Pending Compaction Görevleri:"
nodetool compactionstats | grep "pending tasks" | awk '{print $NF}'
echo "------------------------"
# Cassandra Hints (İpuçları) Durumu
echo -e "\nCassandra Aktif İpuçları:"
nodetool tpstats | grep "Hints" | awk '{print $5}'
echo "------------------------"
# Cassandra Proxy Histograms P99 Latency
echo -e "\nCassandra Proxy Histograms P99 Latency:"
nodetool proxyhistograms | grep "Latency" | grep "P99" | awk '{print $4}'
echo "------------------------"
echo -e "\nCassandra Alert Script Tamamlandı!"