Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen rrdgraph_libdbi komutudur.
Program:
ADI
rrdgraph_libdbi - libdbi aracılığıyla rrdtool grafiğinde grafik oluşturmak için veri alma
SİNOPSİS
= sql// sürücü>/ = /...
[/rrdminstepsize= ][/rrdfillmissing= eksik n saniye>]//
/ sütun>/ değer sütun>[/türet]/ fıkra 1>/.../ fıkra n>
AÇIKLAMA
Bu sözde-rrd-dosya adı, bir sql veri kaynağını tanımlar:
SQL//
libdbi tipi veri kaynağı için sihirli çerez öneki
<libdbi sürücü>
hangi libdbi sürücüsünün kullanılacağı (örneğin: mysql)
=
verilen libdbi sürücüsü ile veritabanına bağlanmak için gerekli olan parametreleri tanımlar
(Bu sürücüler libdbi'ye bağlıdır - ayrıntılar için lütfen libdbi'nin sürücü belgelerine bakın!)
/rrdminstepsize=<minimum adım boyut>
grafik için kullanılan minimum adım uzunluğunu tanımlar (varsayılan: 300 saniye)
/rrddoldurma eksik=<doldur eksik saniye>
veri ekleme dalgalanması nedeniyle NaN kutularından kaçınmak için son değerle doldurulacak saniye sayısını tanımlar (varsayılan: 0 saniye)
Sonuç kümesinin getirileceği tabloyu tanımlar.
Birden fazla tablodan veri alınması gerekiyorsa, bu tablolar tablo adları "+" ile ayrılarak tanımlanabilir.
%xx aracılığıyla hex tipi kodlama gerçek değere çevrilir, %'yi kullanmak için %'yi kullanın
<[*]unixzaman damgası sütun>
E sütununu tanımlar tabloE unix-zaman damgasını içeren
- bu, veritabanındaki bir DATETIME alanıysa, başında '*' olan önek
%xx aracılığıyla hex tipi kodlama gerçek değere çevrilir, %'yi kullanmak için %'yi kullanın
<veri değer sütun>
E sütununu tanımlar tabloE grafiklendirilmesi gereken değer sütununu içeren
%xx aracılığıyla hex tipi kodlama gerçek değere çevrilir, %'yi kullanmak için %'yi kullanın
/türet
kullanılan veri değerinin 2 ardışık değerin deltası olması gerektiğini tanımlar (COUNTER veya DERIVE tipi veri kaynaklarını simüle etmek için)
/ madde(ler)>
içindeki girişleri filtrelemek için AND ile birleştirilen yan tümceleri (veya daha fazlasını) tanımlar. tablo
%xx aracılığıyla hex tipi kodlama gerçek değere çevrilir, %'yi kullanmak için %'yi kullanın
ds-name olarak kullanılabilecek sütun-adlarının döndürülen değeri şunlardır:
dk, ort, maksimum, saymak ve sigma
DS tanımınızda ds-name olarak kullanılmak üzere döndürülür.
Bunun kullanılmasının nedeni, konsolidasyon fonksiyonunun min/ort ve maks için kullanılması durumunda motorun birkaç kez kullanılmasıdır.
Ve bu, birkaç kez kullanılan aynı SQL İfadeleriyle sonuçlanır.
ÖRNEKLER
İşte MySQL veritabanındaki bir tablo örneği:
DB bağlantı bilgileri
dbhost=127.0.0.1
kullanıcı=rrd
şifre=gizli
veritabanı adı=rrd
işte tablo:
TABLO OLUŞTUR RRDV Değeri (
RRDKeyID bigint(20) NULL DEĞİL,
UnixZaman Damgası int(11) NULL DEĞİL,
değer çift varsayılan NULL DEĞİL,
BİRİNCİL ANAHTAR (RRDKeyID,UnixTimeStamp)
);
ve grafiğini çıkarmak istediğimiz RRDKeyID: 1141942900757789274
Buna erişmek için sözde rrd dosya adı:
"sql//mysql/host=127.0.0.1/dbname=rrd/kullanıcıadı=rrd/parola=gizli//RRDValue/UnixTimeStamp
/değer/RRDKeyID=1141464142203608274"
Bunu burada göstermek için, gerçek değerleri içeren bir grafik oluşturma komutu.
DS_BASE="sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=passwd//RRDValue/UnixTimeStamp/value/RRDKeyID=1141942900757789274"
rrdtool graph test.png --imgformat=PNG --start=-1gün --end=+3saat --width=1000 --height=600 \
"DEF:dk=$DS_BASE:dk:ORTALAMA" \
"LINE1:dak#FF0000:değer" \
"DEF:ortalama=$DS_BASE:ortalama:ORTALAMA" \
"LINE1:avg#00FF00:ortalama" \
"DEF:maks=$DS_BASE:maks:ORTALAMA" \
"LINE1:maks#FF0000:maks" \
"DEF:sigma=$DS_BASE:sigma:ORTALAMA" \
"CDEF:üst=ortalama,4,sigma,*,+" \
"LINE1:üst#0000FF:+4 sigma" \
"CDEF:düşük=ortalama,4,sigma,*,-" \
"LINE1:alt#0000FF:-4 sigma"
NOTLAR
* Doğal olarak, libdbi'nin desteklediği diğer herhangi bir sürücüyü de kullanabilirsiniz - örneğin postgres,
Kendi ID’n ile mağazalarını oluştur
* Veri kaynağının birleştirilme şeklinden, üzerinde birleştirmeler yapmak da mümkün olmalıdır.
farklı tablolar
(tabloda tabloları "," ile ayırın ve WHERE Cümlelerine tablo eşit birleşimlerini ekleyin.
Bu test edilmedi!!!)
* Aynı veri kaynağını kullanarak veritabanına eklemek de nispeten basit olmalıdır.
dize.
Bu uygulanmadı...
* Toplama işlevleri yok sayılır ve bunun yerine birkaç veri sütunu kullanılır
minimum, ortalama ve maksimum olduğunda aynı SQL'i birkaç kez sorgulamaktan kaçınmak için
grafik için gerekli...
* DB verimliliği için, biri tarihi değerleri içeren 2 tabloya sahip olmayı düşünmelisiniz.
ve diğeri en son verileri içerir.
Bu ikinci tablo, en az miktarda SQL engellemeye izin vermek için küçük tutulmalıdır.
ifadeleri.
Mysql ile, birincisi için myisam tablo tipini ve ikincisi için InnoDB'yi bile kullanabilirsiniz.
Bu, özellikle +100M satırlı tablolarda myisam çok daha küçük olduğu için ilginçtir.
sonra InnoDB.
* SQL deyimlerinde hata ayıklamak için RRDDEBUGSQL ortam değişkenini ve gerçek SQL'i ayarlayın
ifadeler ve zamanlama stderr'e yazdırılır.
Performans sorunlar ile MySQL arka uç
Bir MySQL sunucusundan veri aldığınızda LibDBI büyük bir performans sorunu yaşar. Verim
etki, katlanarak veritabanından aldığınız değerlerin sayısına bağlıdır. İçin
örneğin, 2DS'nin 5 saatlik veri üzerinde grafiğini bir
5 dakikalık hassasiyet (veriler bir RRD dosyasından geldiğinde 100 ms'ye karşı). Bu hata olmuştur
LibDBI'nin en son sürümünde düzeltildi (henüz yayınlanmadı). O zaman, ihtiyacın olacak
Düzeltmek için libdbi ve libdbi sürücülerini CVS deposundan derleyin. daha fazlasını bulabilirsin
bu libdbi-users posta listesi dizisi hakkında bilgi:
http://sourceforge.net/mailarchive/message.php?msg_id=30320894
onworks.net hizmetlerini kullanarak rrdgraph_libdbi'yi çevrimiçi kullanın