RRDTool
К:Программное обеспечение, разработанное в 1999 годуК:ПРО:ИТ:Статьи по алфавитуК:ПРО:ИТ:Последняя правка: в позапрошлом году
RRDTool | |
---|---|
Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). | |
Скриншот программы RRDTool | |
Тип | база данных, графопостроитель (плоттер) |
Автор | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Разработчик | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Написана на | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Интерфейс | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Операционная система | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Языки интерфейса | Ошибка Lua в Модуль:Wikidata на строке 288: attempt to index field 'wikibase' (a nil value). |
Первый выпуск | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Аппаратная платформа | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Последняя версия | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Кандидат в релизы | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Бета-версия | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Альфа-версия | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Тестовая версия | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Читаемые форматы файлов | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Создаваемые форматы файлов | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Состояние | потихоньку сдыхает вместе с автором |
Лицензия | Ошибка Lua в Модуль:Wikidata на строке 1107: attempt to index field 'wikibase' (a nil value). |
Сайт | oss.oetiker.ch/rrdtool/ |
Ошибка Lua в Модуль:Wikidata на строке 288: attempt to index field 'wikibase' (a nil value). |
RRDTool (round-robin database tool, циклическая база данных инструмент, круглый дрозд база данных) — говнософт, депрекейтед хуйня, легаси ссанина и непонятная пиздохуевина которой по каким то непонятным нахуй причинам продолжают пользоваться такие долбоебы как еблединец.
Эта хуйня используется в:
- VkOnlineMon
- Monitorix
- sensors.lebedinets.ru
- в пиздец у твоей мамаши
Чтоб вы поняли какая это параша вот вам пример кода:
#!/usr/bin/rrdcgi <RRD::GRAPH /home/sensors/www/www/temp-hours.png --imgformat PNG --end now --imginfo '<IMG SRC="/%s" WIDTH=%lu HEIGHT=%lu>' --start end-28800s --width 960 --height 600 --upper-limit 30 --lower-limit -30 --y-grid 1:5 DEF:outside=/home/sensors/rrd/outside_temp.rrd:outside_temp:AVERAGE LINE3:outside#0000FF:"Outside temperature" AREA:outside#0000FF10 DEF:balcony=/home/sensors/rrd/balcony_temp.rrd:balcony_temp:AVERAGE LINE3:balcony#00D0D0:"Balcony temperature" DEF:room1=/home/sensors/rrd/room_inside1_temp.rrd:room_inside1_temp:AVERAGE LINE3:room1#FF0000:"Room temperature #1" DEF:radiator=/home/sensors/rrd/radiator_temp.rrd:radiator_temp:AVERAGE LINE3:radiator#A0A0A0:"Radiator temperature" DEF:rpi=/home/sensors/rrd/rpi_temp.rrd:rpi_temp:AVERAGE LINE1:rpi#FF00FF:"Raspberry Pi temperature" CDEF:zero=outside,UN,0,0,IF LINE:zero#000000 ><br>За последние 8 часов<br><br> <RRD::GRAPH /home/sensors/www/www/temp-day.png --imgformat PNG --end now --imginfo '<IMG SRC="/%s" WIDTH=%lu HEIGHT=%lu>' --start end-86399s --width 960 --height 600 --upper-limit 30 --lower-limit -30 --y-grid 1:5 DEF:outside=/home/sensors/rrd/outside_temp.rrd:outside_temp:AVERAGE LINE3:outside#0000FF:"Outside temperature" AREA:outside#0000FF10 DEF:balcony=/home/sensors/rrd/balcony_temp.rrd:balcony_temp:AVERAGE LINE3:balcony#00D0D0:"Balcony temperature" DEF:room1=/home/sensors/rrd/room_inside1_temp.rrd:room_inside1_temp:AVERAGE LINE3:room1#FF0000:"Room temperature #1" DEF:radiator=/home/sensors/rrd/radiator_temp.rrd:radiator_temp:AVERAGE LINE3:radiator#A0A0A0:"Radiator temperature" DEF:rpi=/home/sensors/rrd/rpi_temp.rrd:rpi_temp:AVERAGE LINE1:rpi#FF00FF:"Raspberry Pi temperature" CDEF:zero=outside,UN,0,0,IF LINE:zero#000000 ><br>За сутки<br><br>
Не переживайте я тоже нихуя не понимаю
Ладно а теперь без рофлов как этой хуйней пользоваться
Для начала создадим базу данных:
rrdtool create temp.rrd -s 60 \ DS:temp:GAUGE:3600:-100:100 \ RRA:MAX:0.5:1:10000 \ RRA:MAX:0.5:5:10000 \ RRA:MAX:0.5:20:10000 \ RRA:MAX:0.5:60:10000 \ RRA:MAX:0.5:180:10000 \ RRA:MAX:0.5:720:10000 \ RRA:MAX:0.5:1440:10000 \ RRA:MIN:0.5:1:10000 \ RRA:MIN:0.5:5:10000 \ RRA:MIN:0.5:20:10000 \ RRA:MIN:0.5:60:10000 \ RRA:MIN:0.5:180:10000 \ RRA:MIN:0.5:720:10000 \ RRA:MIN:0.5:1440:10000 \ RRA:AVERAGE:0.5:1:10000 \ RRA:AVERAGE:0.5:5:10000 \ RRA:AVERAGE:0.5:20:10000 \ RRA:AVERAGE:0.5:60:10000 \ RRA:AVERAGE:0.5:180:10000 \ RRA:AVERAGE:0.5:720:10000 \ RRA:AVERAGE:0.5:1440:10000
Тут мы создаем базу данных в файл temp.rrd
параметром -s мы указываем примерный интервал между добавлением данных. Далее DS это данные которые мы храним.
Структура DS:
DS:<название>:<тип данных>:<heartbeat>:<минимальное значение>:<максимальное значение>
heartbeat это время простоя после которого диапозон данных будут помечен как *UNKNOWN* (идеальным вариком будет <интервал между обновлениями> умноженный на 5)
Тип данных | Описание |
---|---|
GAUGE | is for things like temperatures or number of people in a room or the value of a RedHat share. |
COUNTER | is for continuous incrementing counters like the ifInOctets counter in a router. The COUNTER data source assumes that the counter never decreases, except when a counter overflows. The update function takes the overflow into account. The counter is stored as a per-second rate. When the counter overflows, RRDtool checks if the overflow happened at the 32bit or 64bit border and acts accordingly by adding an appropriate value to the result. |
DCOUNTER | the same as COUNTER, but for quantities expressed as double-precision floating point number. Could be used to track quantities that increment by non-integer numbers, i.e. number of seconds that some routine has taken to run, total weight processed by some technology equipment etc. The only substantial difference is that DCOUNTER can either be upward counting or downward counting, but not both at the same time. The current direction is detected automatically on the second non-undefined counter update and any further change in the direction is considered a reset. The new direction is determined and locked in by the second update after reset and its difference to the value at reset. |
DERIVE |
|
DDERIVE |
|
ABSOLUTE |
|
COMPUTE | is for storing the result of a formula applied to other data sources in the RRD. This data source is not supplied a value on update, but rather its Primary Data Points (PDPs) are computed from the PDPs of the data sources according to the rpn-expression that defines the formula. Consolidation functions are then applied normally to the PDPs of the COMPUTE data source (that is the rpn-expression is only applied to generate PDPs). In database software, such data sets are referred to as "virtual" or "computed" columns. |
На самом в 99% случаем вам нужен либо GAUGE либо COUNTER