Внимание! В данный момент не все функции доступны. LibRrdSharp может проделывать основные вещи с базами rrdtool и графиками.
- Генерирование графиков
- Создание баз данных
- Загрузка баз данных
- Дампинг баз данных в xml формат
- Обновление баз данных
Перед тем, как использовать библиотеку, нужно произвести сборку.
Для Linux..
cd LibRrd/src
dotnet buildДля Windows нужно открыть Visual Studio 2019-2022 и нажать на кнопку build для сборки. После проделанных манипуляций библиотека готова к использованию.
Перед использованием, нужно создать базу данных либо загрузить её.
Для это предусмотрены 2 метода в классе RRD (Create, Load) соответственно.
Перед всеми действиями, скачайте или соберите rrdtool под вашу ОС, и укажите полный путь к исполняемому файлу rrdtool в статической переменной
RRD_PATH. В противном случае будет исключение.
varrrd=RRD.Create("system.rrd",step,newList<IDataSource>(){newDS("template",DataType.GAUGE,20,0,100)},newList<IRraArchive>(){newRRA(RraType.LAST,100,0.5),newRRA(RraType.AVERAGE,100,0.5),newRRA(RraType.MIN,100,0.5),newRRA(RraType.MAX,100,0.5)});varrrd=RRD.Load("test.rrd");varxml=rrd.Dump();// Возвращает строку После вызова метода
Render, график сохрантися по пути который вы указали вFileName. Если нужно получить объект классаImage, для этого предназначен методGetRenderedImage.
vargraph=newGraph(800,360,DateTime.Now,DateTime.Now){Title="Test",File="test.png",Watermark="Test",TitleFont=newTitleFont("Ubuntu Mono Medium",15),WatermarkFont=newWatermarkFont("Ubuntu Mono Medium",10),DefaultFont=newDefaultFont("Ubuntu Mono Medium",10)};graph.Defs.Add(newDef(rrd,rrd.GetDataSourceByName("template"),RraType.LAST,"template"));graph.Cdefs.Add(newCdef("memory_cdef",$"template_def,UN,0,template_def,IF"));graph.Legend.Add(newComment("Cur".PadLeft(23)));graph.Legend.Add(newComment("Avg".PadLeft(9)));graph.Legend.Add(newComment("Min".PadLeft(8)));graph.Legend.Add(newComment("Max\\n".PadLeft(9)));graph.Legend.Add(newLine(graph.Defs.First(elem =>elem.Name=="template_def"),Color.Brown,1,"TestValue"));graph.Legend.Add(newGprint(graph.Defs.First(elem =>elem.Name=="template_def"),RraType.LAST,"%6.2lf %%".PadLeft(15)));graph.Legend.Add(newGprint(graph.Defs.First(elem =>elem.Name=="template_def"),RraType.AVERAGE,"%6.2lf %%"));graph.Legend.Add(newGprint(graph.Defs.First(elem =>elem.Name=="template_def"),RraType.MIN,"%6.2lf %%"));graph.Legend.Add(newGprint(graph.Defs.First(elem =>elem.Name=="template_def"),RraType.MAX,"%6.2lf %%\\n"));graph.Render();MIT