Работа с RRDtool
Ще започнем с малко информация относно RRDtool.
RRDtool служи за високопроизводително следене на системата и се използва за написваме на самостоятелни шел скриптове за мониторинг.
RRDtool използва самостоятелна база от данни, която е създадена специално за мониторинг и в нея няма нищo излишно, което от своя страна го прави бърз за обработка на данни.
В случая тестовата машина е с Debian и за да бъде инсалиран пакета трябва да въведете следното:
apt-get install rrdtool
По този начин ще бъде инсталирано всичко необходимо за да извършите това HowTo.
Най-лесно ще разберете как работи rrdtool с пример.
Въведете следната команда:
rrdtool create example.rrd --start 1263753900 --step 300 DS:mem:GAUGE:600:0:671744 RRA:AVERAGE:0.5:12:24 RRA:AVERAGE:0.5:288:31
Което ще създаде файл ( база ) с име example.rrd , започващ от 1263753900 което е тъй наречения unix timestamp ( можете да използвате калкулатора от следния адрес: http://www.unixtimestamp.com/index.php )
По време на обновяване на базата трябва да зададете и „update time“ което е пак в timestamp .
–step 300 – показва, че базата ще очаква нови стойности на всеки 300 секунди ( 5мин )
DS (Data Sorce) е променлива сочеща към параметрите на устройстово (данните) от наблюдението . Нейния синтаксис е:
DS:variable_name:DST:heartbeat:min:max
‘variable_name’ – име под което параметрите (данните) запазват стойностите от „наблюдението“.
- DST (Data Source Type) – може да бъде COUNTER, DERIVE, ABSOLUTE, GAUGE.
- COUNTER се използва, когато се очаква при всяко обновяване да има положителни ( нарастващи ) разлики в стойностите. На пример следене на преминал трафик през даден рутер.
- DERIVE се използва е подобен на COUNTER с тази разлика, че е подходящ и за отрицателни ( намаляващи ) стойности. На пример промяна в дисково пространсто.
- ABSOLUTE – пести скоростта за промяна, но приема, че предната стойност е била равна на 0.
- GAUGE – не запазва промяната, а запазва действителната стойност. Може да се използва за следене на заетата памет.
- heartbeat – задава се колко време ще се изкачва за получаване на стойности. Примерно времето през което трябва да се получават стойности е зададено на 300, но не е било получено такава, тогава ще се изчака още 300 ( 300+300=600) и ако до тогава пак не бъде получена стойност, в базада ще бъде записано UNKNOWN.
Със следващите параметри се задава минимум и максимум на получените стойности. Всяка стойност която не влиза в тези параметри ще бъде записана като UNKNOWN.
Следва задаваме на Round Robin Archive (RRA), който има следния синтаксис:
RRA:CF:xff:step:rows
Където:
- RRA – ключова дума за задаване на архив.
- CF – consolidation function, която може да бъде AVERAGE (средна стойност за периодна на отчитане), MINIMUM (минимална стойност за периода на отчитане), MAXIMUM (максимална стойност за периода на отчитане), и LAST ( последна стойност за периода на отчитане )
- xff – какъв процент от „UNKNOWN“ стойности е разрешен по време на отчитане. Обикновенно се задава 0.5 което означава 50%.
- step – колко стъпки ще се използват за създаването на стойност в архива. Ако стойността е малка, то толкова по-точни ще са данните ( подходящо за постоянно следене), а ако е голяма, тогава се получава осреднена стойност и е подходяща за статистика ( месечна, годишна … ). 288 стъпки се равняват на едно денонощие. (288 стъпки Х 300 секунди /60 ( получава се в минути в минути ) /60 ( за да се получи в часове ) = 24 часа )
- rows – определея колко голяма ще бъде базата ( колко реда ще има ) за запазване на данните. Съответно, когато се изпълнят редовете данните почват да се вартят по алгоритъма на „първи влезнал, първи излязал“.
От написаното горе трябва да сте разбрали, че с RRA:AVERAGE:0.5:12:24 задаваме в базата да се пазят средните стойности от данните на всеки час в 24 реда ( тоес за едно денонощие).
RRA:AVERAGE:0.5:288:31 от своя страна означава – да се запазват средните стойности за един ден в 31 реда, което би служило за месечна статистика.
Една база може да съдържа различни статистически данни – на пример за час, ден, седмица, месец и година чрез задаване на няколко архива (RRA)
Добавяне на данни
Ще разлгедаме няколко вида обновявания.
rrdtool update example.rrd N:1:2
където N значи – сега, а след двете точки са стойностите, които да се добавят.
rrdtool update example.rrd 1263754200:1:2:3:4:5:U:7
където времето се посочва в timestamp , а „U“ означава UNKNOWN стойност.
rrdtool update example.rrd "jan 9 2010 18:20@3210"
Тук виждате как се задава датата и часа , а след @ се поставят стойностите.
Също така можете и по следния начин да задавате стойности:
rrdtool update example.rrd 1263754200:0:0 1263754500:100:200 1263754800:400:300
Преглед на данните от базата данни става чрез командата fetch:
$ rrdtool fetch example.rrd AVERAGE --start "17:00" --end N mem 1263827100: 1.7300000000e+03 1263827400: 7.3000000000e+02 1263827700: 7.3900000000e+03 1263828000: 9.0000000000e+01 1263828300: 1.9000000000e+02 1263828600: 6.9000000000e+02 1263828900: 1.6900000000e+03 1263829200: -nan
A създаването на графика чрез:
rrdtool graph graph.png --start "17:00: --end N DEF:test1=example.rrd:mem:AVERAGE LINE2:test1#FF0000
Което ще създаде файл (картинка) с име graph.png където:
- – start – oт кога да започне извадката
- – end – до кога да е извадката
- DEF – ключова дума
- test1 – място където задавате променлива, която да извикате при чертането
- example.rrd – базата от която да се четата стойностите
- mem – под дова име са запазени стойносттите в базата
- LINE1 / LINE2 – колко дебела да бъде линията на изчертаване
- test1 – извикваме променливата
- #FF0000 – цвят на линията
И ето какво се получи с зададените от мен данни:
Следва продъжение…
Създаване на софтуерен Raid1 масив от диск с вече инсталиран линукс на него + още един Load Balance между две интернет мрежи използвайки pfSense