англійськафранцузькаіспанська

Значок OnWorks

rrdtutorial - Онлайн у хмарі

Запустіть rrdtutorial у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда rrdtutorial, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS

ПРОГРАМА:

ІМ'Я


rrdtutorial - підручник Алекса ван ден Богаердта з RRDtool

ОПИС


RRDtool написаний Тобіасом Отікером[захищено електронною поштою]> з внесками багатьох людей
по всьому світу. Цей документ написав Алекс ван ден Богаердт
<[захищено електронною поштою]> щоб допомогти вам зрозуміти, що таке RRDtool і для чого він може бути
Вас.

Документація, що надається з RRDtool, може бути занадто технічною для деяких людей. Це
Підручник тут, щоб допомогти вам зрозуміти основи RRDtool. Це має підготувати вас до цього
прочитайте документацію самостійно. Це також пояснює загальні речі про статистику
з акцентом на мережах.

Підручник


Важливий
Будь ласка, не пропускайте вперед у цьому документі! Перша частина цього документа пояснює
основи і може бути нудним. Але якщо ви не розумієте основ, приклади не зрозуміють
бути таким же значущим для вас.

Іноді щось змінюється. Цей приклад використовувався для надання чисел на кшталт "0.04" замість
"4.00000e-02". Насправді це однакові числа, тільки записані по-різному. Не треба
будьте стривожені, якщо майбутня версія rrdtool відобразить дещо іншу форму виводу.
Приклади в цьому документі правильні для версії 1.2.0 RRDtool.

Крім того, іноді трапляються помилки. Вони також можуть впливати на результат прикладів.
Приклад speed4.png страждає від цього (обробка невідомих даних у if-
твердження було неправильним). Звичайні дані будуть в порядку (помилка в rrdtool не триватиме довго)
але особливі випадки, такі як NaN, INF тощо, можуть тривати трохи довше. Спробуйте іншу версію, якщо
ти можеш, або просто живи з цим.

Я виправив приклад speed4.png (і додав примітку). Можуть бути й інші приклади
страждає від такої ж чи подібної помилки. Спробуйте виправити це самостійно, що чудово
вправа. Але, будь ласка, не надсилайте свій результат як виправлення до джерела цього документа.
Обговоріть це в списку користувачів або напишіть мені.

Що is RRDtool?
RRDtool відноситься до інструменту Round Robin Database. Кругова система – це техніка, яка працює з a
фіксована кількість даних і вказівник на поточний елемент. Подумайте про коло з деякими
точки, нанесені на краю. Ці точки є місцями, де можна зберігати дані. Намалюйте
стрілка від центру кола до однієї з точок; це вказівник. Коли
поточні дані зчитуються або записуються, покажчик переміщається на наступний елемент. Оскільки ми на а
коло немає ні початку, ні кінця, можна продовжувати і продовжувати. Після а
при цьому будуть використані всі доступні місця, а процес автоматично повторно використовує старі
місця розташування. Таким чином, набір даних не буде збільшуватися в розмірі, і тому не потребує
обслуговування. RRDtool працює з циклічними базами даних (RRD). Він зберігає та витягує
дані з них.

Що дані може be put в an RRD?
Назвіть це, ймовірно, він підійде, якщо це якісь дані часового ряду. Це
означає, що ви повинні мати можливість виміряти деяке значення в кілька моментів часу і надати це
інформацію до RRDtool. Якщо ви можете це зробити, RRDtool зможе зберегти його. Цінності
має бути числовим, але не обов’язково бути цілими, як у випадку з MRTG (наступний
розділ надасть докладнішу інформацію про цю більш спеціалізовану програму).

Багато прикладів нижче говорять про SNMP, який є акронімом від Simple Network Management
протокол. «Простий» відноситься до протоколу. Це не означає, що ним просто керувати або
стежити за мережею. Опрацювавши цей документ, ви повинні знати достатньо
вміти розуміти, про що говорять люди. Наразі просто зрозумійте, що SNMP може
використовуватися для запиту пристроїв щодо значень лічильників, які вони зберігають. Це цінність від тих
лічильники, які ми хочемо зберігати в RRD.

Що може I do з це інструмент?
RRDtool походить від MRTG (Multi Router Traffic Grapher). MRTG починалася як крихітний
скрипт для графіка використання підключення університету до Інтернету. МРТГ був пізніше
(зловживання) використовується як інструмент для створення графіків інших джерел даних, включаючи температуру, швидкість, напругу,
кількість роздруківок тощо.

Швидше за все, ви почнете використовувати RRDtool для зберігання та обробки даних, зібраних через SNMP.
Дані, швидше за все, будуть байтами (або бітами), переданими з мережі або в мережу
комп'ютер. Але його також можна використовувати для відображення припливних хвиль, сонячної радіації, потужності
споживання, кількість відвідувачів на виставці, рівень шуму поблизу аеропорту,
температура у вашому улюбленому святковому місці, температура в холодильнику і будь-яка ваша
може придумати фантазія.

Вам потрібен лише датчик, щоб вимірювати дані та мати можливість передавати цифри в RRDtool.
RRDtool дає змогу створити базу даних, зберігати в ній дані, отримувати ці дані та створювати
графіки у форматі PNG для відображення у веб-браузері. Ці зображення PNG залежать від
дані, які ви зібрали і можуть бути, наприклад, оглядом середнього використання мережі,
або піки, які відбулися.

Що if I як і раніше мати проблеми після читання це документ?
Перш за все: прочитайте ще раз! Можливо, ви щось пропустили. Якщо ви не можете зібрати
джерела, і у вас є досить поширена ОС, це, ймовірно, не буде з вини RRDtool.
В Інтернеті можуть бути попередньо скомпільовані версії. Якщо вони походять від довірених
джерела, отримайте одне з них.

З іншого боку, якщо програма працює, але не дає очікуваних результатів, вона буде
виникнути проблеми з його налаштуванням. Перегляньте свою конфігурацію та порівняйте її з
наведені нижче приклади.

Є список розсилки та його архів. Прочитайте список протягом кількох тижнів і шукайте
архів. Вважається грубим просто задати питання без пошуку в архівах: ваш
можливо, проблема вже була вирішена для когось іншого! Це справедливо для більшості, якщо ні
все, списки розсилки, і не тільки для цього конкретного. Подивіться в документації, що
прийшов із RRDtool для розташування та використання списку.

Я пропоную вам виділити момент, щоб підписатися на список розсилки прямо зараз, надіславши електронний лист
до[захищено електронною поштою]> з темою "підписатися". Якщо ти колись захочеш
залиште цей список, просто напишіть електронного листа на ту ж адресу, але тепер із темою
"відписатися".

Як волі ви допомога я?
Даючи вам докладні описи з докладними прикладами. Я припускаю, що наступне
інструкції в представленому порядку дадуть вам достатньо знань про RRDtool
експериментуйте на собі. Якщо з першого разу не вийде, не опускайте руки. Перечитайте
те, що ви зрозуміли, можливо, ви щось упустили.

Наслідуючи приклади, ви отримуєте певний практичний і, що ще важливіше, досвід
довідкова інформація про те, як це працює.

Вам потрібно щось знати про шістнадцяткові числа. Якщо ні, почніть з
читаючи bin_dec_hex, перш ніж продовжити тут.

вашу перший раунд Робін Database
На мою думку, найкращий спосіб навчитися чогось – це робити насправді. Чому б не почати правильно
зараз? Ми створимо базу даних, помістимо в неї деякі значення і знову витягнемо ці дані. Ваш
вихідні дані повинні бути такими ж, як і вихідні дані, включені в цей документ.

Ми почнемо з простих речей і порівняємо автомобіль з роутером або порівняємо кілометри
(милі, якщо хочете) з бітами та байтами. Все одно: якась кількість за певний час.

Припустимо, що у нас є пристрій, який передає байти в Інтернет і з Інтернету. Цей пристрій зберігає
лічильник, який починається з нуля, коли він увімкнений, збільшується з кожним байтом
передано. Цей лічильник, ймовірно, матиме максимальне значення. Якщо це значення досягнуто і
підраховується додатковий байт, лічильник починається з нуля. Це те саме, що і багато
лічильники у світі, такі як лічильник пробігу в автомобілі.

Більшість дискусій про мережу говорять про біти в секунду, тож давайте звикнути до цього
зразу. Припустимо, що байт вісім біт і почніть думати бітами, а не байтами. Лічильник,
однак, усе ще підраховує байти! У світі SNMP більшість лічильників є 32-бітними. Це
означає, що вони рахують від 0 до 4294967295. Ми будемо використовувати ці значення в прикладах.
Пристрій на запит повертає поточне значення лічильника. Ми знаємо той час
пройшло з моменту останнього запиту, тому тепер ми знаємо, скільки байтів було передано ***on
середній*** за секунду. Це не дуже важко підрахувати. Спочатку на словах, потім у
розрахунки:

1. Візьміть поточний лічильник, відніміть від нього попереднє значення.

2. Зробіть те ж саме з поточним часом і попереднім часом (у секундах).

3. Розділіть результат (1) на результат (2), результатом буде кількість байтів на
другий. Помножте на вісім, щоб отримати кількість біт в секунду (bps).

bps = (лічильник_зараз - лічильник_перед) / (час_зараз - час_перед) * 8

Деяким людям може допомогти перевести це на автомобільний приклад. Не пробуйте цього
наприклад, і якщо ви це зробите, не звинувачуйте мене за результати!

Люди, які не звикли думати в кілометрах на годину, можуть перевести більшість у милі на годину
годину, розділивши км на 1.6 (досить близько). Я буду використовувати такі скорочення:

м: метр
км: кілометр (= 1000 метрів).
год: година
с: друге
км/год: кілометри на годину
м/с: метрів за секунду

Ви керуєте автомобілем. О 12:05 ви читаєте лічильник на приладовій панелі, і він вам повідомляє
що автомобіль до цього моменту проїхав 12345 км. О 12:10 дивишся ще раз, написано
12357 км. Це означає, що ви пройшли 12 км за п’ять хвилин. Вчений би переклав
це в метрах на секунду, і це робить гарне порівняння з проблемою (байт
за п’ять хвилин) порівняно з (бітів на секунду).

Ми пройшли 12 кілометрів, тобто 12000 метрів. Ми зробили це за п’ять хвилин або 300
секунд. Наша швидкість 12000 м / 300 с або 40 м/с.

Ми могли б також обчислити швидкість у км/год: 12 по 5 хвилин – це година, отже, ми повинні
помножте 12 км на 12, щоб отримати 144 км/год. Для наших рідних англомовних друзів: це 90
mph, тому не пробуйте цей приклад вдома чи там, де я живу :)

Пам’ятайте: ці цифри є лише середніми. Немає способу розібратися з
цифри, якщо ви їхали з постійною швидкістю. Далі в цьому підручнику є приклад
це пояснює це.

Сподіваюся, ви розумієте, що немає різниці в обчисленні m/s або bps; тільки шлях
ми збираємо дані різні. Навіть k від кілограма таке ж, як у мережевих термінах
k також означає 1000.

Тепер ми створимо базу даних, де ми зможемо зберігати всі ці цікаві цифри. Метод
Програма, яка використовується для запуску, може дещо відрізнятися від ОС до ОС, але я припускаю, що ви зрозумієте
це вийде, якщо він працює інакше на вашому. Переконайтеся, що ви не перезаписуєте файли на своєму
системи під час виконання наступної команди та введіть весь рядок як один довгий рядок (I
довелося розділити його для читабельності) і пропустити всі символи «\».

rrdtool створити test.rrd \
--початок 920804400 \
DS:швидкість:COUNTER:600:U:U \
RRA:СРЕДНЄ:0.5:1:24 \
RRA:СРЕДНЄ:0.5:6:10

(Тож введіть: "rrdtool create test.rrd --start 920804400 DS ...")

Що має було створено?
Ми створили циклічну базу даних під назвою test (test.rrd), яка починається опівдні першого дня
почав писати цей документ 7 березня 1999 року (ця дата перекладається як 920804400
секунд, як описано нижче). Наша база даних містить одне джерело даних (DS) під назвою «швидкість».
представляє лічильник. Цей лічильник зчитується кожні п’ять хвилин (це за замовчуванням
тому вам не потрібно вводити "--step=300"). В одній базі даних два кругових
зберігаються архіви (RRA), усереднює дані кожного разу, коли вони читаються (наприклад,
нічого середніх) і зберігає 24 проби (24 рази по 5 хвилин це 2 години). Інші
складає 6 значень (півгодини) і містить 10 таких середніх (наприклад, 5 годин).

RRDtool працює зі спеціальними мітками часу зі світу UNIX. Ця штамп часу є
кількість секунд, що пройшли з 1 січня 1970 UTC. Значення позначки часу
переведено на місцевий час, і тому виглядатиме по-різному для різних часових поясів.

Швидше за все, ви не в тій самій частині світу, що й я. Це означає ваш час
зона різна. У всіх прикладах, де я говорю про час, години можуть бути неправильними
ти. Це мало впливає на результати прикладів, просто виправте час
читання. Як приклад: там, де я побачу "12:05", британці побачать "11:05".

Тепер нам потрібно заповнити нашу базу даних деякими цифрами. Ми зробимо вигляд, що прочитали
наступні числа:

12:05 12345 км
12:10 12357 км
12:15 12363 км
12:20 12363 км
12:25 12363 км
12:30 12373 км
12:35 12383 км
12:40 12393 км
12:45 12399 км
12:50 12405 км
12:55 12411 км
13:00 12415 км
13:05 12420 км
13:10 12422 км
13:15 12423 км

Заповнюємо базу даних наступним чином:

rrdtool оновлення test.rrd 920804700:12345 920805000:12357 920805300:12363
rrdtool оновлення test.rrd 920805600:12363 920805900:12363 920806200:12373
rrdtool оновлення test.rrd 920806500:12383 920806800:12393 920807100:12399
rrdtool оновлення test.rrd 920807400:12405 920807700:12411 920808000:12415
rrdtool оновлення test.rrd 920808300:12420 920808600:12422 920808900:12423

Це означає: оновіть нашу тестову базу даних за допомогою таких цифр

час 920804700, значення 12345
час 920805000, значення 12357

тощо.

Як бачите, в одну базу даних можна подати більше одного значення
команда. Мені довелося зупинитися на трьох для читабельності, але реальний максимум на рядок – це ОС
залежний.

Тепер ми можемо отримати дані з нашої бази даних за допомогою "rrdtool fetch":

rrdtool fetch test.rrd СРЕДНЄ --початок 920804400 --кінець 920809200

Він повинен повернути такий висновок:

швидкість

920804700: нан
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e+00
920805900: 0.0000000000e+00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: нан
920809500: нан

Зауважте, що ви можете отримати більше рядків, ніж очікували. Причина цього в тому, що ви просите
діапазон часу, який закінчується на 920809200. Число, яке записане позаду 920809200: у
наведений вище список охоплює часовий діапазон від 920808900 до 920809200, ЗА ВИКЛЮЧЕННЯ 920809200. Отже
щоб бути впевненим, ви також отримаєте запис від 920809200 до 920809500, оскільки
ВКЛЮЧАЄ 920809200. Ви також можете побачити "NaN" замість "nan", це залежить від ОС. "NaN"
означає «не число». Якщо ваша ОС пише "U" або "UNKN" або щось подібне, це
Гаразд. Якщо щось інше не так, ймовірно, це пов’язано з допущеною вами помилкою (припускаючи
що мій підручник правильний, звичайно :-). У такому випадку: видаліть базу даних і спробуйте
знову.

Сенс наведеного вище результату стане зрозумілим нижче.

Time до створювати деякі графіка
Спробуйте виконати таку команду:

rrdtool graph speed.png \
--початок 920804400 --кінець 920808000 \
DEF:myspeed=test.rrd:speed:AVERAGE \
РЯДОК2:myspeed#FF0000

Це створить speed.png, який починається о 12:00 і закінчується о 13:00. Є визначення
змінної під назвою myspeed, використовуючи дані RRA "speed" з бази даних "test.rrd".
Намальована лінія має висоту 2 пікселі і представляє змінну myspeed. Колір червоний
(визначається його rgb-представництвом, див. нижче).

Ви помітите, що початок графіка не о 12:00, а о 12:05. Це відбувається тому
у нас недостатньо даних, щоб визначити середнє значення до цього часу. Це станеться лише тоді, коли
Ви пропустите деякі зразки, сподіваюся, цього не буде багато.

Якщо це спрацювало: вітаємо! Якщо ні, перевірте, що пішло не так.

Кольори створені з червоного, зеленого та синього. Для кожного з компонентів ви вказуєте
скільки використовувати в шістнадцятковому, де 00 означає не включено, а FF означає повністю включено.
Білий "колір" - це суміш червоного, зеленого та синього: FFFFFF Чорний "колір" - це все
кольори вимкнені: 000000

червоний #FF0000
зелений #00FF00
синій #0000FF
пурпуровий #FF00FF (змішаний червоний з синім)
сірий #555555 (одна третина всіх компонентів)

Крім того, ви можете (за допомогою недавнього RRDtool) додати альфа-канал (прозорість). The
за замовчуванням буде "FF", що означає непрозорий.

Щойно створений PNG можна відобразити за допомогою улюбленого засобу перегляду зображень. Веб-браузери
відображатиме PNG через URL-адресу "file:///the/path/to/speed.png"

Графіка з деякі математики
Дивлячись на зображення, ви помітите, що горизонтальна вісь позначена 12:10, 12:20,
12:30, 12:40 та 12:50. Іноді етикетка не підходить (імовірно, 12:00 і 13:00).
кандидатів), тому вони пропускаються.

Вертикальна вісь відображає діапазон, який ми ввели. Ми надали кілометри і при поділі
через 300 секунд ми отримуємо дуже малі числа. Точніше, перше значення було 12
(12357-12345) і поділено на 300, це становить 0.04, яке RRDtool відображає як "40 м"
означає «40/1000». "m" (milli) не має нічого спільного з метрами (також m), кілометрами або
міліметрів! RRDtool не знає про фізичні одиниці наших даних, він просто працює з ними
безрозмірні числа.

Якби ми вимірювали наші відстані в метрах, це було б (12357000-12345000)/300 =
12000 / 300 = 40.

Оскільки більшість людей краще сприймають числа в цьому діапазоні, ми виправимо це. Ми могли б
відтворити нашу базу даних і зберегти правильні дані, але є кращий спосіб: ми робимо деякі
обчислення під час створення png-файлу!

rrdtool графік speed2.png \
--початок 920804400 --кінець 920808000 \
--вертикальна мітка м/с \
DEF:myspeed=test.rrd:speed:AVERAGE \
CDEF:realspeed=myspeed,1000,\* \
LINE2: реальна швидкість#FF0000

Примітка: мені потрібно екранувати оператор множення * за допомогою зворотної косої риски. Якщо я цього не зроблю, то
операційна система може інтерпретувати його та використовувати для розширення імені файлу. Ви також могли розмістити
рядок у лапках, наприклад:

"CDEF:realspeed=myspeed,1000,*" \

Це зводиться до: це RRDtool, який повинен бачити *, а не ваша оболонка. І це твоя оболонка
інтерпретація \, а не RRDtool. Можливо, вам доведеться відповідно відкоригувати приклади, якщо це станеться
використовувати операційну систему або оболонку, які поводяться інакше.

Після перегляду цього PNG ви помітите, що «m» (мілі) зник. Це те, що
правильний результат буде. Крім того, до зображення було додано мітку. Крім речей
згаданий вище, PNG має виглядати так само.

Розрахунки вказані в частині CDEF вище і наведені у зворотній польській нотації
("RPN"). Ми попросили RRDtool зробити: «взяти джерело даних myspeed та номер
1000; помножте їх". Поки що не турбуйтеся про RPN, це буде пояснено пізніше
деталь. Крім того, ви можете прочитати мій підручник із CDEF та підручник Стіва Редера щодо RPN.
Але спочатку закінчіть цей підручник.

Тримайся! Якщо ми можемо помножити значення на 1000, це також має бути можливим відображення
кілометрів на годину з тих самих даних!

Щоб змінити значення, яке вимірюється в метрах на секунду:

Розрахунок метрів на годину: значення * 3600
Розрахунок кілометрів на годину: значення / 1000
Разом це складає: значення * (3600/1000) або значення * 3.6

У нашому прикладі бази даних ми зробили помилку, і нам потрібно це компенсувати
множимо на 1000. Застосовуючи цю поправку:

значення * 3.6 * 1000 == значення * 3600

Тепер давайте створимо цей PNG і додамо ще трохи магії ...

rrdtool графік speed3.png \
--початок 920804400 --кінець 920808000 \
--вертикальна мітка км/год \
DEF:myspeed=test.rrd:speed:AVERAGE \
"CDEF:kmh=myspeed,3600,*" \
CDEF:швидко=км/год,100,GT,км/год,0,IF \
CDEF: добре = км/год, 100, GT, 0, км/год, IF \
HRULE:100#0000FF:"Максимально дозволений" \
AREA:good#00FF00:"Хороша швидкість" \
AREA:fast#FF0000:"Занадто швидко"

Примітка: тут ми використовуємо інший спосіб екранування оператора *, укладаючи весь рядок
подвійні лапки.

Цей графік виглядає набагато краще. Швидкість відображається в км/год і навіть є додатковий рядок
максимально дозволена швидкість (на дорозі, якою я їду). Я також змінив кольори, до яких раніше
швидкість відображення та змінив її з рядка на область.

Зараз розрахунки складніші. Для вимірювання швидкості в межах швидкісного обмеження вони
є:

Перевірте, чи км/год більше 100 (км/год, 100) GT
Якщо так, поверніть 0, інакше kmh ((( kmh,100 ) GT ), 0, kmh) IF

Для значень вище обмеження швидкості:

Перевірте, чи км/год більше 100 (км/год, 100) GT
Якщо так, поверніть kmh, інакше поверніть 0 ((( kmh,100) GT ), kmh, 0) IF

Графіка магія
Мені подобається вірити, що практично немає обмежень для того, як RRDtool graph може маніпулювати даними.
Я не буду пояснювати, як це працює, але подивіться на наступний PNG:

rrdtool графік speed4.png \
--початок 920804400 --кінець 920808000 \
--вертикальна мітка км/год \
DEF:myspeed=test.rrd:speed:AVERAGE \
CDEF:nonans=myspeed,UN,0,myspeed,IF \
CDEF:kmh=nonans,3600,* \
CDEF:швидко=км/год,100,GT,100,0,IF \
CDEF:понад=км/год,100,GT,км/год,100,-,0,IF \
CDEF: добре = км/год, 100, GT, 0, км/год, IF \
HRULE:100#0000FF:"Максимально дозволений" \
AREA:good#00FF00:"Хороша швидкість" \
AREA:fast#550000:"Занадто швидко" \
STACK:over#FF0000:"Перевищена швидкість"

Пам'ятаєте записку на початку? Мені довелося видалити невідомі дані з цього прикладу. The
'nonans' CDEF є новим, і 6-й рядок (який раніше був 5-м рядком) використовувався для читання
'CDEF:kmh=myspeed,3600,*'

Давайте створимо швидку і брудну сторінку HTML для перегляду трьох PNG:

Швидкість







Назвіть файл "speed.html" або подібне й перегляньте його у своєму веб-переглядачі.

Тепер все, що вам потрібно зробити, це регулярно вимірювати значення та оновлювати базу даних. Коли ти
хочете переглянути дані, відтворити PNG-файли та обов’язково оновити їх у своєму браузері.
(Примітка: просто натиснути перезавантажити може бути недостатньо, особливо якщо задіяні проксі. Спробуйте
shift-reload або ctrl-F5).

Updates in Реальність
Ми вже використовували команду "update": вона брала один або кілька параметрів у вигляді
" : ". Вам буде приємно дізнатися, що ви можете вказати поточний час, заповнивши
в "N" як час. Або ви можете використовувати функцію "час" у Perl (найкоротший приклад
в цьому підручнику):

perl -e 'час друку, "\n" '

Як запускати програму через регулярні проміжки часу залежить від ОС. Але ось приклад у псевдо
Код:

- Отримайте значення та помістіть його у змінну "$speed"
- швидкість оновлення rrdtool.rrd N:$speed

(не пробуйте це з нашою тестовою базою даних, ми будемо використовувати її в подальших прикладах)

Це все. Запускайте наведений вище сценарій кожні п’ять хвилин. Коли вам потрібно знати, що
графіки виглядають так, виконайте наведені вище приклади. Ви також можете помістити їх у сценарій. Після
запустивши цей сценарій, перегляньте сторінку index.html, яку ми створили вище.

Дещо слова on SNMP
Я можу уявити, що дуже мало людей зможуть отримати реальні дані зі свого автомобіля кожні п’ять
хвилин. Усім іншим людям доведеться задовольнятися якимось іншим видом лічильника. Ви можете
виміряйте кількість сторінок, надрукованих принтером, наприклад, чашки кави, виготовлені ним
кавоварка, пристрій, який підраховує спожиту електроенергію, що завгодно. Будь-яке збільшення
лічильник можна відстежувати та відображати на графіках, використовуючи матеріали, які ви вже вивчили. Пізніше будемо
також мати можливість відстежувати інші типи значень, наприклад температуру.

Багато людей, зацікавлених у RRDtool, будуть використовувати лічильник, який відстежує октети (байти)
передається мережевим пристроєм. Тож давайте зробимо це далі. Ми почнемо з а
опис того, як збирати дані.

Деякі люди зроблять зауваження, що існують інструменти, за допомогою яких можна збирати дані
ти. Вони мають рацію! Однак я вважаю, що важливо, щоб ви зрозуміли, що це не так
необхідно. Коли вам потрібно визначити, чому щось пішло не так, ви повинні знати, як вони
працювати.

Про один інструмент, використаний у прикладі, говорилося дуже коротко на початку
документ, він називається SNMP. Це спосіб спілкування з мережевим обладнанням. Інструмент, яким я користуюся
нижче називається "snmpget", і ось як він працює:

OID пароля пристрою snmpget

or

snmpget -v[версія] -c[пароль] OID пристрою

Для пристрою ви замінюєте ім’я або IP-адресу свого пристрою. Для пароля ви
використовуйте "рядок читання спільноти", як його називають у світі SNMP. Для деяких пристроїв
за замовчуванням "public" може працювати, однак це можна вимкнути, змінити або захистити
з міркувань конфіденційності та безпеки. Прочитайте документацію, яка постачається з вашим пристроєм або
програми.

Потім є цей параметр, який називається OID, що означає «ідентифікатор об’єкта».

Коли ви починаєте вивчати SNMP, це виглядає дуже заплутано. Це все не так складно
коли ви подивитеся на базу інформації управління ("MIB"). Це перевернуте дерево, яке
описує дані з одним вузлом як коренем і звідти кількома розгалуженнями. Ці
гілки потрапляють в інший вузол, вони розгалужуються і т. д. Усі гілки мають назву і
вони утворюють шлях, яким ми йдемо вниз. Гілки, за якими ми стежимо
названі: iso, org, dod, internet, mgmt і mib-2. Ці імена також можна записати як
числа і дорівнюють 1 3 6 1 2 1.

iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)

Існує велика плутанина щодо провідної точки, яку використовують деякі програми. Немає *ні*
провідна точка в OID. Однак деякі програми можуть використовувати наведену вище частину OID як
за замовчуванням. Щоб вказати різницю між скороченими OID і повними OID, їм потрібно a
провідна крапка, коли ви вказуєте повний OID. Часто ці програми залишають поза увагою
частина за замовчуванням під час повернення вам даних. Що ще гірше, їх є кілька
префікси за замовчуванням...

Гаразд, давайте перейдемо до початку нашого OID: у нас був 1.3.6.1.2.1 Звідти ми
особливо цікавить галузь "інтерфейси", яка має номер 2 (наприклад, 1.3.6.1.2.1.2
або 1.3.6.1.2.1.інтерфейси).

Спочатку ми повинні отримати якусь програму SNMP. Спочатку подивіться, чи є попередньо скомпільований пакет
доступні для вашої ОС. Це найкращий спосіб. Якщо ні, вам доведеться отримати
джерела самостійно та компілюйте їх. Інтернет переповнений джерелами, програмами тощо. Знайти
інформацію за допомогою пошукової системи або будь-якої іншої інформації.

Припустимо, ви отримали програму. Спочатку спробуйте зібрати деякі дані, доступні для більшості
системи. Пам’ятайте: для частини дерева, яка нас найбільше цікавить, є коротка назва
у світі, в якому ми живемо!

Я наведу приклад, який можна використовувати на Fedora Core 3. Якщо він не працює для вас,
ознайомтеся з посібником з snmp і адаптуйте приклад, щоб він працював.

snmpget -v2c -c загальнодоступний myrouter system.sysDescr.0

Пристрій має відповісти з описом самого себе, можливо, порожнім. Поки ти не отримав
дійсна відповідь з пристрою, можливо, використовуючи інший «пароль» або інший пристрій,
немає сенсу продовжувати.

snmpget -v2c -c загальнодоступний myrouter interfaces.ifNumber.0

Сподіваюся, в результаті ви отримаєте число, кількість інтерфейсів. Якщо так, ви можете продовжувати
і спробуйте іншу програму під назвою "snmpwalk".

snmpwalk -v2c -c загальнодоступний myrouter interfaces.ifTable.ifEntry.ifDescr

Якщо він повернеться зі списком інтерфейсів, ви майже на місці. Ось приклад:
[user@host /home/alex]$ snmpwalk -v2c -c public cisco 2.2.1.2

interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: B-канал 1"
interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: B-канал 2"
interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30
interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0"

На цьому обладнанні cisco я хотів би контролювати інтерфейс "Ethernet0" і з
вище виведення я бачу, що це номер чотири. Я спробую:

[user@host /home/alex]$ snmpget -v2c -c public cisco 2.2.1.10.4 2.2.1.16.4

interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519

Тож тепер у мене є два OID для моніторингу, і вони (цього разу повністю):

1.3.6.1.2.1.2.2.1.10

та

1.3.6.1.2.1.2.2.1.16

обидва з номером інтерфейсу 4.

Не обманюйтеся, це була не перша моя спроба. Мені теж знадобився час, щоб зрозуміти
що означають всі ці цифри. Це дуже допомагає, коли їх перекладають на описові
текст... Принаймні, коли люди говорять про MIB і OID, ви знаєте, що це все
про. Не забудьте номер інтерфейсу (0, якщо він не залежить від інтерфейсу) і спробуйте
snmpwalk, якщо ви не отримали відповідь від snmpget.

Якщо ви розумієте наведений вище розділ і отримуєте номери зі свого пристрою, продовжуйте
цей посібник. Якщо ні, поверніться назад і перечитайте цю частину.

A Реальний World Приклад
Нехай почнеться веселощі. Спочатку створіть нову базу даних. Він містить дані з двох лічильників,
називається введенням і виводом. Дані заносяться в архіви, які усереднюють їх. Вони беруть 1, 6, 24
або 288 зразків за раз. Вони також потрапляють в архіви, де зберігається максимальна кількість. Це
буде пояснено пізніше. Час між зразками становить 300 секунд, хороший початок
точки, що дорівнює п’яти хвилинам.

1 зразок «усереднений» залишається 1 період 5 хвилин
6 усереднених зразків стають одним середнім за 30 хвилин
Усереднені 24 проби стають одним середнім за 2 години
288 усереднених зразків стають одним середнім за 1 день

Давайте спробуємо бути сумісними з MRTG, який зберігає приблизно таку кількість даних:

600 5-хвилинних зразків: 2 дні та 2 години
600 30-хвилинних зразків: 12.5 днів
600 2-годинних зразків: 50 днів
732 1-денні зразки: 732 дні

Ці діапазони додаються, тому загальна кількість даних, що зберігаються в базі даних, є
приблизно 797 днів. RRDtool зберігає дані по-різному, він не запускає "тижневик"
архів, де зупинився «добовий» архів. Для обох архівів будуть найновіші дані
близько "зараз", і тому нам потрібно буде зберігати більше даних, ніж MRTG!

Нам знадобляться:

600 зразків за 5 хвилин (2 дні і 2 години)
700 зразків за 30 хвилин (2 дні і 2 години плюс 12.5 днів)
775 зразків за 2 години (більше + 50 днів)
797 зразків за 1 день (вище + 732 дні, округлено до 797)

rrdtool створити myrouter.rrd \
DS:вхід:ЛІЧИЛЬНИК:600:U:U \
DS:вихід:ЛІЧИЛЬНИК:600:U:U \
RRA:СРЕДНЄ:0.5:1:600 \
RRA:СРЕДНЄ:0.5:6:700 \
RRA:СРЕДНЄ:0.5:24:775 \
RRA:СРЕДНЄ:0.5:288:797 \
RRA:MAX:0.5:1:600 ​​\
RRA:MAX:0.5:6:700 ​​\
RRA:MAX:0.5:24:775 ​​\
RRA:MAX:0.5:288:797

Наступне, що потрібно зробити, це зібрати дані та зберегти їх. Ось приклад. Це написано
частково в псевдокоді, вам доведеться з’ясувати, що саме робити у вашій ОС
це працює.

поки це не кінець Всесвіту
do
отримати результат
спільнота маршрутизаторів snmpget 2.2.1.10.4
у змінну $in
отримати результат
спільнота маршрутизаторів snmpget 2.2.1.16.4
у змінну $out

rrdtool оновлення myrouter.rrd N:$in:$out

почекайте 5 хвилин
зроблений

Потім, зібравши дані за день, спробуйте створити зображення за допомогою:

rrdtool графік myrouter-day.png --start -86400 \
DEF:inoctets=myrouter.rrd:input:AVERAGE \
DEF:outoctets=myrouter.rrd:output:СРЕДНЄ \
AREA:inoctets#00FF00:"У затори" \
LINE1:outoctets#0000FF:"Вихідний трафік"

Це має створити картину з трафіком за один день. Один день становить 24 години з 60
хвилини 60 секунд: 24*60*60=86400, ми починаємо зараз мінус 86400 секунд. Ми визначаємо
(з DEF) іноктети та ауттети як середні значення з бази даних myrouter.rrd
і намалюйте область для «вхідного» трафіку та лінію для «вихідного».

Перегляньте зображення та продовжуйте записувати дані ще кілька днів. Якщо хочете, можете спробувати
приклади з тестової бази даних і подивіться, чи можете ви отримати різні варіанти та розрахунки
працювати.

Пропозиція: відображати в байтах на секунду та в бітах на секунду. Зробіть графіку Ethernet
червоніють, якщо вони перевищують чотири мегабіти на секунду.

Консолідація Функції
Кілька абзаців назад я згадував про можливість збереження максимальних значень замість
середні значення. Давайте розглянемо це трохи докладніше.

Згадайте все про швидкість автомобіля. Припустимо, що ми їхали зі швидкістю 144 км/год протягом 5
хвилин, а потім були зупинені поліцією на 25 хвилин. Наприкінці лекції ми
візьме наш ноутбук і створить і перегляне зображення, взяте з бази даних. Якщо ми подивимося на
другий RRA, який ми створили, ми мали б середнє значення з 6 зразків. Зразки
виміряно буде 144+0+0+0+0+0=144, поділено на 30 хвилин, виправлено помилку на
1000, переведені в км/год, з результатом 24 км/год. Я б все одно отримав квиток, але ні
за перевищення швидкості :)

Очевидно, що в цьому випадку не варто дивитися на середні. У деяких випадках вони зручні.
Якщо ви хочете знати, скільки кілометрів ви пройшли, усереднене зображення буде правильним
один, щоб подивитися. З іншого боку, для швидкості, з якою ми їхали, максимальні числа
побачене набагато цікавіше. Пізніше ми побачимо більше типів.

Те саме для даних. Якщо ви хочете дізнатися суму, подивіться на середні значення. Якщо хочеш
щоб дізнатися ставку, подивіться на максимальну. Згодом вони будуть все більше розлучатися. в
остання база даних, яку ми створили, є два архіви, які зберігають дані на день. The
архів, який зберігає середні значення, покаже низькі числа, архів, який показує максимуми, матиме
вищі числа.

Для моєї машини це було б в середньому за день 96/24=4 км/год (оскільки я подорожую приблизно 94
кілометрів на день) протягом робочих днів і максимум 120 км/год (моя максимальна швидкість, яку я
досягати щодня).

Велика різниця. Не дивіться на другий графік, щоб оцінити відстані, які я долаю
і не дивіться на перший графік, щоб оцінити мою швидкість. Це спрацює, якщо зразки є
близько один до одного, як і через п’ять хвилин, але не якщо ви в середньому.

У деякі дні я довго катаюся. Якщо я поїду по Європі і подорожую 12 годин, то
перший графік підніметься приблизно до 60 км/год. Другий показуватиме 180 км/год. Це означає що
Я пройшов відстань 60 км/год за 24 години = 1440 км. Я зробив це з більшою швидкістю і
максимум близько 180 км/год. Однак це, мабуть, не означає, що я їхав 8 годин
з постійною швидкістю 180 км/год!

Це реальний приклад: йти за течією через Німеччину (швидко!) і зупинятися кілька разів
газ і кава. Повільно їдьте через Австрію та Нідерланди. Будьте обережні в
гори та села. Якщо ви подивитеся на графіки, створені за п’ятихвилинку
в середньому ви отримаєте зовсім іншу картину. Ви побачите ті самі значення на
середній і максимальний графіки (за умови, що я вимірював кожні 300 секунд). Ви б змогли
подивіться, коли я зупинився, коли я був на вищій передачі, коли я їхав по швидких шосе тощо
детальність даних набагато вища, тому ви можете побачити більше. Однак для цього потрібно 12
вибірок на годину, або 288 значень на день, тому це буде багато даних за більш тривалий період
часу. Тому ми усереднюємо його, зрештою, до одного значення на день. З цього єдиного значення ми
не можна побачити багато деталей, звичайно.

Переконайтеся, що ви зрозуміли кілька останніх абзаців. Немає значення лише в рядку та a
Кілька осей, вам потрібно знати, що вони означають, і інтерпретувати дані належним чином.
Це справедливо для всіх даних.

Найбільша помилка, яку ви можете зробити, - це використовувати зібрані дані для чогось, чим вони не є
підходить для. Вам було б краще, якби у вас взагалі не було графіка.

Давайте огляд що ви зараз Повинен Знати
Ви знаєте, як створити базу даних і можете помістити в неї дані. Ви можете отримати цифри
знову створивши зображення, виконайте обчислення з даними з бази даних і перегляньте результат
замість вихідних даних. Ви знаєте про різницю між середніми і максимальними, і
коли використовувати який (або принаймні у вас має бути уявлення).

RRDtool може зробити більше, ніж те, що ми навчилися досі. Перш ніж продовжити з рештою
цього документа, я рекомендую вам перечитати з самого початку та спробувати деякі зміни до
приклади. Переконайтеся, що ви повністю все розумієте. Це буде коштувати зусиль і допомоги
Ви не тільки з рештою цього підручника, але й у своєму щоденному моніторингу
після того, як ви прочитаєте цей вступ.

дані Source типи
Гаразд, ти хочеш продовжити. Ласкаво просимо назад і готуйтеся до збільшення швидкості
приклади та пояснення.

Ви знаєте, що для того, щоб переглянути лічильник з часом, потрібно взяти два числа і
поділіть їх різницю між минулим часом. Це має сенс для прикладів
Я дав тобі, але є інші можливості. Наприклад, я можу отримати
температура від мого маршрутизатора в трьох місцях, а саме на вході, так званій гарячій точці і
вихлоп. Ці значення не є лічильниками. Якщо я візьму різницю двох зразків
і поділіть це на 300 секунд, я б запитав зміну температури за секунду.
Сподіваюся, це нуль! Якщо ні, то комп'ютерний кабінет, ймовірно, горить :)

Отже, що ми можемо зробити? Ми можемо наказати RRDtool зберігати значення, які ми вимірюємо, безпосередньо як вони
є (це не зовсім вірно, але досить близько). Зроблені нами графіки виглядатимуть дуже добре
краще, вони будуть показувати досить постійне значення. Я знаю, коли маршрутизатор зайнятий (він працює
-> споживає більше електроенергії -> виробляє більше тепла -> температура підвищується). я знаю
коли двері залишені відкритими (приміщення з кондиціонером) -> тепле повітря від решти
будівлі впадає в комп'ютерну кімнату -> температура на вході підвищується). І т. д
Тип даних, який ми використовуємо під час створення бази даних, раніше був counter, тепер ми маємо інший
тип даних і, отже, іншу назву для нього. Він називається GAUGE. Таких даних більше
типи:

- ЛІЧИК ми вже знаємо цю
- GAUGE ми щойно дізналися про це
- ВИВОДИТИ
- АБСОЛЮТНО

Два додаткових типи – ПОХІДНІ та АБСОЛЮТНІ. Абсолютний можна використовувати як лічильник з
одна відмінність: RRDtool припускає, що лічильник скидається під час зчитування. Тобто: його дельта є
відомий без обчислень RRDtool, тоді як RRDtool потрібно обчислити його для лічильника
типу. Приклад: наш перший приклад (12345, 12357, 12363, 12363) буде читатися: невідомо, 12, 6,
0. Решта розрахунків залишаються незмінними. Інший, derive, схожий на лічильник.
На відміну від лічильника, він також може зменшуватися, щоб мати від’ємну дельту. Знову ж таки, решта
розрахунки залишаються такими ж.

Давайте спробуємо їх усі:

rrdtool create all.rrd --start 978300900 \
DS:a:ЛІЧИЛЬНИК:600:U:U \
DS:b:GAUGE:600:U:U \
DS:c:DERIVE:600:U:U \
DS:d:ABSOLUTE:600:U:U \
RRA:СРЕДНЄ:0.5:1:10
rrdtool оновити all.rrd \
978301200:300:1:600:300 \
978301500:600:3:1200:600 \
978301800:900:5:1800:900 \
978302100:1200:3:2400:1200 \
978302400:1500:1:2400:1500 \
978302700:1800:2:1800:1800 \
978303000:2100:4:0:2100 \
978303300:2400:6:600:2400 \
978303600:2700:4:600:2700 \
978303900:3000:2:1200:3000
rrdtool graph all1.png -s 978300600 -e 978304200 -h 400 \
DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:"Line A" \
DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:"Line B" \
DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Рядок C" \
DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Line D"

RRDtool при Мікроскоп
· Рядок A є типом COUNTER, тому він повинен постійно збільшуватися, а RRDtool повинен обчислювати
відмінності. Крім того, RRDtool потрібно розділити різницю на кількість часу
втратив чинність. Це має закінчитися як пряма лінія в 1 (дельти 300, час
300).

· Лінія B має тип GAUGE. Це «реальні» значення, тому вони повинні відповідати тому, що ми вкладаємо: a
свого роду хвиля.

· Рядок C має тип DERIVE. Це має бути лічильник, який може зменшуватися. Він робить це між
2400 і 0, з 1800 між ними.

· Рядок D має тип АБСОЛЮТНИЙ. Це як лічильник, але він працює на значеннях без них
обчислення різниці. Цифри однакові, і, як ви бачите (сподіваюся), це
має інший результат.

Це означає такі значення, починаючи з 23:10 і закінчуючи о 00:10 наступного
день (де "u" означає невідомий/незображений):

- Лінія A: uu 1 1 1 1 1 1 1 1 1 u
- Рядок B: u 1 3 5 3 1 2 4 6 4 2 u
- Рядок C: uu 2 2 2 0 -2 -6 2 0 2 u
- Рядок D: u 1 2 3 4 5 6 7 8 9 10 u

Якщо ваш PNG показує все це, ви знаєте, що правильно ввели дані, RRDtool
виконуваний файл працює належним чином, ваш глядач не обманює вас, і ви успішно ввійшли
2000 рік :)

Ви можете спробувати той самий приклад чотири рази, кожен раз лише з одним із рядків.

Давайте ще раз переглянемо дані:

· Рядок A: 300,600,900 300 XNUMX і так далі. Дельта лічильника є константою XNUMX, як і час
дельта. Число, поділене на себе, завжди дорівнює 1 (крім ділення на нуль, який є
невизначений/незаконний).

Чому перший пункт невідомий? Ми знаємо, що ми вносимо в базу даних,
так? Правда, але у нас не було значення для обчислення дельти, тому ми не знаємо
з чого ми починали. Було б неправильно вважати, що ми почали з нуля, тому ми цього не робимо!

· Рядок B: нема чого розраховувати. Цифри такі, як вони є.

· Рядок C: Знову ж таки, початкове значення невідоме. Та ж історія, що і для рядка A. In
у цьому випадку дельти не є постійними, отже, лінія теж не є. Якби ми поставили
ті самі числа в базі даних, що й для рядка A, ми отримали б те саме
лінія. На відміну від лічильника типів, цей тип може зменшуватися, і я сподіваюся, що пізніше я покажу вам, чому
це робить різницю.

· Рядок D: тут пристрій обчислює дельти. Тому ми ДІСНО знаємо першу дельту і
це накреслено. У нас був той самий вхід, що й у рядку A, але значення цього введення таке
різна, і, отже, лінія відрізняється. У цьому випадку дельти з кожним разом збільшуються
з 300. Дельта часу залишається постійною 300 і, отже, поділ на два
дає зростаючі значення.

Counter Обгортки
Можна показати ще кілька основ. Деякі важливі параметри ще не розглянуті
ще не дивився на лічильники. Спочатку лічильник обгортання: у нашому автомобілі ми помічаємо, що
лічильник показує 999987. Ми їдемо 20 км, і лічильник має підійти до 1000007. На жаль,
на нашому лічильнику всього шість цифр, тому він дійсно показує 000007. Якщо ми побудуємо це
на типі DERIVE це означало б, що лічильник повернувся назад на 999980 км. Це не було, і
для цього має бути якийсь захист. Цей захист доступний лише для типу
COUNTER, який у будь-якому випадку слід використовувати для такого типу лічильників. Як це працює? Тип
лічильник ніколи не повинен зменшуватися, і тому RRDtool повинен вважати, що він загорнутий, якщо це так
зменшити! Якщо дельта негативна, це можна компенсувати, додавши максимум
значення лічильника + 1. Для нашого автомобіля це буде:

Дельта = 7 - 999987 = -999980 (замість 1000007-999987=20)

Реальна дельта = -999980 + 999999 + 1 = 20

На момент написання цього документа RRDtool знає про лічильники, які є або 32-бітними, або
Розмір 64 біта. Ці лічильники можуть обробляти такі різні значення:

- 32 біти: 0 .. 4294967295
- 64 біти: 0 .. 18446744073709551615

Якщо ці числа здаються вам дивними, ви можете переглянути їх у шістнадцятковому вигляді:

- 32 біти: 0 .. FFFFFFFF
- 64 біти: 0 .. FFFFFFFFFFFFFFFF

RRDtool обробляє обидва лічильники однаково. Якщо трапиться переповнення і дельта буде
негативний, RRDtool спочатку додає максимум маленького лічильника + 1 до дельти. Якщо дельта
все ще негативний, це мав бути великий прилавок, який загорнутий. Додайте максимум можливого
значення великого лічильника + 1 і відніміть помилково додане мале значення.

У цьому є ризик: припустимо, що великий лічильник загорнутий, додавши величезну дельту, це
Теоретично може статися, що додавання меншого значення зробить дельту додатною.
У цьому малоймовірному випадку результати будуть невірними. Збільшення має бути приблизно таким же
висока, як максимальне значення лічильника, щоб це сталося, то, швидше за все, у вас буде
також кілька інших проблем, і ця конкретна проблема навіть не вартує
думати про. Хоча я все-таки ввів приклад, так що ви можете судити самі.

У наступному розділі наведено кілька числових прикладів контр-обгортань. Спробуйте зробити
обчислюйте самі або просто повірте мені, якщо ваш калькулятор не справляється з числами :)

Номери виправлення:

- 32 біти: (4294967295 + 1) = 4294967296
- 64 біти: (18446744073709551615 + 1)
- корекція1 = 18446744069414584320

До: 4294967200
Збільшення: 100
Має стати: 4294967300
Але насправді так: 4
Дельта: -4294967196
Виправлення 1: -4294967196 + 4294967296 = 100

До: 18446744073709551000
Збільшення: 800
Має стати: 18446744073709551800
Але насправді так: 184
Дельта: -18446744073709550816
Виправлення 1: -18446744073709550816
+ 4294967296 = -18446744069414583520
Виправлення 2: -18446744069414583520
+ 18446744069414584320 = 800

Раніше: 18446744073709551615 (максимальне значення)
Збільшення: 18446744069414584320 ( абсурдне збільшення, мінімум для
Повинен стати: 36893488143124135935 цей приклад працює )
Але насправді так: 18446744069414584319
Дельта: -4294967296
Виправлення 1: -4294967296 + 4294967296 = 0
(не негативний -> без виправлення2)

Раніше: 18446744073709551615 (максимальне значення)
Збільшення: 18446744069414584319 (на одне збільшення менше)
Має стати: 36893488143124135934
Але насправді так: 18446744069414584318
Дельта: -4294967297
Виправлення 1: -4294967297 + 4294967296 = -1
Виправлення 2: -1 + 18446744069414584320 = 18446744069414584319

Як ви можете бачити з останніх двох прикладів, вам потрібні дивні числа, щоб RRDtool вийшов з ладу
(звісно, ​​за умови відсутності помилок), тому цього не повинно статися. Однак SNMP чи що завгодно
метод, який ви виберете для збору даних, також може іноді повідомляти неправильні цифри. ми
не може запобігти всім помилкам, але є деякі речі, які ми можемо зробити. Інструмент RRD «створити»
команда приймає для цього два спеціальні параметри. Вони визначають мінімально і максимально дозволений
цінності. До цього часу ми використовували «U», що означає «невідомий». Якщо ви надаєте значення для одного або обох
з них, і якщо RRDtool отримує точки даних, які виходять за межі цих обмежень, він ігнорує
ці цінності. Для термометра в градусах Цельсія абсолютний мінімум трохи нижче
-273. Для мого маршрутизатора я можу припустити, що цей мінімум набагато вищий, тому я б встановив його на 10,
де як максимальну температуру я б встановив 80. Будь-яка вище, і пристрій би вимкнувся
порядку.

Для швидкості мого автомобіля я б ніколи не очікував негативних чисел, а також не очікував би
швидкість вище 230. Щось інше, і, мабуть, була помилка. Пам'ятайте:
навпаки, невірно, якщо числа пройшли цю перевірку, це не означає, що вони пройшли
правильно. Завжди оцінюйте графік із здоровою дозою підозри, якщо він здається вам дивним.

дані Перестановка
Одна важлива особливість RRDtool поки не пояснена: це практично неможливо
збирати дані та передавати їх у RRDtool з точними інтервалами. Тому RRDtool виконує інтерполяцію
дані, тому вони зберігаються через точні проміжки часу. Якщо ви не знаєте, що це означає і як
це працює, тоді вам потрібна допомога:

Припустимо, що лічильник збільшується рівно на один за кожну секунду. Ви хочете виміряти його в 300
секундні інтервали. Ви повинні отримати значення, які розташовані рівно на 300 один від одного. Однак через
різних обставин ви запізнилися на кілька секунд і інтервал 303. Дельта буде
також бути 303 у цьому випадку. Очевидно, RRDtool не повинен ставити 303 в базу даних і make
Ви вважаєте, що лічильник збільшився на 303 за 300 секунд. Ось де RRDtool
інтерполює: він змінює значення 303 так, ніби воно було збережено раніше, і воно буде
бути 300 за 300 секунд. Наступного разу ви опинитесь точно в потрібний час. Це означає, що
поточний інтервал становить 297 секунд, а також лічильник збільшився на 297. Знову RRDtool
інтерполює та зберігає 300 як має бути.

в РРД насправді

час+000: 0 delta="U" час+000: 0 delta="U"
час+300: 300 дельта=300 час+300: 300 дельта=300
час+600: 600 дельта=300 час+603: 603 дельта=303
час+900: 900 дельта=300 час+900: 900 дельта=297

Створимо дві однакові бази даних. Я вибрав часовий діапазон від 920805000 до 920805900 як
це дуже добре поєднується з прикладами чисел.

rrdtool створити seconds1.rrd \
--початок 920804700 \
DS:секунди:COUNTER:600:U:U \
RRA:СРЕДНЄ:0.5:1:24

Зробіть копію

для Unix: cp seconds1.rrd seconds2.rrd
для Dos: копіювати seconds1.rrd seconds2.rrd
для vms: звідки я знаю :)

Введіть деякі дані

оновлення rrdtool seconds1.rrd \
920805000:000 920805300:300 920805600:600 920805900:900
оновлення rrdtool seconds2.rrd \
920805000:000 920805300:300 920805603:603 920805900:900

Створити вихід

rrdtool графік seconds1.png \
--початок 920804700 --кінець 920806200 \
--висота 200 \
--верхня межа 1.05 --нижня межа 0.95 --жорстка \
DEF:seconds=seconds1.rrd:seconds:AVERAGE \
CDEF:невідомо=секунди,UN \
LINE2:секунди#0000FF \
ОБЛАСТЬ:невідома#FF0000
rrdtool графік seconds2.png \
--початок 920804700 --кінець 920806200 \
--висота 200 \
--верхня межа 1.05 --нижня межа 0.95 --жорстка \
DEF:seconds=seconds2.rrd:seconds:AVERAGE \
CDEF:невідомо=секунди,UN \
LINE2:секунди#0000FF \
ОБЛАСТЬ:невідома#FF0000

Перегляньте обидва зображення разом (додайте їх у свій файл index.html) та порівняйте. Обидва графіки
має відображати те саме, незважаючи на різний вхід.

КОРОБКА


Настав час завершити цей підручник. Ми розповіли про всі основи, щоб ви могли це зробити
працювати з RRDtool і читати доступну додаткову документацію. Є ще багато
щоб дізнатися про RRDtool, і ви знайдете все більше і більше застосувань для цього пакета. Ти можеш
легко створювати графіки, використовуючи лише надані приклади та використовуючи тільки RRDtool. Ви також можете
використовуйте один із доступних інтерфейсів RRDtool.

СПИСОК АДРЕСАТІВ


Не забудьте підписатися на список розсилки RRDtool. Навіть якщо ви не відповідаєте на листи
які приходять, це допомагає як вам, так і іншим користувачам. Багато з того, що я знаю
про MRTG (і, отже, про RRDtool) я дізнався, просто читаючи список без
розміщення до нього. Мені не потрібно було задавати основні питання, оскільки на них є відповіді в FAQ
(прочитайте!) і в різних листах інших користувачів. З тисячами користувачів по всьому світу
У світі завжди знайдуться люди, які задають питання, на які ви зможете відповісти, бо читаєте
цю та іншу документацію, а вони не зробили.

Використовуйте rrdtutorial онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad