v-list-sys-rrd 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #!/bin/bash
  2. # info: list system rrd charts
  3. # options: [FORMAT]
  4. #
  5. # List available rrd graphics, its titles and paths.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. format=${1-shell}
  10. # Includes
  11. source $VESTA/func/main.sh
  12. source $VESTA/conf/vesta.conf
  13. # JSON list function
  14. json_list() {
  15. i=1
  16. echo "{"
  17. # Generating timestamp
  18. time_n_date=$(date +'%T %F')
  19. TIME=$(echo "$time_n_date" |cut -f 1 -d \ )
  20. DATE=$(echo "$time_n_date" |cut -f 2 -d \ )
  21. for type in $rrd_types; do
  22. for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
  23. if [ "$i" -ne 1 ]; then
  24. echo -e "\t},"
  25. fi
  26. if [ "$type" = 'la' ]; then
  27. title="Load Average"
  28. fi
  29. if [ "$type" = 'mem' ]; then
  30. title="Memory Usage"
  31. fi
  32. if [ "$type" = 'net' ]; then
  33. title="Bandwidth Usage $rrd"
  34. fi
  35. if [ "$type" = 'web' ] || [ "$type" = 'ftp' ] ||\
  36. [ "$type" = 'ssh' ]; then
  37. title="$(echo $rrd| tr '[:lower:]' '[:upper:]') Usage"
  38. fi
  39. if [ "$type" = 'mail' ]; then
  40. title="Exim Usage"
  41. fi
  42. if [ "$type" = 'db' ]; then
  43. db_type=$(echo $rrd|cut -f 1 -d _ |sed -e 's/mysql/MySQL/g' \
  44. -e 's/pgsql/PostgreSQL/g' )
  45. db_host=$(echo $rrd|cut -f 2 -d _ )
  46. title="$db_type Usage on $db_host"
  47. fi
  48. echo -e "\t\"$i\": {"
  49. echo -e "\t\t\"TYPE\": \"$type\"",
  50. echo -e "\t\t\"RRD\": \"$rrd\"",
  51. echo -e "\t\t\"TITLE\": \"$title\","
  52. echo -e "\t\t\"TIME\": \"$TIME\","
  53. echo -e "\t\t\"DATE\": \"$DATE\""
  54. (( ++i))
  55. done
  56. done
  57. if [ "$i" -gt 1 ]; then
  58. echo -e "\t}"
  59. fi
  60. echo "}"
  61. }
  62. # SHELL list function
  63. shell_list() {
  64. echo "TYPE VAL_1 VAL_2 VAL_3 TIME DATE"
  65. echo "---- ----- ----- ----- ---- ----"
  66. for type in $rrd_types; do
  67. for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
  68. rrd_type=$(echo "$rrd" |tr '[:lower:]' '[:upper:]')
  69. rrd_data=$(rrdtool fetch "$RRD/$type/$rrd.rrd" AVERAGE -e 0 -s 0)
  70. rrd_data=$(echo "$rrd_data" |tail -n 1)
  71. rrd_timestamp=$(echo "$rrd_data" |cut -f 1 -d :)
  72. rrd_time=$(date -d "@$rrd_timestamp" +%F)
  73. rrd_date=$(date -d "@$rrd_timestamp" +%T)
  74. rrd_val1=$(echo "$rrd_data" |awk '{print $2}' |cut -d. -f1)
  75. rrd_val2=$(echo "$rrd_data" |awk '{print $3}' |cut -d. -f1)
  76. rrd_val3=$(echo "$rrd_data" |awk '{print $4}' |cut -d. -f1)
  77. if [ -z "$rrd_val1" ]; then
  78. rrd_val1="-nan"
  79. fi
  80. if [ -z "$rrd_val2" ]; then
  81. rrd_val2="-nan"
  82. fi
  83. if [ -z "$rrd_val3" ]; then
  84. rrd_val3="-nan"
  85. fi
  86. echo "$rrd_type $rrd_val1 $rrd_val2 $rrd_val3 $rrd_time $rrd_date"
  87. done
  88. done
  89. }
  90. # PLAIN list function
  91. plain_list() {
  92. for type in $rrd_types; do
  93. for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
  94. echo "$RRD/$type/$rrd.rrd"
  95. done
  96. done
  97. }
  98. # CSV list function
  99. csv_list() {
  100. for type in $rrd_types; do
  101. echo "RRD"
  102. for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
  103. echo "$RRD/$type/$rrd.rrd"
  104. done
  105. done
  106. }
  107. #----------------------------------------------------------#
  108. # Action #
  109. #----------------------------------------------------------#
  110. # Definng rrd charts
  111. rrd_types="la mem net"
  112. # Checking web system
  113. if [ ! -z "$WEB_SYSTEM" ]; then
  114. rrd_types="$rrd_types web"
  115. fi
  116. # Checking mail system
  117. if [ ! -z "$MAIL_SYSTEM" ]; then
  118. rrd_types="$rrd_types mail"
  119. fi
  120. # Checking db system
  121. if [ ! -z "$DB_SYSTEM" ]; then
  122. rrd_types="$rrd_types db"
  123. fi
  124. # Checking ftp system
  125. if [ ! -z "$FTP_SYSTEM" ]; then
  126. rrd_types="$rrd_types ftp"
  127. fi
  128. # Adding ssh
  129. rrd_types="$rrd_types ssh"
  130. # Listing data
  131. case $format in
  132. json) json_list ;;
  133. plain) plain_list ;;
  134. csv) csv_list ;;
  135. shell) shell_list |column -t ;;
  136. esac
  137. #----------------------------------------------------------#
  138. # Vesta #
  139. #----------------------------------------------------------#
  140. exit