вторник, 24 января 2012 г.

I know Kung-Fu now :)

Задался я по работе интересным вопросом - а как собственно узнать какое приложение под Linux грузит диск? Для CPU есть top - а для диска?
Дебианщики скажут - iotop, но там нужно свеженькое ядро, а у нас CentOS 5 на 2.6.18 - и что ж нам делать?
Оказывается есть минимум три выхода.
1. Если ядро 2.6.1 и новее - а оно наверно так и есть, можно сказать

% sudo sysctl vm.block_dump=1
и после чего в /var/log/debug начинает валиться что то типа
May 27 10:00:20 kex kernel: tail(11548): dirtied inode 14093100 (ld.so.cache) on sda1
May 27 10:00:20 kex kernel: tail(11548): dirtied inode 15269995 (libm.so.6) on sda1
May 27 10:00:20 kex kernel: tail(11548): dirtied inode 15270399 (libm-2.3.2.so) on sda1
...
May 27 10:00:20 kex kernel: tail(11548): dirtied inode 18154515 (locale-archive) on sda1
May 27 10:00:21 kex kernel: pdflush(140): WRITE block 76808312 on sda1
.. 
Это конечто не Бог весть что, но с помощью могучей магии Перла или шелла это можно распарсить и просуммировать - 


% grep sda1 /var/log/debug | grep READ | cut -d: -f4 | sort | uniq -c | sort -rn | head
   1056  find(11566)
    247  mysqld(11855)
     43  mysqld(11751)
     26  mysqld(11790)
     21  tar(11717)
     16  mysqladmin(11748)
     13  mysqld(11899)
     13  grep(4560)
     12  mysqld(11863)
      6  mysqld(11760)
В общем, хоть что то, но есть способ лучше -

2. dstat - http://dag.wieers.com/home-made/dstat/
Тоже не "мегамагия", но на CentOS работает, хотя по дефолту выводит просто ИМЯ самого прожорливого до диска процесса - если их несколько (java?) то остается догадываться какой это именно процесс. В принципе плагины для него написаны на Питоне, и можно покопаться, но есть способ еще лучше.

3. SystemTap - http://sourceware.org/systemtap/
О, а вот это уже интересная штучка - аналог DTrace (который под Линукс нельзя портировать из за лицензионных ограничений). Поддерживается кучей контор, в т.ч. RedHat и IBM.
Полностью работоспособен в RHEL/Centos начиная с 5 версии. Для CentOS правда нужно доставить kernel-debug RPMки вручную (если у вас нестандартное ядро - придется их собрать и установить, но вся инфа есть тут - http://sourceware.org/systemtap/wiki/SystemTapOnCentOS)
Безопасен для production систем, вроде как - паники не вызывает.
Устанавиваем, идем на http://sourceware.org/systemtap/wiki/ScriptsTools, качаем disktop.stp, запускаем -


[root@localhost src]# stap -v disktop.stp 
Pass 1: parsed user script and 72 library script(s) using 21380virt/12988res/2280shr kb, in 300usr/220sys/712real ms.
Pass 2: analyzed script: 6 probe(s), 33 function(s), 7 embed(s), 21 global(s) using 122028virt/45148res/4200shr kb, in 2430usr/3790sys/16852real ms.
Pass 3: translated to C into "/tmp/stapFxPYtp/stap_5caa87e008b9d53ed275791ebd211ed4_27487.c" using 119868virt/45400res/5432shr kb, in 660usr/290sys/1328real ms.
Pass 4: compiled C into "stap_5caa87e008b9d53ed275791ebd211ed4_27487.ko" in 4630usr/3600sys/11755real ms.
Pass 5: starting run.

Tue Jan 24 15:41:06 2012 , Average:   2Kb/sec, Read:      13Kb, Write:      1Kb

     UID      PID     PPID                       CMD   DEVICE    T        BYTES
     500     3629     3621           pam_timestamp_c     dm-0    R        13824
     501     2759     2757                      java     dm-0    W          690
     501     2545     2542                      java     dm-0    W          552

Tue Jan 24 15:41:11 2012 , Average:   2Kb/sec, Read:      13Kb, Write:      1Kb

     UID      PID     PPID                       CMD   DEVICE    T        BYTES
       0     2395        1               VBoxService     dm-0    R        13824
     501     2545     2542                      java     dm-0    W          690
     501     2759     2757                      java     dm-0    W          671

Tue Jan 24 15:41:16 2012 , Average:   2Kb/sec, Read:      13Kb, Write:      1Kb

     UID      PID     PPID                       CMD   DEVICE    T        BYTES
     500     3629     3621           pam_timestamp_c     dm-0    R        13824
     501     2759     2757                      java     dm-0    W          690
     501     2545     2542                      java     dm-0    W          671

Tue Jan 24 15:41:21 2012 , Average:   5Kb/sec, Read:      27Kb, Write:      1Kb

     UID      PID     PPID                       CMD   DEVICE    T        BYTES
       0     2395        1               VBoxService     dm-0    R        13824
     500     3629     3621           pam_timestamp_c     dm-0    R        13824
     501     2545     2542                      java     dm-0    W          690
     501     2759     2757                      java     dm-0    W          671
Последняя колонка - трафик в байтах. Ура, радуемся и крутим фонарики.
(На самом деле если копнуть глубже то цифрам трафика верить нельзя, но порядок нагрузки ясен. Почему обьяснено тут - http://dtrace.org/blogs/brendan/2011/10/15/using-systemtap/ )

Тулза, похоже, очень перспективная, нужно будет поковырять и изучить.

суббота, 24 декабря 2011 г.

Plusfeed.pl - экспортируйте Google Plus в RSS/Atom !

Plusfeed.pl - экспортируйте Google Plus в RSS/Atom !

Я не сильный любитель социальных сетей, но есть практически во всех - включая Google Plus - просто для поддержания связи с друзьями и знакомыми. Вот мой круг в Плюсах - https://plus.google.com/112714787808356482431/ - можете меня добавить. :)
Однако я с удивлением обнаружил что G+ не предоставляет Rss/Atom фидов для экспорта.
Гуглением было обнаружено следующее -

https://github.com/russellbeattie/plusfeed - использует Python на GoogleAppengine.
https://github.com/tedkulp/gplusfeed - использует Node.js на Heroku.
https://github.com/AntonTyutin/gp2rss - использует Node.js
Но насколько мне известно ни один из этих сервисов не дает публичного доступа - Plusfeed http://plusfeed.appspot.com был закрыт после изменения цен на Appengine,  http://gplusfeed.heroku.com у меня (может только у меня?) тоже завести не получилось.
Поэтому я решил написать такую штучку для себя, ну  для других жаждущих - по крайней мере, пока возможность экспорта постоп G+ не будет предоставляться "из коробки".

Итак, встречайте - http://plusfeed.sandbox.activestate.com !
Также можете использовать мой код  https://github.com/deniszh/plusfeed.pl чтобы сделать что то подобное, используя простой Perl/CGI хостинг или Activestate Stackato - все необходимое для этого уже есть в приложении.

Если есть вопросы - пишите, с удовольствием отвечу.

воскресенье, 4 декабря 2011 г.

Журнализды такие журнализды

Нет, я не про выборы в Росии, а про статью что де Викиликс открыла интерактивную карту http://wikileaks.org/The-Spyfiles-The-Map.html  -  на которой написано в каких странах какие фирмы помогают следить за гражданами. Оригинал статьи я не нашел, но новость уже распространилась по интернетам - http://www.novostimira.com.ua/news_12454.html или http://job-sbu.org/wikileaks-o-kompaniyah-kotoryie-shpionyat-za-ukraintsami.html
Главный цимес статьи что мол, "вот вы блоггеры и айтишнеги все ржете над разговорами про тотальную прослушку интернета, а вот оно, Викиликсы все написали!"
Про Украину написано про две фирмы - Альтрон и Дельта. Про Альтрон там действительно много инфы - http://wikileaks.org/spyfiles/list/company-name/altron.html - но то вроде все про прослушку разговоров и всякие шпионские штучки, а нас интересует интернет. 
А про Интернет у нас есть только - http://wikileaks.org/spyfiles/docs/delta-spa/6_the-challenge-of-packet-data-collection-from-satellite.html - описание охрененной системы прослушивания спутникового интернета, наверняка стоящую немеряных денег. Еще раз повторю - СПУТНИКОВОГО интернета.
А у него во первых достаточно небольшая полоса, а во вторых во многих системах сигнал вообще не шифруется или шифруется слабо, поэтому как правило клиенты спутниковых сетей и так в курсе, и используют дополнительные меры, как правило VPN с шифрованием.
Ну и главный вопрос - много ли народу на Украине пользуется коммерческими системами двусторонней спутниковой связи? Думаю нет.
Какая тут тогда спрашивается тогда слежка за украинцами?

среда, 30 ноября 2011 г.

А вы говорите Node.js, Node.js...


Наш соотечественник, Алесандр Гомоляко (zzz@zzz.org.ua),  некоторое
время назад зарелизил логическое продолжение его модуля Nginx::Engine
- патченую версию Nginx с улучшенной поддержкой Perl. Живет тут -
https://github.com/zzzcpan/nginx-perl/
Также в рассылке Moscow.PM был небольшой флейм по поводу того на чем
писать серверы -  Perl AnyEvent vs Python Twisted. В ходе обсуждения
впрочем выяснилось что с большим отрывом всех рвет Node,js - что в
принципе логично, потому как javascript, сука, быстрый. :)
В ответ на это Александр сделал небольшой тест Node.js+Redis vs
Nginx-Perl+Redis, а я сегодня повторил этот тест на своей хилой VPSке
(Atom+196MB RAM). Все тесты есть в последней версии Nginx-Perl, лежат
в eg/redis, желающие могут повторить.
Тестируется простое приложение, по запросу / - просто отдача "hello",
по запросу /single - выборка значения по ключу mykey из Redis и отдача
клиенту, по запросу /multi - выборка  значения по ключу mykey из Redis
10 раз и выдача клиенту. Redis v2.4.4 живет на localhost, все
настройки по умолчанию.

Concurrency=10, Number of requests=10000

Node.js v0.4.11, hiredis установлен
/          = 1187.14 [#/sec]
/single =  814.92 [#/sec]
/multi  =  450.07 [#/sec]

Nginx-Perl
/          = 2357.97 [#/sec]
/single  = 1405.84 [#/sec]
/multi   = 686.32 [#/sec]

Незнаю как кому, но меня результат откровенно порадовал. Есть даже
куда применить, хочу портировать одну штучку с Ноды.
Node,js конечно тоже хороший продукт, у него есть свои плюсы, но и
Perl еще очень рано списывать со счетов. :)




Perl опять крут

Perl опять крут. AMF auth hacked ;)
Я чуть ежика не родил над спецификацией AMF в попытках написать AMF клиент, а добрые люди оказывается уже написали AMF::Connection и Storable::AMF...

вторник, 16 ноября 2010 г.

Хех - опять про взлом паролей

Когда я делал доклад про пароли на PerlMova 2010, некоторые товарищи высказывали сомнение, что мол, врядли кто будет тратить пару тысяч долларов на комп с парой топовых графических карт чтобы взломать пароли от моего сайта.
Так вот, если кто не в курсе - Amazon EC2 теперь сдает в аренду машинки с GPU
22 GB of memory
33.5 EC2 Compute Units (2 x Intel Xeon X5570, quad-core “Nehalem” architecture)
2 x NVIDIA Tesla “Fermi” M2050 GPUs
1690 GB of instance storage
64-bit platform

СтОит это 2 доллара в час. Вот тут - http://stacksmashing.net/2010/11/15/cracking-in-the-cloud-amazons-new-ec2-gpu-instances/ - товарищ на таком инстансе взломал перебором кучку sha1 хешей 6-ти буквенных паролей за 49 минут, потратив на все про все порядка 5 долларов.
А теперь представьте что может сделать небольшой кластер из этих штук, причем за вполне себескромные деньги...

суббота, 16 октября 2010 г.

Таки сдал экзамен RHCE %)


Congratulations -- you are now certified as a Red Hat Certified Engineer!  
Your RHCE Certificate number is 805010583654224.
Экзамен щас оказывается состоит из одной 3х часовой части, а не из двух, как раньше - траблшутинга меньше, настройки больше. Больше нескажу бо NDA :)
Но обработали оперативно - вчера сдал, сегодня результат. Результаты экзамена по BSD - BSDA - так до сих пор и не пришли например - хотя с другой стороны он и стОит в 5 раз дешевле %)