Results 1 to 15 of 55

Thread: Альтернативные web-интерфейсы Transmission

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Transmission и графики раздачи/загрузки(+ вопрос по интерфейсу)

    После миграции с transmission версии 1.20 на версию 1.33, я понял, что мне не хватает графиков загрузки проца+отдача+загрузка. Попробовал rrdtool, не понравилось, что он каждые пять минут нагружает проц на 90%. В связи с этим написал скриптик для сбора данных от transmission, и прикрутил его к gnuplot, который использовался в версии 1.20.
    Логика работы:
    1. По cron`у, раз в пять минут запускается скрипт.
    2. В скипте у трансмиссии запрашивается данные по торрентам(transmission-remote -l). В файл transfer.log кладутся данные для обычного просмотра(можно удалять), в файл transfer.data - для рисования. Здесь используется awk.
    3. Раз в час cron запускает gnuplot для создания графика. Лучше это сделать при вызове из интерфейса, но я пока не разобрался в веб-интерфейсе transmission 1.33.
    4. Раз в день cron запускает logrotate, который текущие файлы с данными сжимает, а старые удаляет. Делается для того, чтобы не было переполнения диска.


    Внимание:
    • Работает только с целыми часовыми поясами. Если нужно что-то другое то меняйте руками параметр timezone.
    • В том виде, как здесь приведено, создается файл для создания графика и для обычного просмотра. Второй можно не создавать, тогда нужно удалить секцию из скрипта и конфигурационного файла logrotat`а.


    Считаю, что человек, который будет делать то, что написано далее, умеет редактировать скрипты (например, при помощи vi), имеет установленный и настроеный transmission, соот-но есть /opt.
    Инструкция по установке:
    1. Необходимые пакеты, ест-но, кроме transmission; в скобках указываю версию, на которой у меня работает:
      1. awk - утилита для обработки текста(gawk - 3.1.6-1);
      2. cron - программа для запуска чего-либо по расписанию (cron - 4.1-7);
      3. gnuplot - программа для создания рисунков из текстовых файлов с данными(gnuplot - 4.2.2-2).
      4. logrotate - утилита для ротации логов (logrotate - 3.7.1-4).

      Наличие установленого пакета проверять командой ipkg list_installed | grep 'cron':
      Code:
      [admin@dtr_rout nbdmsan]$ ipkg list_installed | grep 'cron'
      cron - 4.1-7 - Standard vixie cron, with cron.d addition
      Установку пакетов осуществлять в штатном порядке, утилитой ipkg.
    2. Проверяем наличие всех необходимых каталогов
      Code:
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/transmlog/
      transfer.gnuplot  transfer.png
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/cron.5mins/
      tr_load.sh
      [admin@dtr_rout nbdmsan]$ ls /opt/var/log/
      messages    messages.1.gz  messages.3.gz  messages.5.gz  messages.7.gz  messages.9.gz  transfer.data       transfer.log
      messages.0  messages.2.gz  messages.4.gz  messages.6.gz  messages.8.gz  transfer.data.1.gz  transfer.log.1gz
      [admin@dtr_rout nbdmsan]$ ls /opt/etc/logrotate.d
      transmlog.conf
      Если какого-то каталога нет, то создаем его при помощи команды mkdir:
      Code:
      mkdir /opt/etc/transmlog/
    3. B каталоге /opt/etc/cron.5mins/ создаем скрипт следующего содержания:
      Code:
      #!/bin/sh
      
      plotdata="/opt/var/log/transfer.data"
      textdata="/opt/var/log/transfer.log"
      timezone=`/bin/date +%z | /opt/bin/awk '{print int($1)/100}'`
      
      #data for text
      load=`cat /proc/loadavg | /opt/bin/awk '{print $1}'`
      time=`/bin/date '+%Y.%m.%d %T'`
      upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
      download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      /bin/echo $time "       " "LOAD" "      " $load "       " "UP" "         " $upload "     "  "DOWN" "     " $download >> $textdata
      
      #data for gnuplot
      #       load=`cat /proc/loadavg | /opt/bin/awk '{print $1}'`
      time=`/bin/date '+%s'`
      let "time = $time + ( 3600 * $timezone )"
      #       upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($4)} else {total+=int($5)}}; END { print total }'`
      #       download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      let "download = 0 - $download"
      /bin/echo $time $download $upload $load >> $plotdata
      Если не разбираетесь в скриптах, то набивать руками не советую (копируйте) - очень важно соответствие следующих символов '"`{. Я очень долго их подбирал :-).
      В строке
      Code:
      /bin/echo $time "       " "LOAD" "      " $load "       " "UP" "         " $upload "     "  "DOWN" "     " $download >> $textdata
      то, что между "" должно быть табуляцией, при копировании вставляется как пробелы.
      Если Вам не нужны данные в тектовом виде, то можно удалить секцию ##data for text, но тогда нужно раскоментировать строки, начинающиеся с "# ".
      UPD. В версии Transmission 1.50 немного поменяли вывод transmission-remote -l, соответственно в скрипте должно быть:
      Code:
      upload=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($5,".")) {total+=int($5)} else {total+=int($6)}}; END { print total }'`
      download=`/opt/bin/transmission-remote -l | /opt/bin/awk '{if (index($4,".")) {total+=int($6)} else {total+=int($7)}}; END { print total }'`
    4. Ставим скрипту атрибуты на выполнение
      Code:
      chmod +x /opt/etc/cron.5mins/tr_load.sh
    5. Создаем файл настроек для gnuplot - /opt/etc/transmlog/transfer.gnuplot со следующим содержанием:
      Code:
      set terminal png small size 800,320
      set output '/opt/etc/transmlog/transfer.png'
      set xdata time
      set timefmt "%s"
      set format x "%H:%M\n%m/%d"
      set ytics nomirror
      set y2tics nomirror
      set y2range [0:]
      set ylabel "Transmission transfer rate [kB/s]"
      set y2label "System load"
      set y2tics 1
      set xlabel "Time"
      plot '/opt/var/log/transfer.data' using ($1):2 title 'download' axis x1y1 with impulses,      '/opt/var/log/transfer.data' using ($1):3 title 'upload' with impulses,      '/opt/var/log/transfer.data' using ($1):4 axis x1y2 title 'load' with lines
      quit
      /opt/etc/transmlog/transfer.png - куда генерировать график. /opt/var/log/transfer.data - откуда брать данные.
    6. Основной файл конфигурации /opt/etc/logrotate.conf у меня выглядит так:
      Code:
      compress
      
      /opt/var/log/messages {
              size 1024k
              weekly
              rotate 9
              postrotate
              killall -HUP syslogd
              endscript
      }
      
      include /opt/etc/logrotate.d
      Его цель - ротация основного лога. Основной лог у меня слинкован на /opt/var/log/messages при помощи команды
      Code:
      ln -s /tmp/syslog.log /opt/var/log/messages
      Создаем файл /opt/etc/logrotate.d/transmlog.conf с содержимым:
      Code:
      /opt/var/log/transfer.data {
              compress
              size 1024k
              daily
              rotate 9
      }
      /opt/var/log/transfer.log {
              compress
              size 1024k
              daily
              rotate 9
      }
    7. Добавляем в /opt/etc/crontab строки
      Code:
      */5 * * * * admin /opt/etc/cron.5mins/tr_load.sh
      1 * * * * admin /opt/bin/gnuplot /opt/etc/transmlog/transfer.gnuplot
      0 0 * * * admin /opt/sbin/logrotate -f /opt/etc/logrotate.conf &>/dev/null
    8. Проверяем что работает
      Code:
      [admin@dtr_rout root]$ /opt/etc/cron.5mins/tr_load.sh
      [admin@dtr_rout root]$ ls /opt/var/log/transfer.*
      /opt/var/log/transfer.data /opt/var/log/transfer.log
      [admin@dtr_rout root]$ date
      Mon Sep 22 15:23:06 UCT 2008
      [admin@dtr_rout root]$ tail /opt/var/log/transfer.log
      2008.09.22 14:45:02      LOAD    0.26    UP       94      DOWN    0
      2008.09.22 14:50:02      LOAD    0.08    UP       70      DOWN    0
      2008.09.22 14:55:02      LOAD    0.04    UP       72      DOWN    0
      2008.09.22 15:00:01      LOAD    0.00    UP       66      DOWN    0
      2008.09.22 15:05:02      LOAD    0.15    UP       42      DOWN    0
      2008.09.22 15:10:02      LOAD    0.03    UP       54      DOWN    0
      2008.09.22 15:15:01      LOAD    0.02    UP       40      DOWN    0
      2008.09.22 15:20:01      LOAD    0.07    UP       80      DOWN    0
      2008.09.22 15:20:37      LOAD    0.19    UP       100     DOWN    0
      2008.09.22 15:23:02      LOAD    0.01    UP       60      DOWN    0
      [admin@dtr_rout root]$ /opt/bin/gnuplot /opt/etc/transmlog/transfer.gnuplot
      [admin@dtr_rout root]$ ls -la /opt/etc/transmlog/
      total 20
      drwxr-xr-x  2 admin root 4096 2008-09-22 14:17 .
      drwxr-xr-x 12 admin root 4096 2008-09-22 08:18 ..
      -rwxr--r--  1 admin root  554 2008-09-22 14:20 transfer.gnuplot
      -rw-r--r--  1 admin root 5711 2008-09-22 15:25 transfer.png


    После этого можно смотреть график в /opt/etc/transmlog/transfer.png.


    Осталось внедрить эту картинку в web-морду transmission и буду я доволен.
    Может кто-нибудь помочь с JSON и внедрением картинки?

    UPD. после обновления до transmission - 1.41b4-1 работает.
    Last edited by Cd_spb; 14-03-2010 at 14:21. Reason: Убрал лишнюю "е" в chmod

Similar Threads

  1. Альтернативные прошивки для wl700gE
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 165
    Last Post: 05-03-2011, 07:15
  2. Error 501 when connecting to Transmission Remote
    By buddy in forum WL-500gP Q&A
    Replies: 43
    Last Post: 30-06-2009, 00:06
  3. 5 dzien walki z olegiem i transmission
    By rainercray in forum Polish Discussion - Polski (PL)
    Replies: 0
    Last Post: 07-02-2009, 15:49
  4. wi-fi и интерфеисы
    By valo in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 4
    Last Post: 26-10-2008, 21:51

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •