FastNetMon

Monday 30 April 2012

Бэкпортирование zabbix-server c Debian wheezy на squeeze

Итак, имеется такой расклад по версиям Zabbix:
squeeze: 1.8.2-1squeeze2 
wheezy: 1.8.11-1 
Между ними в случае Zabbix целая пропасть по части функционала. Поэтому, обязательно использовать zabbix 1.8.11, но для этого его нужно бэкпортировать в squeeze.

Ставим софт для сборки (пока все для Squeeze):
apt-get install -y dpkg-dev devscripts build-essential fakerootapt-get build-dep zabbix-server-mysql  locales-all
 Добавляем deb-src репозитории для wheezy:
deb-src http://ftp.au.debian.org/debian/ wheezy main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
Скачиваем deb-src пакеты от wheezy (убеждааемся, чтобы версия при скачке была 1.8.11):
cd /usr/src
apt-get source zabbix-server-mysql 
Доустанавлвиаем зависимости, которые появились в wheezy:
apt-get install -y libsqlite3-dev libssh2-1-dev quilt
Собираем:
cd zabbix-1.8.11
debuild -us -uc

В результате сборки вылезит ошибка:
dpkg-buildflags: unknown option `--export=configure'
Фиксить ее только установкой двух пакетов из Backport Squeeze (указанное не рекомендую делать на рабочей машине, а собирать где-то в тестовом окружении):
wget  http://backports.debian.org/debian-backports/pool/main/d/dpkg/dpkg-dev_1.16.1.2~bpo60+1_all.deb
wget http://backports.debian.org/debian-backports/pool/main/d/dpkg/libdpkg-perl_1.16.1.2~bpo60+1_all.deb
dpkg -i libdpkg-perl_1.16.1.2~bpo60+1_all.deb  dpkg-dev_1.16.1.2~bpo60+1_all.deb 

Все, теперь в папке /usr/src лежит целая связка нужных нам .deb пакетиков с актуальной версией zabbix =)


Далее ставим все зависимости сервера:
apt-get install -y dbconfig-common libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-server mysql-server-5.1 mysql-server-core-5.1 snmpd locales-all libiksemel3 libssh2-1  libcurl3-gnutls fping
И фронтэнда:
apt-get install -y php5-mysql  php5-gd libjs-scriptaculous apache2-mpm-prefork php5
И прокси (если требуется):

apt-get install -y libcurl3-gnutls libssh2-1 fping dbconfig-common 

И ставим сервер и фронтэнд:
dpkg -i /usr/src/zabbix-server-mysql_1.8.11-1_amd64.deb /usr/src/zabbix-frontend-php_1.8.11-1_all.deb

Установка Zabbix-server очень проста (спасибо dbconfig!).
Предоставляете административный пароль MySQL - Yes
Настроить базу данных для zabbix-server-mysql с помощью dbconfig-common - Yes.
Установка прокси
Устанавливаем mysql сервер.
Конфигурируем:
v im /etc/zabbix/zabbix_proxy.conf
Там правим:
Hostname=
Server=
Перезапускаем:
 /etc/init.d/zabbix-proxy restart 

Установка фронтэнда:
MySQL пароль приложения для zabbix-frontend-php - пустой
Если понадобится конфиг, то он здесь:
 vi /usr/share/zabbix/conf/zabbix.conf.php
Также стоит подтюнить PHP (/etc/php5/apache2/php.ini):
post_max_size = 32M
max_input_time = 300
max_execution_time = 300
date.timezone = Europe/Moscow
memory_limit = 512M 
post_max_size = 32M

Входим по admin/zabbix по адресу http://ip/zabbix.

uniq в Perl на Debian

apt-get install -y liblist-moreutils-perl
my @unique = uniq @faculty;foreach ( @unique ) {print $_, "\n";}
 Источник: http://stackoverflow.com/questions/439647/how-do-i-print-unique-elements-in-perl-array

Debian 6 Squeeze: Starting system logging: syslog-ngsyslog-ng: Error setting capabilities, capability management disabled; error='Operation not permitted'


Starting system logging: syslog-ngsyslog-ng: Error setting capabilities, capability management disabled; error='Operation not permitted'

Фикс:
vim /etc/default/syslog-ng
А там раскомментируем строку:
SYSLOGNG_OPTS="--no-caps"
Перезапускаем:
 /etc/init.d/syslog-ng restart 
 

Friday 27 April 2012

Загрузка конфиг-файлов с клиента на сервер Puppet

Это крайне редко используемая, но ОЧЕНЬ полезная функция Puppet. Если кратко, то она дает возможность забэкапить (залить) определенный конфиг-файл с клиента на Puppet сервер.

Итак, на клиенте нужно в конфиг файл:
vim /etc/puppet/puppet.conf 
Там в блоке [main] добавляем адрес puppet сервера:
    server=xxx.domain.ru 
Выполняется выгрузку конфиг-файла:
filebucket backup /etc/hosts
xxx.domain.ru/etc/hosts: 54fb6627dbaa37721048e4549db3224d
Получаем содержимое конфиг файла с сервера (запрос идет по md5 хешу):
filebucket get 54fb6627dbaa37721048e4549db3224d
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
На сервере же этот файл можно найти аналогично, по md5:
echo "`find /var/lib/puppet -type d  -name 54fb6627dbaa37721048e4549db3224d`/contents"
/var/lib/puppet/bucket/5/4/f/b/6/6/2/7/54fb6627dbaa37721048e4549db3224d/contents
Смотрим его содержимое:
cat /var/lib/puppet/bucket/5/4/f/b/6/6/2/7/54fb6627dbaa37721048e4549db3224d/contents
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
Ура! :) Пожалуй, это последнее, чем мне не хватало в Puppet. Очень неудобно было перекидывать настроенные на машине конфиги через sftp/scp.  Также крайне неудобно было обновлять конфиги в Puppet, если исправил их на машине.

Wednesday 25 April 2012

Активация Mongrel с Nginx для Puppet на CentOS 5


Для начала нужно включить Mongrel:
vim  /etc/sysconfig/puppetmaster
 Там вносим следующие правки:
PUPPETMASTER_PORTS=(18140, 18141)
PUPPETMASTER_EXTRA_OPTS="--servertype=mongrel"
Ставим сам Mongrel:
yum install -y rubygem-mongrel
Перезапускаем:

/etc/init.d/puppetmaster restart
После этого ставим Nginx 1.2  (или старше): http://nginx.org/ru/download.html

В блок http добавляем:
 ssl                     on;
    ssl_certificate         /var/lib/puppet/ssl/certs/config.fastvps.ru.pem;
    ssl_certificate_key     /var/lib/puppet/ssl/private_keys/config.fastvps.ru.pem;
    ssl_client_certificate  /var/lib/puppet/ssl/ca/ca_crt.pem;
    ssl_ciphers             SSLv2:-LOW:-EXPORT:RC4+RSA;
    ssl_session_cache       shared:SSL:8m; 
    ssl_session_timeout     5m;

    upstream puppet-production {
        server 127.0.0.1:18140; 
                            server 127.0.0.1:18141;
    }
Также создаем блок server:
    server {
        listen                  8140;
        root                    /var/empty;
        access_log              /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;

        # allow authenticated and client without certs
        ssl_verify_client       optional;

        # Variables
        # $ssl_cipher returns the line of those utilized it is cipher for established SSL-connection
        # $ssl_client_serial returns the series number of client certificate for established SSL-connection
        # $ssl_client_s_dn returns line subject DN of client certificate for established SSL-connection
        # $ssl_client_i_dn returns line issuer DN of client certificate for established SSL-connection
        # $ssl_protocol returns the protocol of established SSL-connection

        location / {
            proxy_pass          http://puppet-production;
            proxy_redirect      off;
            proxy_set_header    Host             $host;
            proxy_set_header    X-Real-IP        $remote_addr;
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header    X-Client-Verify  $ssl_client_verify;
            proxy_set_header    X-Client-DN      $ssl_client_s_dn;
            proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
            proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
            proxy_read_timeout  65;
        }
    }

Перезапускаем nginx:
/etc/init.d/nginx restart
 Все, после этого Pupept должен стать в разы быстрее :)

Источник: http://projects.puppetlabs.com/projects/1/wiki/Using_Mongrel_Nginx

Source Based роутинг в OpenVZ

Saturday 14 April 2012

Новая супер крутая фича у OpenVZ - ploop, файловая система в образе, а не в директории

Рекомендую для прочтения в целях введения в вопрос: http://openvz.livejournal.com/40830.html, кроме этого, есть чудесная презентация от ребят из Parallels: http://fastvps.googlecode.com/files/Ct_in_a_file.pdf

Из отрицательных черт фичи вижу - необходимость поддержки файловой системы (пока только ext4) внутри контейнера (fsck и co.), а также бОльше потребление места на диске. Изменение размера осуществоляется посредством стандартных механизмов для ext4.

Так что фича вполне годная, но нельзя сказать, что нужная всем.

Использование на практике: http://wiki.openvz.org/Ploop/Getting_started

Wednesday 11 April 2012

Как посмотреть максимальный размер поля в MySQL?

Вот такой хитрой командой:
SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table_name' AND table_schema = 'db_name' and column_name = 'column_name';

Источник: http://stackoverflow.com/questions/4990385/determine-max-length-allowed-in-a-column-in-mysql

Monday 2 April 2012

Как в Reg.Panel отключить рекламу хостинга?

vim ./skins/default/css/login_style.css

Блок:
.banner {
position:relative; width:100%; margin-bottom:30px; clear:both;
}

Заменяем на:
.banner {
visibility: hidden; position:relative; width:100%; margin-bottom:30px; clear:both;
}

После этого чудо реклама пропадет.

Тоже самое делаем с блоком "#promo".

А также фиизчески уничтожить блоки disable_vps_menu/disable_hosting_menu в файле skins/default/main_menu.html

Как ускорить работу Wiki Confluence?

В Global Settings выставить Compress HTTP Responses.

Как проверить crontab на наличие ошибок без хорошего знания его синтаксиса?

Легко! Конвертировать его в англйиский чудесным скриптом.

Распакуем его:
gunzip /usr/share/doc/cron/examples/crontab2english.pl.gz

Запускаем:
perl /usr/share/doc/cron/examples/crontab2english.pl
Setting env var MAILTO test@fastvps.ru

Command: (line 2)
Run: /usr/local/ispmgr/sbin/update.sh ispmgr
At: 2am every day

Command: (line 3)
Run: /usr/local/ispmgr/sbin/rotate
At: 1 minute past every hour of every day

Command: (line 4)
Run: /usr/local/ispmgr/sbin/traffic.pl
At: 2:15am every day


Как видите, ошибиться теперь просто невозможно :)