<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>https://kuutorvaja.eenet.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drakan</id>
	<title>Kuutõrvaja - Kasutaja kaastöö [et]</title>
	<link rel="self" type="application/atom+xml" href="https://kuutorvaja.eenet.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drakan"/>
	<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php/Eri:Kaast%C3%B6%C3%B6/Drakan"/>
	<updated>2026-06-03T22:09:49Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29110</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29110"/>
		<updated>2015-03-30T13:16:12Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Näited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua. MySQL päring:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi päring:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi alternatiivne päring:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kui koduleht on jaotatud klassidesse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysql.php&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysqli.php&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29109</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29109"/>
		<updated>2015-03-30T09:06:49Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Näited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring &lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Kui koduleht on jaotatud klassidesse&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysql.php&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysqli.php&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29108</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29108"/>
		<updated>2015-03-30T09:06:17Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Näited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring &lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Kui koduleht on jaotatud klassidesse&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame ekraanil meetodi kirjelduse&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysql.php&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysqli.php&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29107</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29107"/>
		<updated>2015-03-30T09:04:23Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Lingid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysql.php&lt;br /&gt;
&lt;br /&gt;
http://php.net/manual/en/book.mysqli.php&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29100</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29100"/>
		<updated>2015-03-27T12:48:46Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* MySQL ja MySQLi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29099</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29099"/>
		<updated>2015-03-27T12:37:43Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* MySQL ja MySQLi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29098</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29098"/>
		<updated>2015-03-27T12:37:23Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* MySQL ja MySQLi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
    MySQL               MySQLi&lt;br /&gt;
  --------------------------------------&lt;br /&gt;
  mysql_connect       mysqli_connect&lt;br /&gt;
  mysql_error         mysqli_error&lt;br /&gt;
  mysql_query         mysqli_query&lt;br /&gt;
  mysql_fetch_array   mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row     mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc   mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result   mysqli_free_result&lt;br /&gt;
  mysql_close         mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29097</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29097"/>
		<updated>2015-03-27T12:35:58Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Lingid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  mysql_connect -&amp;gt; mysqli_connect&lt;br /&gt;
  mysql_error -&amp;gt; mysqli_error&lt;br /&gt;
  mysql_query -&amp;gt; mysqli_query&lt;br /&gt;
  mysql_fetch_array -&amp;gt; mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row -&amp;gt; mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc -&amp;gt; mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result -&amp;gt; mysqli_free_result&lt;br /&gt;
  mysql_close -&amp;gt; mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;br /&gt;
&lt;br /&gt;
http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29096</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29096"/>
		<updated>2015-03-27T12:35:05Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Näited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  mysql_connect -&amp;gt; mysqli_connect&lt;br /&gt;
  mysql_error -&amp;gt; mysqli_error&lt;br /&gt;
  mysql_query -&amp;gt; mysqli_query&lt;br /&gt;
  mysql_fetch_array -&amp;gt; mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row -&amp;gt; mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc -&amp;gt; mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result -&amp;gt; mysqli_free_result&lt;br /&gt;
  mysql_close -&amp;gt; mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29095</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29095"/>
		<updated>2015-03-27T12:34:32Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Näited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  mysql_connect -&amp;gt; mysqli_connect&lt;br /&gt;
  mysql_error -&amp;gt; mysqli_error&lt;br /&gt;
  mysql_query -&amp;gt; mysqli_query&lt;br /&gt;
  mysql_fetch_array -&amp;gt; mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row -&amp;gt; mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc -&amp;gt; mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result -&amp;gt; mysqli_free_result&lt;br /&gt;
  mysql_close -&amp;gt; mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MySQLi näide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// dbc_mysqli.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Toome read ekraanile&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29094</id>
		<title>PHP MySQL asemel MySQLi</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=PHP_MySQL_asemel_MySQLi&amp;diff=29094"/>
		<updated>2015-03-27T11:22:33Z</updated>

		<summary type="html">&lt;p&gt;Drakan: Uus lehekülg: &amp;#039;=MySQL ja MySQLi=  MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MySQL ja MySQLi=&lt;br /&gt;
&lt;br /&gt;
MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.&lt;br /&gt;
&lt;br /&gt;
MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav (???) nii algajatele kui edasijõudnutele.&lt;br /&gt;
&lt;br /&gt;
Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL&#039;ile. Näiteks:&lt;br /&gt;
&lt;br /&gt;
  mysql_connect -&amp;gt; mysqli_connect&lt;br /&gt;
  mysql_error -&amp;gt; mysqli_error&lt;br /&gt;
  mysql_query -&amp;gt; mysqli_query&lt;br /&gt;
  mysql_fetch_array -&amp;gt; mysqli_fetch_array&lt;br /&gt;
  mysql_fetch_row -&amp;gt; mysqli_fetch_row&lt;br /&gt;
  mysql_fetch_assoc -&amp;gt; mysqli_fetch_assoc&lt;br /&gt;
  mysql_free_result -&amp;gt; mysqli_free_result&lt;br /&gt;
  mysql_close -&amp;gt; mysqli_close&lt;br /&gt;
&lt;br /&gt;
=Näited=&lt;br /&gt;
&lt;br /&gt;
Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kerge muuta oleks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// conf.database.php&lt;br /&gt;
&lt;br /&gt;
$db_server = &amp;quot;localhost&amp;quot;; // server, kus asub andmebaas&lt;br /&gt;
$db_user   = &amp;quot;kasutaja&amp;quot;;  // kasutajatunnus&lt;br /&gt;
$db_pass   = &amp;quot;parool&amp;quot;;    // parool&lt;br /&gt;
$db_base   = &amp;quot;andmebaas&amp;quot;; // andmebaas&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// dbc_mysql.php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mysql_select_db(&amp;quot;$db_base&amp;quot;, $db) or die( &amp;quot;Andmebaasi &amp;lt;b&amp;gt;&amp;quot; . $db_base . &amp;quot;&amp;lt;/b&amp;gt; ei leitud!&amp;quot; ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset(&#039;utf8&#039;, $db); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include_once( &amp;quot;conf.database.php&amp;quot; ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad&lt;br /&gt;
&lt;br /&gt;
$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)&lt;br /&gt;
&lt;br /&gt;
// Kui andmebaasiühendus ebaõnnestub&lt;br /&gt;
if ( !$db ) {&lt;br /&gt;
  die( &amp;quot;Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!&amp;quot; ); // Väljastame veateate ja lõpetame töö&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect&#039;i&lt;br /&gt;
&lt;br /&gt;
mysqli_set_charset( $db, &#039;utf8&#039; ); // määrame SQL andmete tähestikuks UTF-8&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// MySQL näide&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQL päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysql.php&amp;quot;; // Loome SQL ühenduse&lt;br /&gt;
&lt;br /&gt;
$query = mysql_query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;; // Kuvame andmed ekraanile&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi näide&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi päring --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;dbc_mysqli.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = mysqli_query( $db, &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while ( $row = mysqli_fetch_assoc( $query ) ) {&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// MySQLi alternatiivne päring&lt;br /&gt;
echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
  echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class leht {&lt;br /&gt;
&lt;br /&gt;
  // Klassi konstruktor&lt;br /&gt;
  function leht() {&lt;br /&gt;
    global $db; // Teeme $db muutuja globaalseks&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;&amp;lt;br/&amp;gt; --- MySQLi alternatiivse päringu näide klassi seest --- &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;query( &amp;quot;select id, word from words limit 0, 10&amp;quot; ); // Teeme päringu&lt;br /&gt;
&lt;br /&gt;
    while($row = $query-&amp;gt;fetch_assoc()){&lt;br /&gt;
      echo $row[&#039;id&#039;] . &amp;quot; - &amp;quot; . $row[&#039;word&#039;] . &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new leht();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Kõige lihtsam lahendus?=&lt;br /&gt;
&lt;br /&gt;
See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja). &lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
&lt;br /&gt;
http://et.wikipedia.org/wiki/MySQL&lt;br /&gt;
http://codular.com/php-mysqli&lt;br /&gt;
http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=29027</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=29027"/>
		<updated>2015-01-30T15:32:43Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Komponendid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Mis on LCD=&lt;br /&gt;
&lt;br /&gt;
LCD (Liquid Crystal Display) on vedelkristall tehnoloogial põhinev lameekraan, mida kasutatakse väga laiaulatuslikult kõiksugustes seadmetes. LCD ei riku silmi, erinevalt CRT ekraanist (mis tegelikult joonistab kaadreid rea ja veeru kaupa, 60-120 kaadrit sekundis, tekitades sedasi virvendust). LCD ekraanil uuendatakse ekraanil vaid neid punkte (pikseleid), mis mingi aja jooksul muutusid. Selleks nimetatakse reageerimisaega, mida mõõdetakse millisekundites.&lt;br /&gt;
&lt;br /&gt;
=Komponendid=&lt;br /&gt;
&lt;br /&gt;
Monitoril on vähemalt 2 mikroskeemi. Üks neist on loogika skeem, mille külge ühendatakse VGA, DVI, HDMI või DisplayPort kaabel. Teine on toiteplokk/taustavalguse voolu muundur.  Mõnel juhul on taustvalguse osa toiteplokist eraldi.&lt;br /&gt;
&lt;br /&gt;
==Toiteplokk==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_power.jpg|thumb|Toiteplokk/inverter]]&lt;br /&gt;
&lt;br /&gt;
Muundab vahelduvvoolu AC (120V või 240V) alalisvooluks.&lt;br /&gt;
&lt;br /&gt;
Tavaliselt tekitatakse kaks väljundpinget: 5vdc loogika skeemile ja 12~20vdc (12vdc kuni 17&amp;quot;, 16~24vdc 18~24&amp;quot; ekraanile).&lt;br /&gt;
&lt;br /&gt;
Toiteplokk on monitoril alati voolu all (kui pole kasutusel sellist lülitit, mis katkestab voolu toiteplokile), mistõttu on see töös 24/7 sõltumata monitori kasutusest. Sedasi jõuavad kõiksugused voolu kõikumised toiteplokini.&lt;br /&gt;
&lt;br /&gt;
==Taustavalguse inverter==&lt;br /&gt;
Toiteplokist tulev 12~24vdc muundatakse kõrgsageduslikuks vahelduvvooluks AC, et juhtida inverteri trahvosid, mis omakorda toidavad CCFL (Cold Cathode Fluorescent Lamp) lampe. Käivituseks antakse pinget 1500~2000v, hiljem 500~800v.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_logic.jpg|thumb|Loogika skeem]]&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saab signaali läbi analoogi (VGA) või digitaalse (DVI, HDMI) liidese, töötleb seda ning edastab info LCD T-CON (Timing Controller) paneelile, mis reeglina asub LCD ekraani tagumisel küljel.&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saadab inverterile kahte signaali: taustavalgus sees/väljas ja taustavalguse tugevus. Kui arvuti videokaart infot ei edasta, siis läheb monitor unerežiimi.&lt;br /&gt;
&lt;br /&gt;
Sisendvool (5vdc või 12vdc) muundatakse 3.3v ja 1.8vdc peale protsessori toitmiseks. Skeem edastab ka 5vd või 12vdc T-CON paneelile, mis näitab valget pilti juhul kui vool sinnani ei jõua.&lt;br /&gt;
&lt;br /&gt;
=Probleemid=&lt;br /&gt;
&lt;br /&gt;
==Üldised probleemid==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_1157_pirn.jpg|100px|thumb|1157 pirn]]&lt;br /&gt;
&lt;br /&gt;
* Katkised kaitsmed&lt;br /&gt;
* Katkised elektrolüüdid (lekkivad/punnis (nii pealt kui altpoolt)). Elektrolüüt võib välimiselt paista normis, kuid tal võib olla kõrgem ESR (Equivalent Series Resistance) e. sisetakistus. Alalisvoolu DC filtri kondensaator peaks kindlasti olema madala ESR väärtusega (low ESR); tavalised kondensaatori ei pruugi sedasi kaua kesta.&lt;br /&gt;
* Kehvasti joodetud komponendid&lt;br /&gt;
* Ülekuumenenud komponendid&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Ühenda monitor vooluvõrku, kuid ära nupust käima pane (sedasi taustvalguse inverterit ei tööta). Tuleks kontrollida toiteploki alaldatud 5vdc ja 12~24vdc pingeid. Selleks sobivad mitmesugused pirnid: 6V 1A (6vatti) pirn 5vdc jaoks, auto suunatuli (12v 8w/26w) 12~18vdc jaoks (või kaks suunatule pirni 19~24vdc jaoks). Pinged peaksid ka koormuse all ühtlased olema. Toiteplokk lülitab end välja, kui miski tarbib liialt palju voolu. Olgu selleks siis viga temas endas, loogika- või inverteri skeemi lühises.&lt;br /&gt;
&lt;br /&gt;
==Inverter==&lt;br /&gt;
&lt;br /&gt;
Inverter suudab tuvastada vigu ja end välja lülitada, kui lambid pole järgi ühendatud või need mingil põhjusel algpinge rakendamise peale ei käivitunud. Samuti lülitab ta end välja, kui lambid tarbivad liialt palju voolu (vananedes hakkab lamp tasapisi rohkem voolu tarbima). Inverter saab kaks signaali loogika skeemilt: taustavalgus sees/väljas ja taustavalguse tugevus.&lt;br /&gt;
&lt;br /&gt;
Tüüpilised probleemid:&lt;br /&gt;
* Katkised kondensaatorid&lt;br /&gt;
* #resonant caps (in the inverter output circuits),&lt;br /&gt;
* katkised transistorid,&lt;br /&gt;
* lühises trahvo mähis.&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Inverteri testimiseks oleks vaja varulampe.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
Loogikaskeemi parandamiseks on vaja tootja poolset dokumentatsiooni.&lt;br /&gt;
&lt;br /&gt;
==CCFL ja Inverteri testimine==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_lampide_juhtmed.jpg|thumb|Lampide juhtmed]]&lt;br /&gt;
&lt;br /&gt;
Kui monitori sisselülitamisel on ekraanil kasvõi korraks näha taustvalgust, siis ühenda kõik lampide juhtmed (2 või 4, olenevalt mudelist) lahti ja proovi esimest lampi teise pesas. Kui lamp korraks süttib, siis proovi kolmandas pesas jne. Kui lamp ei käivitunud, proovi teist lampi. Sedasi saad välistada mittetöötava lambi või vigase inverteri skeemi. Kui ükski lamp ei käivitu üheski pesas, on viga tõenäoliselt inverteris, toteplokis või loogika skeemis, mis ei anna monitori käivitamiseks luba.&lt;br /&gt;
&lt;br /&gt;
=Pildid=&lt;br /&gt;
&lt;br /&gt;
Punnis elektrolüüt&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_cap.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Surnud T-CON paneel, katkine kaitse - ainult helendav ekraan&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_T-CON.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T-CON paneeli kaitse F101&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_T-CON_F101.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inverteri kaitse, F1 ja F2&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_inverter_F1_F2.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Katkine lamp (tumedad otsad, kõrbenud/kehv jootmine)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_lamp.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vigane LCD paneel (vertikaalsed jooned)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defektiga pilt vigase T-CON paneeli tõttu&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD_T-CON.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
http://www.fixya.com/support/r6150077-basic_lcd_monitors_troubleshooting&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28213</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28213"/>
		<updated>2014-02-11T15:28:47Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Üldised probleemid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Mis on LCD=&lt;br /&gt;
&lt;br /&gt;
LCD (Liquid Crystal Display) on vedelkristall tehnoloogial põhinev lameekraan, mida kasutatakse väga laiaulatuslikult kõiksugustes seadmetes. LCD ei riku silmi, erinevalt CRT ekraanist (mis tegelikult joonistab kaadreid rea ja veeru kaupa, 60-120 kaadrit sekundis, tekitades sedasi virvendust). LCD ekraanil uuendatakse ekraanil vaid neid punkte (pikseleid), mis mingi aja jooksul muutusid. Selleks nimetatakse reageerimisaega, mida mõõdetakse millisekundites.&lt;br /&gt;
&lt;br /&gt;
=Komponendid=&lt;br /&gt;
&lt;br /&gt;
Monitoril on vähemalt 2 mikroskeemi. Üks neist on loogika skeem, mille külge ühendatakse VGA, DVI või HDMI kaabel. Teine on toiteplokk/taustavalguse voolu muundur.  Mõnel juhul on taustvalguse osa toiteplokist eraldi.&lt;br /&gt;
&lt;br /&gt;
==Toiteplokk==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_power.jpg|thumb|Toiteplokk/inverter]]&lt;br /&gt;
&lt;br /&gt;
Muundab vahelduvvoolu AC (120V või 240V) alalisvooluks.&lt;br /&gt;
&lt;br /&gt;
Tavaliselt tekitatakse kaks väljundpinget: 5vdc loogika skeemile ja 12~20vdc (12vdc kuni 17&amp;quot;, 16~24vdc 18~24&amp;quot; ekraanile).&lt;br /&gt;
&lt;br /&gt;
Toiteplokk on monitoril alati voolu all (kui pole kasutusel sellist lülitit, mis katkestab voolu toiteplokile), mistõttu on see töös 24/7 sõltumata monitori kasutusest. Sedasi jõuavad kõiksugused voolu kõikumised toiteplokini.&lt;br /&gt;
&lt;br /&gt;
==Taustavalguse inverter==&lt;br /&gt;
Toiteplokist tulev 12~24vdc muundatakse kõrgsageduslikuks vahelduvvooluks AC, et juhtida inverteri trahvosid, mis omakorda toidavad CCFL (Cold Cathode Fluorescent Lamp) lampe. Käivituseks antakse pinget 1500~2000v, hiljem 500~800v.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_logic.jpg|thumb|Loogika skeem]]&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saab signaali läbi analoogi (VGA) või digitaalse (DVI, HDMI) liidese, töötleb seda ning edastab info LCD T-CON (Timing Controller) paneelile, mis reeglina asub LCD ekraani tagumisel küljel.&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saadab inverterile kahte signaali: taustavalgus sees/väljas ja taustavalguse tugevus. Kui arvuti videokaart infot ei edasta, siis läheb monitor unerežiimi.&lt;br /&gt;
&lt;br /&gt;
Sisendvool (5vdc või 12vdc) muundatakse 3.3v ja 1.8vdc peale protsessori toitmiseks. Skeem edastab ka 5vd või 12vdc T-CON paneelile, mis näitab valget pilti juhul kui vool sinnani ei jõua.&lt;br /&gt;
&lt;br /&gt;
=Probleemid=&lt;br /&gt;
&lt;br /&gt;
==Üldised probleemid==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_1157_pirn.jpg|100px|thumb|1157 pirn]]&lt;br /&gt;
&lt;br /&gt;
* Katkised kaitsmed&lt;br /&gt;
* Katkised elektrolüüdid (lekkivad/punnis (nii pealt kui altpoolt)). Elektrolüüt võib välimiselt paista normis, kuid tal võib olla kõrgem ESR (Equivalent Series Resistance) e. sisetakistus. Alalisvoolu DC filtri kondensaator peaks kindlasti olema madala ESR väärtusega (low ESR); tavalised kondensaatori ei pruugi sedasi kaua kesta.&lt;br /&gt;
* Kehvasti joodetud komponendid&lt;br /&gt;
* Ülekuumenenud komponendid&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Ühenda monitor vooluvõrku, kuid ära nupust käima pane (sedasi taustvalguse inverterit ei tööta). Tuleks kontrollida toiteploki alaldatud 5vdc ja 12~24vdc pingeid. Selleks sobivad mitmesugused pirnid: 6V 1A (6vatti) pirn 5vdc jaoks, auto suunatuli (12v 8w/26w) 12~18vdc jaoks (või kaks suunatule pirni 19~24vdc jaoks). Pinged peaksid ka koormuse all ühtlased olema. Toiteplokk lülitab end välja, kui miski tarbib liialt palju voolu. Olgu selleks siis viga temas endas, loogika- või inverteri skeemi lühises.&lt;br /&gt;
&lt;br /&gt;
==Inverter==&lt;br /&gt;
&lt;br /&gt;
Inverter suudab tuvastada vigu ja end välja lülitada, kui lambid pole järgi ühendatud või need mingil põhjusel algpinge rakendamise peale ei käivitunud. Samuti lülitab ta end välja, kui lambid tarbivad liialt palju voolu (vananedes hakkab lamp tasapisi rohkem voolu tarbima). Inverter saab kaks signaali loogika skeemilt: taustavalgus sees/väljas ja taustavalguse tugevus.&lt;br /&gt;
&lt;br /&gt;
Tüüpilised probleemid:&lt;br /&gt;
* Katkised kondensaatorid&lt;br /&gt;
* #resonant caps (in the inverter output circuits),&lt;br /&gt;
* katkised transistorid,&lt;br /&gt;
* lühises trahvo mähis.&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Inverteri testimiseks oleks vaja varulampe.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
Loogikaskeemi parandamiseks on vaja tootja poolset dokumentatsiooni.&lt;br /&gt;
&lt;br /&gt;
==CCFL ja Inverteri testimine==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_lampide_juhtmed.jpg|thumb|Lampide juhtmed]]&lt;br /&gt;
&lt;br /&gt;
Kui monitori sisselülitamisel on ekraanil kasvõi korraks näha taustvalgust, siis ühenda kõik lampide juhtmed (2 või 4, olenevalt mudelist) lahti ja proovi esimest lampi teise pesas. Kui lamp korraks süttib, siis proovi kolmandas pesas jne. Kui lamp ei käivitunud, proovi teist lampi. Sedasi saad välistada mittetöötava lambi või vigase inverteri skeemi. Kui ükski lamp ei käivitu üheski pesas, on viga tõenäoliselt inverteris, toteplokis või loogika skeemis, mis ei anna monitori käivitamiseks luba.&lt;br /&gt;
&lt;br /&gt;
=Pildid=&lt;br /&gt;
&lt;br /&gt;
Punnis elektrolüüt&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_cap.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Surnud T-CON paneel, katkine kaitse - ainult helendav ekraan&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_T-CON.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T-CON paneeli kaitse F101&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_T-CON_F101.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inverteri kaitse, F1 ja F2&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_inverter_F1_F2.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Katkine lamp (tumedad otsad, kõrbenud/kehv jootmine)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_lamp.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vigane LCD paneel (vertikaalsed jooned)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defektiga pilt vigase T-CON paneeli tõttu&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD_T-CON.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
http://www.fixya.com/support/r6150077-basic_lcd_monitors_troubleshooting&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28212</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28212"/>
		<updated>2014-02-11T15:28:05Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Üldised probleemid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Mis on LCD=&lt;br /&gt;
&lt;br /&gt;
LCD (Liquid Crystal Display) on vedelkristall tehnoloogial põhinev lameekraan, mida kasutatakse väga laiaulatuslikult kõiksugustes seadmetes. LCD ei riku silmi, erinevalt CRT ekraanist (mis tegelikult joonistab kaadreid rea ja veeru kaupa, 60-120 kaadrit sekundis, tekitades sedasi virvendust). LCD ekraanil uuendatakse ekraanil vaid neid punkte (pikseleid), mis mingi aja jooksul muutusid. Selleks nimetatakse reageerimisaega, mida mõõdetakse millisekundites.&lt;br /&gt;
&lt;br /&gt;
=Komponendid=&lt;br /&gt;
&lt;br /&gt;
Monitoril on vähemalt 2 mikroskeemi. Üks neist on loogika skeem, mille külge ühendatakse VGA, DVI või HDMI kaabel. Teine on toiteplokk/taustavalguse voolu muundur.  Mõnel juhul on taustvalguse osa toiteplokist eraldi.&lt;br /&gt;
&lt;br /&gt;
==Toiteplokk==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_power.jpg|thumb|Toiteplokk/inverter]]&lt;br /&gt;
&lt;br /&gt;
Muundab vahelduvvoolu AC (120V või 240V) alalisvooluks.&lt;br /&gt;
&lt;br /&gt;
Tavaliselt tekitatakse kaks väljundpinget: 5vdc loogika skeemile ja 12~20vdc (12vdc kuni 17&amp;quot;, 16~24vdc 18~24&amp;quot; ekraanile).&lt;br /&gt;
&lt;br /&gt;
Toiteplokk on monitoril alati voolu all (kui pole kasutusel sellist lülitit, mis katkestab voolu toiteplokile), mistõttu on see töös 24/7 sõltumata monitori kasutusest. Sedasi jõuavad kõiksugused voolu kõikumised toiteplokini.&lt;br /&gt;
&lt;br /&gt;
==Taustavalguse inverter==&lt;br /&gt;
Toiteplokist tulev 12~24vdc muundatakse kõrgsageduslikuks vahelduvvooluks AC, et juhtida inverteri trahvosid, mis omakorda toidavad CCFL (Cold Cathode Fluorescent Lamp) lampe. Käivituseks antakse pinget 1500~2000v, hiljem 500~800v.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_logic.jpg|thumb|Loogika skeem]]&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saab signaali läbi analoogi (VGA) või digitaalse (DVI, HDMI) liidese, töötleb seda ning edastab info LCD T-CON (Timing Controller) paneelile, mis reeglina asub LCD ekraani tagumisel küljel.&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saadab inverterile kahte signaali: taustavalgus sees/väljas ja taustavalguse tugevus. Kui arvuti videokaart infot ei edasta, siis läheb monitor unerežiimi.&lt;br /&gt;
&lt;br /&gt;
Sisendvool (5vdc või 12vdc) muundatakse 3.3v ja 1.8vdc peale protsessori toitmiseks. Skeem edastab ka 5vd või 12vdc T-CON paneelile, mis näitab valget pilti juhul kui vool sinnani ei jõua.&lt;br /&gt;
&lt;br /&gt;
=Probleemid=&lt;br /&gt;
&lt;br /&gt;
==Üldised probleemid==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_1157_pirn.jpg|100px|thumb|1157 pirn]]&lt;br /&gt;
&lt;br /&gt;
* Katkised kaitsmed&lt;br /&gt;
* Katkised elektrolüüdid (lekkivad/punnis (nii pealt kui altpoolt)). Elektrolüüt võib välimiselt paista normis, kuid tal võib olla kõrgem ESR (Equivalent Series Resistance) e. sisetakistus. Alalisvoolu DC filtri kondekas peaks kindlasti olema madala ESR väärtusega (low ESR); tavalised kondekad ei pruugi sedasi kaua kesta.&lt;br /&gt;
* Kehvasti joodetud komponendid&lt;br /&gt;
* Ülekuumenenud komponendid&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Ühenda monitor vooluvõrku, kuid ära nupust käima pane (sedasi taustvalguse inverterit ei tööta). Tuleks kontrollida toiteploki alaldatud 5vdc ja 12~24vdc pingeid. Selleks sobivad mitmesugused pirnid: 6V 1A (6vatti) pirn 5vdc jaoks, auto suunatuli (12v 8w/26w) 12~18vdc jaoks (või kaks suunatule pirni 19~24vdc jaoks). Pinged peaksid ka koormuse all ühtlased olema. Toiteplokk lülitab end välja, kui miski tarbib liialt palju voolu. Olgu selleks siis viga temas endas, loogika- või inverteri skeemi lühises.&lt;br /&gt;
&lt;br /&gt;
==Inverter==&lt;br /&gt;
&lt;br /&gt;
Inverter suudab tuvastada vigu ja end välja lülitada, kui lambid pole järgi ühendatud või need mingil põhjusel algpinge rakendamise peale ei käivitunud. Samuti lülitab ta end välja, kui lambid tarbivad liialt palju voolu (vananedes hakkab lamp tasapisi rohkem voolu tarbima). Inverter saab kaks signaali loogika skeemilt: taustavalgus sees/väljas ja taustavalguse tugevus.&lt;br /&gt;
&lt;br /&gt;
Tüüpilised probleemid:&lt;br /&gt;
* Katkised kondensaatorid&lt;br /&gt;
* #resonant caps (in the inverter output circuits),&lt;br /&gt;
* katkised transistorid,&lt;br /&gt;
* lühises trahvo mähis.&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Inverteri testimiseks oleks vaja varulampe.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
Loogikaskeemi parandamiseks on vaja tootja poolset dokumentatsiooni.&lt;br /&gt;
&lt;br /&gt;
==CCFL ja Inverteri testimine==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_lampide_juhtmed.jpg|thumb|Lampide juhtmed]]&lt;br /&gt;
&lt;br /&gt;
Kui monitori sisselülitamisel on ekraanil kasvõi korraks näha taustvalgust, siis ühenda kõik lampide juhtmed (2 või 4, olenevalt mudelist) lahti ja proovi esimest lampi teise pesas. Kui lamp korraks süttib, siis proovi kolmandas pesas jne. Kui lamp ei käivitunud, proovi teist lampi. Sedasi saad välistada mittetöötava lambi või vigase inverteri skeemi. Kui ükski lamp ei käivitu üheski pesas, on viga tõenäoliselt inverteris, toteplokis või loogika skeemis, mis ei anna monitori käivitamiseks luba.&lt;br /&gt;
&lt;br /&gt;
=Pildid=&lt;br /&gt;
&lt;br /&gt;
Punnis elektrolüüt&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_cap.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Surnud T-CON paneel, katkine kaitse - ainult helendav ekraan&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_T-CON.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T-CON paneeli kaitse F101&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_T-CON_F101.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inverteri kaitse, F1 ja F2&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_inverter_F1_F2.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Katkine lamp (tumedad otsad, kõrbenud/kehv jootmine)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_lamp.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vigane LCD paneel (vertikaalsed jooned)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defektiga pilt vigase T-CON paneeli tõttu&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD_T-CON.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
http://www.fixya.com/support/r6150077-basic_lcd_monitors_troubleshooting&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28211</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28211"/>
		<updated>2014-02-11T15:27:38Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Loogika skeem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Mis on LCD=&lt;br /&gt;
&lt;br /&gt;
LCD (Liquid Crystal Display) on vedelkristall tehnoloogial põhinev lameekraan, mida kasutatakse väga laiaulatuslikult kõiksugustes seadmetes. LCD ei riku silmi, erinevalt CRT ekraanist (mis tegelikult joonistab kaadreid rea ja veeru kaupa, 60-120 kaadrit sekundis, tekitades sedasi virvendust). LCD ekraanil uuendatakse ekraanil vaid neid punkte (pikseleid), mis mingi aja jooksul muutusid. Selleks nimetatakse reageerimisaega, mida mõõdetakse millisekundites.&lt;br /&gt;
&lt;br /&gt;
=Komponendid=&lt;br /&gt;
&lt;br /&gt;
Monitoril on vähemalt 2 mikroskeemi. Üks neist on loogika skeem, mille külge ühendatakse VGA, DVI või HDMI kaabel. Teine on toiteplokk/taustavalguse voolu muundur.  Mõnel juhul on taustvalguse osa toiteplokist eraldi.&lt;br /&gt;
&lt;br /&gt;
==Toiteplokk==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_power.jpg|thumb|Toiteplokk/inverter]]&lt;br /&gt;
&lt;br /&gt;
Muundab vahelduvvoolu AC (120V või 240V) alalisvooluks.&lt;br /&gt;
&lt;br /&gt;
Tavaliselt tekitatakse kaks väljundpinget: 5vdc loogika skeemile ja 12~20vdc (12vdc kuni 17&amp;quot;, 16~24vdc 18~24&amp;quot; ekraanile).&lt;br /&gt;
&lt;br /&gt;
Toiteplokk on monitoril alati voolu all (kui pole kasutusel sellist lülitit, mis katkestab voolu toiteplokile), mistõttu on see töös 24/7 sõltumata monitori kasutusest. Sedasi jõuavad kõiksugused voolu kõikumised toiteplokini.&lt;br /&gt;
&lt;br /&gt;
==Taustavalguse inverter==&lt;br /&gt;
Toiteplokist tulev 12~24vdc muundatakse kõrgsageduslikuks vahelduvvooluks AC, et juhtida inverteri trahvosid, mis omakorda toidavad CCFL (Cold Cathode Fluorescent Lamp) lampe. Käivituseks antakse pinget 1500~2000v, hiljem 500~800v.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_logic.jpg|thumb|Loogika skeem]]&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saab signaali läbi analoogi (VGA) või digitaalse (DVI, HDMI) liidese, töötleb seda ning edastab info LCD T-CON (Timing Controller) paneelile, mis reeglina asub LCD ekraani tagumisel küljel.&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saadab inverterile kahte signaali: taustavalgus sees/väljas ja taustavalguse tugevus. Kui arvuti videokaart infot ei edasta, siis läheb monitor unerežiimi.&lt;br /&gt;
&lt;br /&gt;
Sisendvool (5vdc või 12vdc) muundatakse 3.3v ja 1.8vdc peale protsessori toitmiseks. Skeem edastab ka 5vd või 12vdc T-CON paneelile, mis näitab valget pilti juhul kui vool sinnani ei jõua.&lt;br /&gt;
&lt;br /&gt;
=Probleemid=&lt;br /&gt;
&lt;br /&gt;
==Üldised probleemid==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_1157_pirn.jpg|100px|thumb|1157 pirn]]&lt;br /&gt;
&lt;br /&gt;
* Katkised kaitsmed&lt;br /&gt;
* Katkised elektrolüüdid (lekkivad/punnis (nii pealt kui altpoolt)). Elektrolüüt võib välimiselt paista normis, kuid tal võib olla kõrgem ESR (Equivalent Series Resistance) e. sisetakistus). Alalisvoolu DC filtri kondekas peaks kindlasti olema madala ESR väärtusega (low ESR); tavalised kondekad ei pruugi sedasi kaua kesta.&lt;br /&gt;
* Kehvasti joodetud komponendid&lt;br /&gt;
* Ülekuumenenud komponendid&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Ühenda monitor vooluvõrku, kuid ära nupust käima pane (sedasi taustvalguse inverterit ei tööta). Tuleks kontrollida toiteploki alaldatud 5vdc ja 12~24vdc pingeid. Selleks sobivad mitmesugused pirnid: 6V 1A (6vatti) pirn 5vdc jaoks, auto suunatuli (12v 8w/26w) 12~18vdc jaoks (või kaks suunatule pirni 19~24vdc jaoks). Pinged peaksid ka koormuse all ühtlased olema. Toiteplokk lülitab end välja, kui miski tarbib liialt palju voolu. Olgu selleks siis viga temas endas, loogika- või inverteri skeemi lühises.&lt;br /&gt;
&lt;br /&gt;
==Inverter==&lt;br /&gt;
&lt;br /&gt;
Inverter suudab tuvastada vigu ja end välja lülitada, kui lambid pole järgi ühendatud või need mingil põhjusel algpinge rakendamise peale ei käivitunud. Samuti lülitab ta end välja, kui lambid tarbivad liialt palju voolu (vananedes hakkab lamp tasapisi rohkem voolu tarbima). Inverter saab kaks signaali loogika skeemilt: taustavalgus sees/väljas ja taustavalguse tugevus.&lt;br /&gt;
&lt;br /&gt;
Tüüpilised probleemid:&lt;br /&gt;
* Katkised kondensaatorid&lt;br /&gt;
* #resonant caps (in the inverter output circuits),&lt;br /&gt;
* katkised transistorid,&lt;br /&gt;
* lühises trahvo mähis.&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Inverteri testimiseks oleks vaja varulampe.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
Loogikaskeemi parandamiseks on vaja tootja poolset dokumentatsiooni.&lt;br /&gt;
&lt;br /&gt;
==CCFL ja Inverteri testimine==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_lampide_juhtmed.jpg|thumb|Lampide juhtmed]]&lt;br /&gt;
&lt;br /&gt;
Kui monitori sisselülitamisel on ekraanil kasvõi korraks näha taustvalgust, siis ühenda kõik lampide juhtmed (2 või 4, olenevalt mudelist) lahti ja proovi esimest lampi teise pesas. Kui lamp korraks süttib, siis proovi kolmandas pesas jne. Kui lamp ei käivitunud, proovi teist lampi. Sedasi saad välistada mittetöötava lambi või vigase inverteri skeemi. Kui ükski lamp ei käivitu üheski pesas, on viga tõenäoliselt inverteris, toteplokis või loogika skeemis, mis ei anna monitori käivitamiseks luba.&lt;br /&gt;
&lt;br /&gt;
=Pildid=&lt;br /&gt;
&lt;br /&gt;
Punnis elektrolüüt&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_cap.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Surnud T-CON paneel, katkine kaitse - ainult helendav ekraan&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_T-CON.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T-CON paneeli kaitse F101&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_T-CON_F101.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inverteri kaitse, F1 ja F2&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_inverter_F1_F2.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Katkine lamp (tumedad otsad, kõrbenud/kehv jootmine)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_lamp.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vigane LCD paneel (vertikaalsed jooned)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defektiga pilt vigase T-CON paneeli tõttu&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD_T-CON.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
http://www.fixya.com/support/r6150077-basic_lcd_monitors_troubleshooting&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28210</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=LCD&amp;diff=28210"/>
		<updated>2014-02-11T15:18:34Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Komponendid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Mis on LCD=&lt;br /&gt;
&lt;br /&gt;
LCD (Liquid Crystal Display) on vedelkristall tehnoloogial põhinev lameekraan, mida kasutatakse väga laiaulatuslikult kõiksugustes seadmetes. LCD ei riku silmi, erinevalt CRT ekraanist (mis tegelikult joonistab kaadreid rea ja veeru kaupa, 60-120 kaadrit sekundis, tekitades sedasi virvendust). LCD ekraanil uuendatakse ekraanil vaid neid punkte (pikseleid), mis mingi aja jooksul muutusid. Selleks nimetatakse reageerimisaega, mida mõõdetakse millisekundites.&lt;br /&gt;
&lt;br /&gt;
=Komponendid=&lt;br /&gt;
&lt;br /&gt;
Monitoril on vähemalt 2 mikroskeemi. Üks neist on loogika skeem, mille külge ühendatakse VGA, DVI või HDMI kaabel. Teine on toiteplokk/taustavalguse voolu muundur.  Mõnel juhul on taustvalguse osa toiteplokist eraldi.&lt;br /&gt;
&lt;br /&gt;
==Toiteplokk==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_power.jpg|thumb|Toiteplokk/inverter]]&lt;br /&gt;
&lt;br /&gt;
Muundab vahelduvvoolu AC (120V või 240V) alalisvooluks.&lt;br /&gt;
&lt;br /&gt;
Tavaliselt tekitatakse kaks väljundpinget: 5vdc loogika skeemile ja 12~20vdc (12vdc kuni 17&amp;quot;, 16~24vdc 18~24&amp;quot; ekraanile).&lt;br /&gt;
&lt;br /&gt;
Toiteplokk on monitoril alati voolu all (kui pole kasutusel sellist lülitit, mis katkestab voolu toiteplokile), mistõttu on see töös 24/7 sõltumata monitori kasutusest. Sedasi jõuavad kõiksugused voolu kõikumised toiteplokini.&lt;br /&gt;
&lt;br /&gt;
==Taustavalguse inverter==&lt;br /&gt;
Toiteplokist tulev 12~24vdc muundatakse kõrgsageduslikuks vahelduvvooluks AC, et juhtida inverteri trahvosid, mis omakorda toidavad CCFL (Cold Cathode Fluorescent Lamp) lampe. Käivituseks antakse pinget 1500~2000v, hiljem 500~800v.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_logic.jpg|thumb|Loogika skeem]]&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saab signaali VGA (analoog) või DVI (digitaalne) liidesest,  töötleb seda ja edastab info LCD T-CON (Timing Controller) paneelile, mis asub LCD ekraani taga.&lt;br /&gt;
&lt;br /&gt;
Loogika skeem saadab inverterile kahte signaali: taustavalgus sees/väljas ja taustavalguse tugevus. Kui PC on väljas, siis monitor läheb unerežiimi.&lt;br /&gt;
&lt;br /&gt;
Sisendvool (5vdc või 12vdc) muundatakse 3.3v ja 1.8vdc peale protsessori toitmiseks. Skeem edastab ka 5vd või 12vdc T-CON paneelile, mis näitab valget pilti kui vool sinnani ei jõua.&lt;br /&gt;
&lt;br /&gt;
=Probleemid=&lt;br /&gt;
&lt;br /&gt;
==Üldised probleemid==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_1157_pirn.jpg|100px|thumb|1157 pirn]]&lt;br /&gt;
&lt;br /&gt;
* Katkised kaitsmed&lt;br /&gt;
* Katkised elektrolüüdid (lekkivad/punnis (nii pealt kui altpoolt)). Elektrolüüt võib välimiselt paista normis, kuid tal võib olla kõrgem ESR (Equivalent Series Resistance) e. sisetakistus). Alalisvoolu DC filtri kondekas peaks kindlasti olema madala ESR väärtusega (low ESR); tavalised kondekad ei pruugi sedasi kaua kesta.&lt;br /&gt;
* Kehvasti joodetud komponendid&lt;br /&gt;
* Ülekuumenenud komponendid&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Ühenda monitor vooluvõrku, kuid ära nupust käima pane (sedasi taustvalguse inverterit ei tööta). Tuleks kontrollida toiteploki alaldatud 5vdc ja 12~24vdc pingeid. Selleks sobivad mitmesugused pirnid: 6V 1A (6vatti) pirn 5vdc jaoks, auto suunatuli (12v 8w/26w) 12~18vdc jaoks (või kaks suunatule pirni 19~24vdc jaoks). Pinged peaksid ka koormuse all ühtlased olema. Toiteplokk lülitab end välja, kui miski tarbib liialt palju voolu. Olgu selleks siis viga temas endas, loogika- või inverteri skeemi lühises.&lt;br /&gt;
&lt;br /&gt;
==Inverter==&lt;br /&gt;
&lt;br /&gt;
Inverter suudab tuvastada vigu ja end välja lülitada, kui lambid pole järgi ühendatud või need mingil põhjusel algpinge rakendamise peale ei käivitunud. Samuti lülitab ta end välja, kui lambid tarbivad liialt palju voolu (vananedes hakkab lamp tasapisi rohkem voolu tarbima). Inverter saab kaks signaali loogika skeemilt: taustavalgus sees/väljas ja taustavalguse tugevus.&lt;br /&gt;
&lt;br /&gt;
Tüüpilised probleemid:&lt;br /&gt;
* Katkised kondensaatorid&lt;br /&gt;
* #resonant caps (in the inverter output circuits),&lt;br /&gt;
* katkised transistorid,&lt;br /&gt;
* lühises trahvo mähis.&lt;br /&gt;
&lt;br /&gt;
Katsetamine:&lt;br /&gt;
&lt;br /&gt;
Inverteri testimiseks oleks vaja varulampe.&lt;br /&gt;
&lt;br /&gt;
==Loogika skeem==&lt;br /&gt;
&lt;br /&gt;
Loogikaskeemi parandamiseks on vaja tootja poolset dokumentatsiooni.&lt;br /&gt;
&lt;br /&gt;
==CCFL ja Inverteri testimine==&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_lampide_juhtmed.jpg|thumb|Lampide juhtmed]]&lt;br /&gt;
&lt;br /&gt;
Kui monitori sisselülitamisel on ekraanil kasvõi korraks näha taustvalgust, siis ühenda kõik lampide juhtmed (2 või 4, olenevalt mudelist) lahti ja proovi esimest lampi teise pesas. Kui lamp korraks süttib, siis proovi kolmandas pesas jne. Kui lamp ei käivitunud, proovi teist lampi. Sedasi saad välistada mittetöötava lambi või vigase inverteri skeemi. Kui ükski lamp ei käivitu üheski pesas, on viga tõenäoliselt inverteris, toteplokis või loogika skeemis, mis ei anna monitori käivitamiseks luba.&lt;br /&gt;
&lt;br /&gt;
=Pildid=&lt;br /&gt;
&lt;br /&gt;
Punnis elektrolüüt&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_cap.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Surnud T-CON paneel, katkine kaitse - ainult helendav ekraan&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_T-CON.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
T-CON paneeli kaitse F101&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_T-CON_F101.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inverteri kaitse, F1 ja F2&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_inverter_F1_F2.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Katkine lamp (tumedad otsad, kõrbenud/kehv jootmine)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_lamp.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vigane LCD paneel (vertikaalsed jooned)&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defektiga pilt vigase T-CON paneeli tõttu&lt;br /&gt;
&lt;br /&gt;
[[Pilt:LCD_bad_LCD_T-CON.jpg‎|400px]]&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
http://www.fixya.com/support/r6150077-basic_lcd_monitors_troubleshooting&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27624</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27624"/>
		<updated>2013-04-23T08:41:22Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andkefailide konvert enne teisele arhidektuurile tõstmist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;300; url=&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andmefailide kohandamine teise arhitektuuri jaoks===&lt;br /&gt;
&lt;br /&gt;
RRDtool&#039;i puhul pole võimalik kasutada samu rrd andmebaase nii 32- kui 64 bitisel arhitektuuril. Seetõttu tuleb need ümber konvertida ja seejärel taastada. &lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik andmebaasid xml formaati järgneva skriptiga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
 name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
  echo $g&lt;br /&gt;
  echo $name&lt;br /&gt;
   rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kopeerime xml failid teise arvutisse ning loome neist uued rrd andmebaasid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
 name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
  echo $g&lt;br /&gt;
  echo $name&lt;br /&gt;
   rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel võime eemaldada kopeeritud xml failid.&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27611</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27611"/>
		<updated>2013-04-22T13:00:30Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andkefailide konvert enne teisele arhidektuurile tõstmist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;300; url=&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
RRDtool&#039;i puhul pole võimalik kasutada samu rrd andmebaase nii 32- kui 64 bitisel arhitektuuril. Seetõttu tuleb need ümber konvertida ja seejärel taastada. &lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik andmebaasid xml formaati järgneva skriptiga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
 name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
  echo $g&lt;br /&gt;
  echo $name&lt;br /&gt;
   rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kopeerime xml failid teise arvutisse ning loome neist uued rrd andmebaasid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
 name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
  echo $g&lt;br /&gt;
  echo $name&lt;br /&gt;
   rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel võime eemaldada kopeeritud xml failid.&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27609</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27609"/>
		<updated>2013-04-22T12:54:53Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;300; url=&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27608</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27608"/>
		<updated>2013-04-22T12:54:38Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;300; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27607</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27607"/>
		<updated>2013-04-22T12:54:07Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27606</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27606"/>
		<updated>2013-04-22T12:53:20Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27605</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27605"/>
		<updated>2013-04-22T12:53:02Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi. Skript get_traffic.sh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis rrd andembaasi asukoha kettal ning võrgukaardi numbri vastavalt serveri konfiguratsioonile. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.1`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.1`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27604</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27604"/>
		<updated>2013-04-22T12:51:00Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Graafikute loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti build_graph.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27603</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27603"/>
		<updated>2013-04-22T12:50:21Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* CRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame vastavad skriptid [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmeid ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27602</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27602"/>
		<updated>2013-04-22T12:42:38Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Last in : $sin&lt;br /&gt;
echo Last out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmete ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27601</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27601"/>
		<updated>2013-04-22T12:42:07Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmefaili loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmete ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27600</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27600"/>
		<updated>2013-04-22T12:41:07Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* CRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Sisestame käsu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
crontab -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ning lisame read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sedasi loetakse andmete ja joonistatakse graafikuid iga viie minuti järel.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27599</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27599"/>
		<updated>2013-04-22T12:38:40Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Graafikute loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;      # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/home/kasutaja/graafikud&amp;quot; # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                  # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/home/kasutaja/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;         # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27598</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27598"/>
		<updated>2013-04-22T12:37:11Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;60; url=&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27597</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27597"/>
		<updated>2013-04-22T11:13:54Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;et&amp;quot; lang=&amp;quot;et&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;RRDtool graph&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    html, body {&lt;br /&gt;
      font-family: verdana, tahoma, arial, helvetica, &amp;quot;trebuchet ms&amp;quot;;&lt;br /&gt;
      font-size: 14px;&lt;br /&gt;
      font-weight: normal;&lt;br /&gt;
      text-decoration: none;&lt;br /&gt;
      color: #000000;&lt;br /&gt;
      height: 100%;&lt;br /&gt;
      background: #333;&lt;br /&gt;
      color: #fff;&lt;br /&gt;
    }&lt;br /&gt;
    #graphs div, #timestamp { text-align: center; padding: 2px; }&lt;br /&gt;
    #timestamp { font-weight: bold; }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt; &lt;br /&gt;
&amp;lt;body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;timestamp&amp;quot;&amp;gt;Loading the date...&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_day&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-p2ev.png&amp;quot; alt=&#039;Day&#039; title=&amp;quot;Day&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_week&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-n2dal.png&amp;quot; alt=&#039;Week&#039; title=&amp;quot;Week&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_month&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-kuu.png&amp;quot; alt=&#039;Month&#039; title=&amp;quot;Month&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;g_year&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;g-aasta.png&amp;quot; alt=&#039;Year&#039; title=&amp;quot;Year&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function set_date() {  &lt;br /&gt;
    // month array for local translation&lt;br /&gt;
    months = [ &amp;quot;Jaanuar&amp;quot;, &amp;quot;Veebruar&amp;quot;, &amp;quot;Märts&amp;quot;, &amp;quot;Aprill&amp;quot;, &amp;quot;Mai&amp;quot;, &amp;quot;Juuni&amp;quot;, &amp;quot;Juuli&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktoober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Detsember&amp;quot; ];&lt;br /&gt;
    &lt;br /&gt;
    d = new Date(); // get date for the string&lt;br /&gt;
    &lt;br /&gt;
    // format hour, minute and second number&lt;br /&gt;
    h = (String(d.getHours()).length == 1 ? &amp;quot;0&amp;quot;+d.getHours() : d.getHours());&lt;br /&gt;
    m = (String(d.getMinutes()).length == 1 ? &amp;quot;0&amp;quot;+d.getMinutes() : d.getMinutes());&lt;br /&gt;
    s = (String(d.getSeconds()).length == 1 ? &amp;quot;0&amp;quot;+d.getSeconds() : d.getSeconds());&lt;br /&gt;
  &lt;br /&gt;
    // set the date str&lt;br /&gt;
    date_str=&lt;br /&gt;
      (&amp;quot;0&amp;quot;+d.getDate()).substr(-2,2)+&amp;quot;-&amp;quot;+(months[d.getMonth()])+&amp;quot;-&amp;quot;+(d.getFullYear())+&amp;quot; &amp;quot;+&lt;br /&gt;
      h+&amp;quot;:&amp;quot;+m+&amp;quot;:&amp;quot;+s;&lt;br /&gt;
    &lt;br /&gt;
    // pollute element with date str&lt;br /&gt;
    document.getElementById(&amp;quot;timestamp&amp;quot;).innerHTML = date_str;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  set_date(); // run date set function&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27596</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27596"/>
		<updated>2013-04-22T10:55:49Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML]] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27595</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27595"/>
		<updated>2013-04-22T10:55:14Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Lingid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;br /&gt;
&lt;br /&gt;
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27594</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27594"/>
		<updated>2013-04-22T10:54:58Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* CRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd [[:Crontab]] tabelisse.&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nii andmete küsimine kui graafikute joonistamine leiab aset iga viie minuti tagant.&lt;br /&gt;
&lt;br /&gt;
===Graafik===&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli graafikut. Siinkohal toome esile ainult päevase graafiku:&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
&lt;br /&gt;
Loome mingi [[:HTML] lehekülje, milles kõik neli graafikut üheskoos.&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27593</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27593"/>
		<updated>2013-04-22T10:50:50Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* CRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Andmete kogumise ja graafikute joonistamise automatiseerimiseks lisame need tööd cron&#039;i.&lt;br /&gt;
&lt;br /&gt;
Graafikute andmete uue&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/get_traffic.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/build_graph.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27592</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27592"/>
		<updated>2013-04-22T10:47:33Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number üks (ifInOctets.1) tähistab antud arvuti konfiguratsioonis välisvõrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27591</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27591"/>
		<updated>2013-04-22T10:46:43Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.2`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.2`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kaks (ifInOctets.2) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool&amp;diff=27590</id>
		<title>RRDtool</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool&amp;diff=27590"/>
		<updated>2013-04-22T10:45:03Z</updated>

		<summary type="html">&lt;p&gt;Drakan: teisaldas lehekülje RRDtool pealkirja RRDtool ja võrgugraafik alla: Teema on algsest pealkirja skoobist laiem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#suuna [[RRDtool ja võrgugraafik]]&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27589</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27589"/>
		<updated>2013-04-22T10:45:03Z</updated>

		<summary type="html">&lt;p&gt;Drakan: teisaldas lehekülje RRDtool pealkirja RRDtool ja võrgugraafik alla: Teema on algsest pealkirja skoobist laiem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27588</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27588"/>
		<updated>2013-04-22T10:43:59Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmefaili loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja &#039;&#039;&#039;DS:out:COUNTER:600:U:U&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27587</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27587"/>
		<updated>2013-04-22T10:43:34Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Graafikute loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud. Konfiguratsiooni osas määra sobivad väärtused.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konfiguratsioon&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool&#039;i asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu graafikud salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas olev sõne&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# Päev&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Nädal&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# Aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27586</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27586"/>
		<updated>2013-04-22T10:40:27Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Graafikute loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konf&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu pildid salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# P2evane&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# N2dalane&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Muudame konfiguratsioonis muutujad sobivaks!&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27585</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27585"/>
		<updated>2013-04-22T10:39:25Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Graafikute loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Paigaldame skripti g.sh, mis loob rrd andmebaasi andmete järgi graafikud&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Konf&lt;br /&gt;
&lt;br /&gt;
rrdtool=&amp;quot;/usr/local/bin/rrdtool&amp;quot;     # rrdtool asukoht kettal (crontab n6uab t2ispikka kaustapud)&lt;br /&gt;
image_path=&amp;quot;/root/rrdtool/graphs&amp;quot;    # kaust, kuhu pildid salvestatakse&lt;br /&gt;
location=&amp;quot;Kurelaane&amp;quot;                 # location @ date =&amp;gt; graafiku alumises servas&lt;br /&gt;
database=&amp;quot;/root/rrdtool/liiklus.rrd&amp;quot; # rrd faili asukoht kettal&lt;br /&gt;
vertical_label=&#039;Traffic kB/s&#039;        # vertikaalne pealkiri&lt;br /&gt;
&lt;br /&gt;
# P2evane&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-p2ev.png -a PNG -s -24h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --x-grid HOUR:1:HOUR:4:MINUTE:120:0:%R \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# N2dalane&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-n2dal.png -a PNG -s -168h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# kuu&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-kuu.png -a PNG -s -744h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
# aasta&lt;br /&gt;
&lt;br /&gt;
$rrdtool graph $image_path/g-aasta.png -a PNG -s -8760h \&lt;br /&gt;
    -w 800 -h 350 \&lt;br /&gt;
    -A \&lt;br /&gt;
    --vertical-label &amp;quot;$vertical_label&amp;quot; \&lt;br /&gt;
    --font DEFAULT:7: \&lt;br /&gt;
    --color BACK#ffffff \&lt;br /&gt;
    --border 1 \&lt;br /&gt;
    --color SHADEA#f1f1f1 --color SHADEB#f1f1f1 \&lt;br /&gt;
    --watermark &amp;quot;$location @ `date`&amp;quot; \&lt;br /&gt;
    --slope-mode \&lt;br /&gt;
    &amp;quot;DEF:in_def=$database:in:AVERAGE&amp;quot; \&lt;br /&gt;
    &amp;quot;DEF:out_def=$database:out:AVERAGE&amp;quot; \&lt;br /&gt;
    &#039;CDEF:in=in_def,UN,0,in_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:out=out_def,UN,0,out_def,IF&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:600000#999999&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#83afe5&#039; \&lt;br /&gt;
    &#039;AREA:outg#e6ce97&#039; \&lt;br /&gt;
    &#039;LINE1:in#225ea8&#039; \&lt;br /&gt;
    &#039;LINE1:outg#bf812d&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:CURRENT download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:CURRENT upload\: %3.2lf kB/s\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:AVERAGE download\: %3.2lf kB/s&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:AVERAGE upload\: %3.2lf kB/s\j&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27583</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27583"/>
		<updated>2013-04-22T08:29:43Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemus järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27582</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27582"/>
		<updated>2013-04-22T08:29:25Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine, kus &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; on väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27581</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27581"/>
		<updated>2013-04-22T07:33:11Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Antud juhul on &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart.&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike andmete nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27580</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27580"/>
		<updated>2013-04-22T07:32:49Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v 1 -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | grep ifDescr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Antud juhul on &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart.&lt;br /&gt;
&lt;br /&gt;
Kõikide võimalike andmete nimetuste ja väärtuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27579</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27579"/>
		<updated>2013-04-22T07:27:52Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmete uuendamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (või mingi teenuse, nagu näiteks SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt serveri konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Antud juhul on &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart.&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27578</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27578"/>
		<updated>2013-04-22T07:27:02Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmefaili loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; ja DS:out:COUNTER:600:U:U&lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039; ja &#039;out&#039;, mis on COUNTER tüüpi, andmepunkt iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Antud juhul on &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart.&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27577</id>
		<title>RRDtool ja võrgugraafik</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=RRDtool_ja_v%C3%B5rgugraafik&amp;diff=27577"/>
		<updated>2013-04-22T07:25:49Z</updated>

		<summary type="html">&lt;p&gt;Drakan: /* Andmefaili loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sissjuhatus===&lt;br /&gt;
&lt;br /&gt;
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks:  võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.&lt;br /&gt;
&lt;br /&gt;
===Install===&lt;br /&gt;
&lt;br /&gt;
Paigaldame serverisse &#039;&#039;&#039;SNMP&#039;&#039;&#039; teenuse. Täpsemalt on selle paigaldamisest juttu palas [[:net-snmp]].&lt;br /&gt;
&lt;br /&gt;
Paigaldame ka rakenduse &#039;&#039;&#039;RRDtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmefaili loomine===&lt;br /&gt;
&lt;br /&gt;
Kõige keerulisem osa RRDtooli juures on andmebaasi loomine, mille sees andmeid hoitakse. Järgmised parameetrid tuleb enne andmebaasi loomist välja selgitada:&lt;br /&gt;
 1. kui tihti andmeid lisatakse? [--step X] (samm on vaikimisi 300 sekundit)&lt;br /&gt;
 2. mitut erinevat andmejada andmebaasis hoitakse?&lt;br /&gt;
 3. kui pika aja kohta andmeid hoitakse?&lt;br /&gt;
&lt;br /&gt;
Loome võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu kui aasta jaoks.&lt;br /&gt;
&lt;br /&gt;
Käivitamie järgmise käsu:&lt;br /&gt;
&lt;br /&gt;
 rrdtool create liiklus.rrd \&lt;br /&gt;
   --step 300               \&lt;br /&gt;
   DS:in:COUNTER:600:U:U    \&lt;br /&gt;
   DS:out:COUNTER:600:U:U   \&lt;br /&gt;
   RRA:AVERAGE:0.5:1:288    \&lt;br /&gt;
   RRA:AVERAGE:0.5:6:336    \&lt;br /&gt;
   RRA:AVERAGE:0.5:24:372   \&lt;br /&gt;
   RRA:AVERAGE:0.5:288:365  \&lt;br /&gt;
   RRA:MAX:0.5:1:288        \&lt;br /&gt;
   RRA:MAX:0.5:6:336        \&lt;br /&gt;
   RRA:MAX:0.5:24:372       \&lt;br /&gt;
   RRA:MAX:0.5:288:365      \&lt;br /&gt;
&lt;br /&gt;
Selle tulemusel tekib anmebaasifail nimega &#039;&#039;&#039;liiklus.rrd&#039;&#039;&#039;. Nüüd natuke lähemalt, mida me siin tegime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DS:in:COUNTER:600:U:U&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Sedasi tekitatakse baasi andmejada nimega &#039;in&#039;, mis on COUNTER tüüpi, tekitab andmepunkti iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U). Kui on teada minimaalne või maksimaalne väärtus, võib selle loomulikult ka baasi loomisel paika panna. Selle näite puhul jätame selle aga kujule Unknown (U).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:1:288&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 288 andmeühikut!&lt;br /&gt;
 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit&lt;br /&gt;
 86400 sekundit / 60 =&amp;gt; 1440 minutit&lt;br /&gt;
 1440 minutit / 60 =&amp;gt; 24 tundi&lt;br /&gt;
 24 tundi / 24 =&amp;gt; 1 ööpäev&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:6:336&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit&lt;br /&gt;
 604800 sekundit / 60 =&amp;gt; 10080 minutit&lt;br /&gt;
 10080 minutit / 60 =&amp;gt; 168 tundi&lt;br /&gt;
 168 tundi / 24 =&amp;gt; 7 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:24:372&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 336 andmeühikut!&lt;br /&gt;
 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit&lt;br /&gt;
 2678400 sekundit / 60 =&amp;gt; 44640 minutit&lt;br /&gt;
 44640 minutit / 60 =&amp;gt; 744 tundi&lt;br /&gt;
 744 tundi / 24 =&amp;gt; 31 ööpäeva&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RRA:AVERAGE:0.5:288:365&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 365 andmeühikut!&lt;br /&gt;
 288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit&lt;br /&gt;
 31536000 sekundit / 60 =&amp;gt; 525600 minutit&lt;br /&gt;
 525600 minutit / 60 =&amp;gt; 8760 tundi&lt;br /&gt;
 8760 tundi / 24 =&amp;gt; 365 ööpäeva&lt;br /&gt;
&lt;br /&gt;
Sarnaselt eelnevale (AVERAGE e. keskmine) on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).&lt;br /&gt;
&lt;br /&gt;
===Andmete uuendamine===&lt;br /&gt;
&lt;br /&gt;
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (SNMP) käest andmeid ning salvestab need andmebaasi.&lt;br /&gt;
&lt;br /&gt;
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt konfiguratsioonile parajaks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# sisenevad bitid&lt;br /&gt;
sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
&lt;br /&gt;
# väljjuvad bitid&lt;br /&gt;
sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
 &lt;br /&gt;
# väljastame kontrolliks siseneva ja väljuva liikluse numbrid&lt;br /&gt;
echo Snmp in : $sin&lt;br /&gt;
echo Snmp out: $sout&lt;br /&gt;
 &lt;br /&gt;
# uuendame infoga liiklus.rrd faili. viitame rrdupdate käsule läbi täispika kaustapuu!&lt;br /&gt;
/usr/local/bin/rrdupdate /home/kasutaja/rrdtool/liiklus.rrd N:$sin:$sout&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pööra tähelepanu ridadele &#039;&#039;&#039;sin&#039;&#039;&#039; ja &#039;&#039;&#039;sout&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 sin=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifInOctets.3`&lt;br /&gt;
 sout=`/usr/local/bin/snmpget -v2c -c &amp;lt;parool&amp;gt; -Oqv localhost IF-MIB::ifOutOctets.3`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number kolm (ifInOctets.3) tähistab antud arvuti konfiguratsioonis võrgukaardi numbrit. Oma serveri parameetrite leidmiseks sisesta käsk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 snmpwalk -v 1 -c &amp;lt;parool&amp;gt; localhost | more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antud serveri konfiguratsioonile vastavalt oli tulemuseks järgmine:&lt;br /&gt;
&lt;br /&gt;
 IF-MIB::ifDescr.1 = STRING: fxp0&lt;br /&gt;
 IF-MIB::ifDescr.2 = STRING: fxp1&lt;br /&gt;
&lt;br /&gt;
Antud juhul on &#039;&#039;&#039;ifDescr.1&#039;&#039;&#039; väline (fxp0) ja &#039;&#039;&#039;ifDescr.2&#039;&#039;&#039; sisemine (fxp1) võrgukaart.&lt;br /&gt;
&lt;br /&gt;
===Graafikute loomine===&lt;br /&gt;
&lt;br /&gt;
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/rrdtool/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/g-n2dal.png&#039;&#039;&#039; -a PNG -A -w 800 -h 300 -s -168h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutjaa/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF&#039; \&lt;br /&gt;
    &#039;CDEF:backgroundN=background,-1,*&#039; \&lt;br /&gt;
    &#039;AREA:background#F3F3F3&#039; \&lt;br /&gt;
    &#039;AREA:backgroundN#F3F3F3&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
 &lt;br /&gt;
 /usr/local/bin/rrdtool graph &#039;&#039;&#039;/home/kasutaja/public_html/&#039;&#039;&#039;g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=&#039;&#039;&#039;/home/kasutaja/liiklus.rrd&#039;&#039;&#039;:out:AVERAGE&#039; \&lt;br /&gt;
    &#039;CDEF:kbin=in,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:kbout=out,1024,/&#039; \&lt;br /&gt;
    &#039;CDEF:outg=out,-1,/&#039; \&lt;br /&gt;
    &#039;HRULE:262144#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-32768#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-131072#FF0000&#039; \&lt;br /&gt;
    &#039;HRULE:-262144#FF0000&#039; \&lt;br /&gt;
    &#039;AREA:in#91ACF1&#039; \&lt;br /&gt;
    &#039;AREA:outg#FF9090&#039; \&lt;br /&gt;
    &#039;LINE1:in#767676&#039; \&lt;br /&gt;
    &#039;LINE1:outg#767676&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:LAST:Viimati sisse \:   %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:LAST:Viimati välja \:   %3.2lf KB\j&#039; \&lt;br /&gt;
    &#039;GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB&#039; \&lt;br /&gt;
    &#039;GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j&#039;&lt;br /&gt;
&lt;br /&gt;
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v &amp;quot;Liiklus&amp;quot; \&lt;br /&gt;
    &#039;DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE&#039; \&lt;br /&gt;
    &#039;DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE&#039; \&lt;br /&gt;
&lt;br /&gt;
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.&lt;br /&gt;
&lt;br /&gt;
===CRON===&lt;br /&gt;
&lt;br /&gt;
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read &lt;br /&gt;
&lt;br /&gt;
 */1     *       *       *       *       root    /usr/home/kasutaja/liiklus.sh &amp;gt; /dev/null&lt;br /&gt;
 */5     *       *       *       *       root    /usr/home/kasutaja/g.sh &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)&lt;br /&gt;
&lt;br /&gt;
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.&lt;br /&gt;
&lt;br /&gt;
[[Image:g-p2ev.png]]&lt;br /&gt;
&lt;br /&gt;
Loome mingi html faili, mis näitab tekitatud pilte&lt;br /&gt;
&lt;br /&gt;
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/&lt;br /&gt;
&lt;br /&gt;
===Andkefailide konvert enne teisele arhidektuurile tõstmist===&lt;br /&gt;
&lt;br /&gt;
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel&lt;br /&gt;
ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse&lt;br /&gt;
ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema&lt;br /&gt;
kuid hetkel seda ametlikus releasis veel pole.&lt;br /&gt;
&lt;br /&gt;
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/rrd/,&amp;quot;xml&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome&lt;br /&gt;
neist uued rrdfailid.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 for g in $( ls /usr/local/var/rrdfailid ) ; do&lt;br /&gt;
  name=`echo $g | awk &#039;{sub(/xml/,&amp;quot;rrd&amp;quot;);print}&#039;`&lt;br /&gt;
   echo $g&lt;br /&gt;
   echo $name&lt;br /&gt;
    rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Ja seejärel võime eemaldada kopeeritud failid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lingid===&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/RRDtool&lt;br /&gt;
&lt;br /&gt;
http://eccentric.cx/misc/rrdcalc.html&lt;/div&gt;</summary>
		<author><name>Drakan</name></author>
	</entry>
</feed>