NAGIOS CX4-480 statistics Plugin

This is my first plug-in for Nagios. For my work we use as a NAS a EMC Clarion Device. So we wanted to get some statistics to see how much we are using this hardware (you have to pay a license for this service).



This is possible in two ways.



  • One is thru the graphical interface (slow… very slow).

  • The second is thru the help of Navicli - a component of the EMC software package that gives you the possibility to do some scripted operations on the Clarion devices.



So we choose the second part and for this check we used 2 machines - an intermediary machine and the Nagios server (this can also be done with one machine but for some security / resource reasons we chose this infrastructure).



First we do a one way ssh trust relation from the Nagios server to the other (called LOG-retainer). So we make sure that the Nagios machine can ssh on to the LOG-retainer without a password. A trap in which I felled is not to do this operation as the Nagios user. NB: If you fail to add the .ssh directory on the Nagios home directory the script will give errors.










After this step is completed it's time to deploy the first part of our monitoring script on LOG-retainer:




#!/bin/bash



if [ -e NaviStats.txt ]; then


rm NaviStats.txt


fi



/opt/Navisphere/bin/naviseccli -User administrator -Password password -Scope 0 -Address 192.168.99.1 analyzer -archiveretrieve -file temp.nar -overwrite y -v



/opt/Navisphere/bin/naviseccli -Address 192.168.99.1 analyzer -archivedump -data temp.nar -out monitor.csv -join -header n -object s -overwrite y



#cat monitor.csv | gawk -F "," ' { printf "%s %s %s %s %s\n", $1,$2,$5,$14,$17 } '



echo "Object Name Poll Time Utilization (%) Total Bandwidth (MB/s) Total Throughput (IO/s)"



NaviStatsA=`cat monitor.csv | gawk -F "," ' {if ($1 == "SP A") printf "%s %s %s %s %s\n", $1,$2,$5,$14,$17 | "tail -n 1" } '`


NaviStatsB=`cat monitor.csv | gawk -F "," ' {if ($1 == "SP B") printf "%s %s %s %s %s\n", $1,$2,$5,$14,$17 | "tail -n 1" } '`


printf "$NaviStatsA\n$NaviStatsB\n" > NaviStats.txt



cat NaviStats.txt


#cat monitor.csv



if [ -e temp.nar ]; then


rm temp.nar


fi




Copy this in to a new file and save it as monitor.sh and set also the execute flag for this file.


Check if it works correctly by executing sh monitor.sh



The output should be something as:




Launching create archive



Attempting to retrieve file from array



Retrieve is complete.



Object Name Poll Time Utilization (%) Total Bandwidth (MB/s) Total Throughput (IO/s)


SP A 05/27/2009 16:26:42 9.448161 37.165939 754.397801


SP B 05/27/2009 16:26:42 11.464435 44.153673 678.160153







Now we are going to the Nagios machine and copy the second script in to the plug-ins directory




#!/bin/bash


version=0.1


case "$1" in


?)


echo -e "\n"


echo "------------------------------------------------------------------------------------------------------------------"


echo " Usage: $0 [Service processor] [Query option] [check interval in minutes] [Warning level] [Critical level]"


echo " -> Service processor = CX4-SPA \ CX4-SPB"


echo " -> Query option ( Utilization (%)\Total Bandwidth (MB/s)\Total Throughput (IO/s))= Util \ TotBa \ TotTh"


echo -e "\n"


echo " Usage Example: $0 CX4-SPB Util 15 50 90"


echo "------------------------------------------------------------------------------------------------------------------"


exit 1


;;


esac



outfile="/tmp/NaviStats.txt"



if [ -e $outfile ]; then


if [ $5 == 0 ] || [ $4 == 0 ]; then


echo " !! Input a warning and/or a critical limit !!"


echo " type $0 ? for more details."


exit 1



else if (( $5 <= $4 )); then


echo " !! Input a critical limit bigger (not equal) then the warning limit !!"


exit 1


fi


fi


else ssh root@LOG-retainer /root/mihai/test_get/monitor.sh > $outfile


fi



if [ -s $outfile ]; then


ssh root@LOG-retainer /root/mihai/test_get/monitor.sh > $outfile


fi



cd /tmp/



filmin=`cat $outfile | grep "SP A" | gawk '{ printf "%s\n", $4}'| gawk -F ":" '{ printf "%01d",$2 }'`


filh=`cat $outfile | grep "SP A" | gawk '{ printf "%s\n", $4}'| gawk -F ":" '{ printf "%01d",$1 }'`



datmin=`date +%M`


datmin=`printf "%1d" $datmin`




dath=`date +%H`


dath=`printf "%1d" $dath`



#echo "Comparing the time:: $filh : $filmin versus $dath : $datmin"



#We are doing the time calculations to check if we need a data refresh from the server


rem=$[$datmin - $filmin]


reh=$[$dath - $filh]



#echo The time difference is $rem minutes and $reh hours \(you selected to check the file on $3 minutes\)



if (( $rem < 0 )); then rem=$[$rem*-1]


fi



if [ $reh != 0 ]; then


# echo $reh !=0 Hour change --->> Querying the service processor for new informations


ssh root@LOG-retainer /root/mihai/test_get/monitor.sh > $outfile


fi



#echo The difference in hours is of $reh



if [ $rem > $3 ]; then


#echo $rem != $3 Minute change --->> Querying the service processor for new informations


ssh root@LOG-retainer /root/mihai/test_get/monitor.sh > $outfile


fi


#echo The difference in minutes is of $rem




#echo Your choice for $1 is $2



#result=""



if [ "$1" == "CX4-SPA" ]; then


case "$2" in


Util) result=`cat $outfile | grep "SP A" | gawk '{ printf "%s\n", $5}'`


label="Utilization"


label1="100"


label2="%"


;;


TotBa) result=`cat $outfile | grep "SP A" | gawk '{ printf "%s\n", $6}'`


label="TotalBandwidth"


label1="4096"


label2="MB"


;;


TotTh) result=`cat $outfile | grep "SP A" | gawk '{ printf "%s\n", $7}'`


label="TotalThroughput"


label1="1000000"


label2="IO"


;;


esac



else



if [ "$1" == "CX4-SPB" ]; then


case "$2" in


Util) result=`cat $outfile | grep "SP B" | gawk '{ printf "%s\n", $5}'`


label="Utilization"


label1="100"


label2="%"


;;


TotBa) result=`cat $outfile | grep "SP B" | gawk '{ printf "%s\n", $6}'`


label="TotalBandwidth"


label1="4096"


label2="MB"


;;


TotTh) result=`cat $outfile | grep "SP B" | gawk '{ printf "%s\n", $7}'`


label="TotalThroughput"


label1="1000000"


label2="IO"


;;


esac



else


echo " Error!! Unknow service processor. Type $0 ? for more details."



fi


fi



#echo Warning $4


#echo Critical $5



tmp=`echo $result | gawk '{ printf "%01d",$1 }'`


if (( $5 <= $tmp )); then echo "CRITICAL, $result $label2|$label=$result$label2;$4;$5;0;$label1"


else if (( $4 <= $tmp )); then echo "WARNING, $result $label2|$label=$result$label2;$4;$5;0;$label1"


else echo "OK, $result $label2|$label=$result$label2;$4;$5;0;$label1"


fi


fi



#echo $result



Modify the rights of the file setting the execute flag.



Check if it works correctly by executing sh script_name




sh check_emc_sp.sh CX4-SPA TotBa 15 50 90


WARNING, 50.172542 MB|TotalBandwidth=50.172542MB;50;90;0;4096





Now we are ready to start to edit the Nagios configuration file.



Create a new file called emc.cfg in which put this configuration:






###############################################################################


# emc.cfg - SAMPLE CONFIG FILE FOR MONITORING the EMC hosts


# Contains all the hosts, services, and


# host group definitions required to monitor the EMC devices.


#


# Last Modified: 17-04-2009.


#


# NOTES: This config file assumes that you are using the sample configuration


# files that get installed with the Nagios quickstart guide.


#


###############################################################################



###############################################################################


###############################################################################


#


# HOST TEMPLATES


#


###############################################################################


###############################################################################



define host{


use generic-host ; Name of host template to use


name emc-host


check_command check-host-alive


max_check_attempts 10


notification_interval 120


notification_period 24x7


notification_options d,u,r


hostgroups 009-emc-all ; Host groups this switch is associated with


contact_groups admins ; Notifications get sent to the admins by default


register 0


}




###############################################################################


###############################################################################


#


# SERVICE DEFINITIONS TEMPLATES


#


###############################################################################


###############################################################################



define service{


use generic-service


name emc-perf


service_description emc-perf


is_volatile 0


check_period 24x7


max_check_attempts 3


normal_check_interval 5


retry_check_interval 1


contact_groups admins


notification_interval 120


notification_period 24x7


notification_options c,r


check_command check_tcp!80


register 0


}



###############################################################################


###############################################################################


#


# HOST DEFINITIONS


#


###############################################################################


###############################################################################



define host{


use emc-host


host_name CX4-SPA


alias CX4-480 Service processor A


address IP address


}



define host{


use emc-host


host_name CX4-SPB


alias CX4-480 Service processor B


address IP address}




###############################################################################


###############################################################################


#


# HOST GROUP DEFINITIONS


#


###############################################################################


###############################################################################



define hostgroup{


hostgroup_name 009-emc-all


alias EMC servers (all)



}



define hostgroup{


hostgroup_name emc-sp-all


alias EMC Service processors (all)



members CX4-SPA,CX4-SPB


}



###############################################################################


###############################################################################


#


# SERVICE DEFINITIONS


#


###############################################################################


###############################################################################




define service{


use emc-perf ; Inherit values from a template


hostgroup_name emc-sp-all


service_description Service processor Utilization


check_command check_emc_sp!Util!5!80!100


}



define service{


use emc-perf ; Inherit values from a template


hostgroup_name emc-sp-all


service_description Total Bandwidth


check_command check_emc_sp!TotBa!5!1500!5000


}



define service{


use emc-perf ; Inherit values from a template


hostgroup_name emc-sp-all


service_description Total Throughput


check_command check_emc_sp!TotTh!5!2000!5000


}








Modify the commands.cfg and add:




define command{


command_name check_emc_sp


command_line $USER1$/check_emc_sp.sh $HOSTNAME$ $ARG1$ $ARG2$ $ARG3$ $ARG4$


}





Now we should be able to check the configuration and restart the Nagios service and see the new hosts with their services up and running. From experience I saw that the update is done very slowly so you should put the check interval of 15-40 minutes rather then 5 minutes. This is the fault of the Navicli client not of the script.



The script needs testing so this is not the final version.


I presume that the same commands are working well (or can be easily modified) also for CX5. We don't have the monitoring license for him so I could not make the tests to see that.



If you have comments / improvements please let me know.









So... These days I had a small problem with my ZA installation - I forgot my security settings password. So I have tried a lot of solutions from the net but only one worked (which came directly from the support team - thanks guys):


Paul: The ONLY way to remove a ZoneAlarm password that is forgotten,


Paul: corrupted, or will not work is to remove the database files associated with


Paul: TrueVector, as follows.


Paul: Please note that this will remove your program permissions and


Paul: Trusted Zone settings (so you may want to make note of them), but re-


Paul: establishing them is a simple process; you will be prompted again for


Paul: program access for all the applications that you use to access the local


Paul: network or Internet.


Paul: First we need to boot into Safe Mode, please follow these steps to do so.


Paul: 1.) Power down your computer.


Paul: 2.) Start the system, and immediately begin tapping the 'F8' key once


Paul: every


Paul: second.


Paul: 3.) You will get a startup menu; choose 'Safe Mode' by using the up/down


Paul: arrow keys.


Paul: 4.) Press Enter.


Paul: Once you have booted into Safe Mode, please continue.


Paul: 1.) If you have Windows XP, click Start -> My Computer. In Vista, go to


Paul: Start -> Computer


Paul: 2.) Double-click your C: drive, probably called local disk c:.


Paul: 3.) Double-click on the Windows or Winnt folder.


Paul: 4.) Double-click the Internet Logs folder.


Paul: 5.) Please delete the following files here:


Paul: - Backup.rdb


Paul: - Iamdb.rdb


Paul: 6.) Close this window, then right-click and empty the recycle bin.


Paul: 7.) Clear the registry entry with the steps below:


Paul: - Go to Start -> Run


Paul: - Type in regedit and press OK


Paul: - On the left find HKEY_LOCAL_MACHINE. Click on the plus next to this and


Paul: make it a minus.


Paul: - Find the SOFTWARE folder; click on the plus and make it a minus


Paul: - Find the Zone Labs folder; click on the plus and make it a minus


Paul: - Find the TrueVector folder; click on the plus and make it a minus


Paul: - Find the Store folder; click on it


Paul: - On the right, locate and left click on the 'upwval' entry


Paul: - Press delete and then say yes to the alert that pops up


Paul: 8.) Close this window, then restart the computer normally. Be sure to


Paul: answer any configuration screens you may receive once your system has


Paul: restarted.


Paul: NOTE - Links to sites other than ZoneAlarm.com are provided for the


Paul: convenience of our users. ZoneAlarm does not provide, and is not


Paul: responsible for, the content users may find on such sites.


And it worked like a charm for me. I mention that my ZA version is 8.0.059.000 (8.0.59.0).

Get your free copy of Paragon Total Defrag 2009, today!


Total Defrag 2009 allows you to:




  • Perform a complete low-level defragmentation that provides almost zero fragmentation level.



  • Speed up and optimize all critical system files and metadata including MFT (Master File Table), directories, paging files, registry hives and others


Other Key Features and Benefits of Total Defrag 2009:




  • Smart Defragmentation Maximize file system performance - perform safe boot-time defragmentation of MFT and paging files, online Directory Consolidation. Moreover, defragment and move critical system files and frequently accessed files together on the external (fast) cylinders of the hard disk.



  • 9 File System Optimization Strategies Use any of 9 optimization strategies on partitions of any size or number, whether your hard drivers are IDE, SATA or SCSI.



  • Fast and the most comprehensive defragmentation Original Paragon technologies allows to overcome limitations of build-in Windows® Defrag. Also unlike other defragmenters, Paragon Total Defrag works at low-level, can sort and move files to external (fast) cylinders and requires less than 1% of free space on the hard drive to operate.



  • New! 2 Defragmentation Modes Use one of 2 available modes for defragmentation: Fast or Safe. Safe Mode is slower but it protects your data in case of a power failure during defragmentation.


    Bootable CD/DVD Run Paragon Total Defrag without installation. Create a bootable CD or DVD and boot the system and defragment all the available disks directly from it.




You can register here and get the download from here.


This is a limited offer so stay tuned.


Some screen shots:


















Main Window




Defragmentation options




Work in BTE mode




Defragmentation results




Shrink MFT options



Before you start this tutorial please make sure that your network responds to the same OID as here and that you have configured all the UPS-s to work with the snmp (note down your snmp community string). In my tests I used the standard powernet395.mib from APC and the rfc1628.mib for AROS.



First make sure that you activated the check_snmp command in the file commands.cfg. If you don't, add it as follows:




# 'check_snmp' command definition


define command{


command_name check_snmp


command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$


}




So we will use this command with the following switches


check_snmp -H <ip_address> -o <OID> [-w warn_range] [-c crit_range] [-C community] [-s string] [-u units]




Add the corresponding templates (this is good if you want a service allocation by type or model) on the templates.cfg. Here is the example:



# Define a template for the UPS's that we can reuse


define host{


name generic-ups


use generic-host


check_period 24x7


check_interval 5


retry_interval 1


max_check_attempts 10


check_command check-host-alive


notification_period 24x7


notification_interval 30


contact_groups admins


register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE


}





# Define a template for the AROS UPS's that we can reuse


define host{


name generic-aros


use generic-ups


hostgroups 007-ups-all,007-ups-all-aros


contact_groups admins


icon_image aros.png


icon_image_alt UPS_AROS


register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE


}




# Define a template for the APC UPS's that we can reuse


define host{


name generic-apc


use generic-ups


hostgroups 007-ups-all,007-ups-all-apc


contact_groups admins


icon_image apc.png


icon_image_alt UPS_APC


register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE


}





Create the new corresponding groups:




define hostgroup{


hostgroup_name 007-ups-all


alias UPS (all)


}



define hostgroup{


hostgroup_name 007-ups-all-aros


alias UPS (all AROS)


}



define hostgroup{


hostgroup_name 007-ups-all-apc


alias UPS (all apc)


}





Create a new configuration file (I named it ups.cfg) and add the entry to the Nagios main configuration file:



#Definitions for monitoring the UPS Devices


cfg_file=/usr/local/nagios/etc/objects/ups.cfg



Now we can start work on the configuration file. First we declare the hosts:




define host{


use generic-apc


host_name IT-UPS-APC


alias this is a standard apc ups


address 192.168.3.60 ; IP address of the device


}



define host{


use generic-aros


host_name IT-UPS-AROS


alias this is a standard aros ups


address 192.168.3.61 ; IP address of the device


}




Then we declare the services (first the generic services):




define service{


use generic-service ;


hostgroup_name 007-ups-all


service_description PING


check_command check_ping!200.0,20%!600.0,60%


normal_check_interval 5


retry_check_interval 1


}




# Monitor uptime via SNMP



define service{


use generic-service ;


hostgroup_name 007-ups-all


service_description Uptime


check_command check_snmp!-C Default_snmp_string -o sysUpTime.0


}



After we can make the UPS checks by device type:





#######################################################################################################################


##


## APC UPS Checks


##


#######################################################################################################################



define service{


use generic-service ;


hostgroup_name 007-ups-all-apc


service_description APC Battery temperature


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.2.2.2.0 -C Default_snmp_string -w 35 -c 45 -u C


}



define service{


use generic-service ;


# host_name IT-MILUPS-CEDA, IT-MILUPS-CEDB


hostgroup_name 007-ups-all-apc


service_description APC Battery run time remaining


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.2.2.3.0 -C Default_snmp_string


}




define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC Battery needs replacement


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.2.2.4.0 -C Default_snmp_string -c 2


}




define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC Line-in voltage


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.3.2.1.0 -C Default_snmp_string -w 280 -c 300 -u VAC


}



define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC UPS load


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.4.2.3.0 -C Default_snmp_string -w 70 -c 90 -u %


}




define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC output current


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.4.2.4.0 -C Default_snmp_string -w 40 -c 50 -u A


}



define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC output voltage


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.4.2.1.0 -C Default_snmp_string -w 230 -c 245 -u VAC


}



define service{


use generic-service ;



hostgroup_name 007-ups-all-apc


service_description APC status


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.4.1.1.0 -C Default_snmp_string -c 3


}




define service{


use generic-service ;


hostgroup_name 007-ups-all-apc


service_description APC UPS Model


check_command check_snmp!-o .1.3.6.1.4.1.318.1.1.1.1.1.1.0 -C Default_snmp_string


}




#######################################################################################################################


##


## AROS UPS Checks


##


#######################################################################################################################



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS Battery temperature


check_command check_snmp!-o 1.3.6.1.2.1.33.1.2.7.0 -C Default_snmp_string -w 35 -c 45 -u C


}



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS Battery run-time remaining


check_command check_snmp!-o 1.3.6.1.2.1.33.1.2.3.0 -C Default_snmp_string -u min


}



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS Battery charge level


check_command check_snmp!-o 1.3.6.1.2.1.33.1.2.4.0 -C Default_snmp_string -u %


}



define service{


use generic-service ;



hostgroup_name 007-ups-all-aros


service_description AROS number of alarms


check_command check_snmp!-o 1.3.6.1.2.1.33.1.6.1.0 -C Default_snmp_string -w 1 -c 2


}



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS software version


check_command check_snmp!-o 1.3.6.1.2.1.33.1.1.3.0 -C Default_snmp_string


}





define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS output load


check_command check_snmp!-o .1.3.6.1.2.1.33.1.4.4.1.5 -C Default_snmp_string -w 70 -c 90 -u %


}



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS input voltage


check_command check_snmp!-o .1.3.6.1.2.1.33.1.3.3.1.3 -C Default_snmp_string -w 280 -c 300 -u V


}



define service{


use generic-service ;


hostgroup_name 007-ups-all-aros


service_description AROS output voltage


check_command check_snmp!-o .1.3.6.1.2.1.33.1.4.4.1.2 -C Default_snmp_string -w 230 -c 245 -u V


}






The SNMP values that appear here where retrieved with a freeware mib browser from servercheck.



Check the configuration file:



/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg




If all it's ok restart Nagios:



service nagios restart




You should see something like this:


nagiosUPS.JPG


That's all.

Lume lume! Ai o poza de buletin? Se prea poate ca sa ti-o gasesti aici:










http://www.facesaerch.com/facesearch/img/screenshots/500x324_facesaerch.png







Este un serviciu al carui motor de cautare gaseste portrete! La ce ar fi de folos.. nu stiu... Poate doar sa iti pierzi timpul un pic cu ele just for fun.

Ce mai face Micro$$oft ca sa iti ia banii pe Vista... Pai un nou experiment...



Ingrediente si mod de preparare:


- Se ia una bucata american (prost) - de fapt 140 de astfel de useri care nu au mai incercat in viata lor Vista;


- Se ia una bucata sistem de operare nou, varianta demo pe nume "Mojave" de la Microsoft;


- I se cere userului sa ii acorde o nota sistemului de operare Vista (4.4 media predemo)


- Se amesteca bine... (aka i se prezinta in 10 min userului ce face noul sistem)


- I se cere o nota pt Mojave (OAU 8.5.... extraordinar ce poate sa faca...)


- I se comunica loserului ca a "incercat" (i s-a prezentat) Vista.... Si surpriza ... Acesta spune ca i-a placut!



Acu' ca in orice studiu care se respecta (si care da bine la marketing) nu se dau date despre cei "sceptici" care din diverse motive nu le-a placut prezentarea (de ce anume nu le-a placut, etc...).


Oricum traiasca Vista ca e muuuuuuuuuult mai bun pt aplicatiile de zi cu zi... (si la bug-uri e pe primul loc :D )


Daca vreti sa il vizitati site-ul e aici: http://www.mojaveexperiment.com/

Yahoo.ro


DA!


In sfarsit Yahoo se va lansa si pe la noi... Gurile "rele" spun ca va fi la inceputul anului viitor nu anul acesta cum se vehicula prin Ziarul Financiar... Oricum eu de abia astept sa am interfata in RO (sunt fan programe traduse BINE)... Pana atunci baietii se pare ca trag tare sa relanseze pagina www.yahoo.com intr-o noua interfata (pana la sfarsitul anului, zic iei).


Multa bafta si spor la lucru le urez!

Raven e un "mic" softulet care va usura mult viata unui bloger.


Comoara suporta o gramada de platforme & iti salveaza o copie locala a blogului. Editezi ca in word, faci drag & drop la poze, selectezi unde le va stoca (ce serviciu va folosi pt asta), etc... Iar faptul ca e si portabil vine ca o cireasa de pe tort. Care vrea sa il incerce poate sa il gaseasca aici : http://www.zoundryraven.com (gratis)


O mica galerie de imagini ca sa va faceti o idee despre ce stie :




Zoundry Raven Tabbed Blog Editor




Zoundry Raven Blog Editor




Zoundry Raven Blog Editor




Zoundry Raven Blog Editor




Raven2Go




Wordpress Pages & Tags


PS pt Tudor:


Raven-ul merge de minune la mine! :) Postul asta l-am realizat in intregime de pe el... Poate are nevoie sa ii dai voie si din firewall :)