RRD => XML => PERL => MYSQL

Тема в разделе "Perl, Python, Ruby", создана пользователем pikasun, 14 ноя 2012.

  1. pikasun

    pikasun Постоялец

    Регистр.:
    23 сен 2009
    Сообщения:
    117
    Симпатии:
    9
    Затея вынуть из RRD файла дампом данные в xml файлик и далее при помощи perl накатить в mysql. У кого-нибудь был такой опыт? Кусок xml файла в коде сдампил из RRD файла.

    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
    <!-- Round Robin Database Dump -->
    <rrd>
    <version>0003</version>
    <step>60</step> <!-- Seconds -->
    <lastupdate>1352515445</lastupdate> <!-- 2012-11-10 06:44:05 MSK -->
     
    <ds>
    <name> traffic_in </name>
    <type> COUNTER </type>
    <minimal_heartbeat>120</minimal_heartbeat>
    <min>0.0000000000e+00</min>
    <max>NaN</max>
     
    <!-- PDP Status -->
    <last_ds>10440442105107</last_ds>
    <value>1.9858265079e+06</value>
    <unknown_sec> 0 </unknown_sec>
    </ds>
     
    <ds>
    <name> traffic_out </name>
    <type> COUNTER </type>
    <minimal_heartbeat>120</minimal_heartbeat>
    <min>0.0000000000e+00</min>
    <max>NaN</max>
     
    <!-- PDP Status -->
    <last_ds>9414680127813</last_ds>
    <value>3.2905092063e+06</value>
    <unknown_sec> 0 </unknown_sec>
    </ds>
    <!-- Round Robin Archives -->
    <rra>
    <cf>AVERAGE</cf>
    <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
     
    <params>
    <xff>5.0000000000e-01</xff>
    </params>
    <cdp_prep>
    <ds>
    <primary_value>4.3530227402e+05</primary_value>
    <secondary_value>NaN</secondary_value>
    <value>NaN</value>
    <unknown_datapoints>0</unknown_datapoints>
    </ds>
    <ds>
    <primary_value>6.6360863413e+05</primary_value>
    <secondary_value>NaN</secondary_value>
    <value>NaN</value>
    <unknown_datapoints>0</unknown_datapoints>
    </ds>
    </cdp_prep>
    <database>
    <!-- 2012-11-09 22:25:00 MSK / 1352485500 --> <row><v>1.0580420441e+06</v><v>9.86309
    <!-- 2012-11-09 22:26:00 MSK / 1352485560 --> <row><v>1.2621199042e+06</v><v>9.94217
    </database>
    </rra>
    </rrd>
    
     
  2. tirrex

    tirrex

    Регистр.:
    9 ноя 2008
    Сообщения:
    213
    Симпатии:
    60
    опыт был)
    скрипт несложный
    обязательно на perl?
     
  3. pikasun

    pikasun Постоялец

    Регистр.:
    23 сен 2009
    Сообщения:
    117
    Симпатии:
    9
    Спасибо, начеркали на Perl уже, но все равно буду признателен за идею.

    Нам нужно было выдрать таймштамп из xml, который зарылся в виде комментариев в читабельный тег.
    Регекспами добили и сформировали файл c нужными строчками вида:

    Код:
    <row>
    <v>1353061080</v>
    <v>1.0580420441e+06</v>
    <v>9.8630978943e+07</v>
    </row>
    Разобрали xml на perl и залили в mysql.
    Сложным было понять, как cacti кладет в rrd информацию по трафику.