понедельник, 3 сентября 2012 г.

Просмотр логов в браузере (Log.io)

Давно хотел по по другому смотреть логи, приходилось открывать несколько Putty чтобы понять в чем же дело. И тут нахожу статью, вроде все красиво и вкусно, что-то о у меня не получилось, и глядя в комментарии вижу ссылку на еще один просмотрщик логов в браузере.
Впечатлило, решил установить - понравилось. Чуть ниже опишу процесс установки на Ubuntu 12.04 Server/Debian 6

установка node.js зависимостей
sudo apt-get install g++ make git libssl-dev pkg-config curl

затем скачиваем node.js
wget "http://nodejs.org/dist/v0.9.0/node-v0.9.0.tar.gz"

При скачивании, посмотрите, может есть уже более новая версия

Если через прокси скачивать, тогда редактировать /etc/wgetrc
параметры http_proxy и https_proxy


затем
tar -xzvf node-v0.9.0.tar.gz
cd node-v0.9.0/
./configure
make
sudo make install

затем ставим npm
curl -k https://npmjs.org/install.sh | sudo sh
срабатывало через раз, приходилось поступить следующим образом
curl -k https://npmjs.org/install.sh >install.sh
запускаем install.sh

если через прокси
 curl -x http://ip:port -k https://npmjs.org/install.sh | sudo sh


ставим log.io 
sudo npm config set unsafe-perm true
sudo npm install -g --prefix=/usr/local log.io
если через прокси
сначала

export HTTPS_PROXY=http://ip:port
export HTTP_PROXY=http://ip:port
npm config set proxy http://ip:port
npm config set strict-ssl false

и только потом
 

sudo npm config set unsafe-perm true
sudo npm install -g --prefix=/usr/local log.io


действия после установки
mkdir /usr/local/lib/node_modules/log.io/home
mkdir /usr/local/lib/node_modules/log.io/home/.forever
chmod 777 /usr/local/lib/node_modules/log.io/home/.forever

запускаем скрипт /usr/local/lib/node_modules/log.io/bin/install.sh

/etc/log.io/server.conf
редактируем, включаем авторизацию


запускаем сервер
sudo log.io server start


редактируем конфиг harvester.conf 

Ниже привожу свой конфиг, то который при установке - не работает


/* Log.io log harvester configuration */

exports.config = {

  // Log server host & port
  server: {
    host: '127.0.0.1',
    port: 8998,
  },

  // Watch the following log files, defined by label:path mappings
log_file_paths: {
                Auth_logs : "/var/log/syslog-ng/auth.log",
                Sys_logs : '/var/log/syslog-ng/syslog',
                Kern_logs : '/var/log/syslog-ng/kern.log',
                Cron_logs : '/var/log/syslog-ng/cron.log',
                Daemon_logs : '/var/log/syslog-ng/daemon.log',
                Debug_logs : '/var/log/syslog-ng/debug',
                Error_logs : '/var/log/syslog-ng/error',
                Messages_logs : '/var/log/syslog-ng/messages',
                Apache_acc : '/var/log/apache2/access.log',
                Apache_err : '/var/log/apache2/error.log',
                Zabbix_Agent : '/tmp/zabbix_agentd.log',
 
                  },


  instance_name : 'log_node_1'

}


запускаем
sudo log.io harvester start


При изменении harvester.conf  необходимо передергивать демона harvester. И тогда все все изменения тут-же отображаются в браузере.

для входа используем параметры host и port из конфига harvester.conf 

Я нашел только удобство, надеюсь кому-то это поможет
Ссылка на Log.io

пятница, 17 августа 2012 г.

Передача файлов между nix машинами

Возникла необходимость перекинуть большой объем на другой сервер, но была проблема, на сервере не было места для резервирования, поэтому вопрос быстро отпал. Нужно было передать файлы напрямую. Лучше использовать команду scp

для отправки на удаленный сервер
scp path/myfile user@8.8.8.8:/full/path/to/new/location/

Обратно тоже можно:
scp user@8.8.8.8:/full/path/to/file /path/to/put/here 
можно использовать маски * или ?, но для того чтобы передавать со вложенными папками, нужно использовать scp -r. Работает в обоих направлениях.
Самое главное, чтобы права доступа были.

Cacti (rrdtool) переход с 32bit на 64bit OS

Иногда необходимо перехать на новый сервер и захватить с собой , вроде бы перенос выполнен, но графики пустые . Часто дело оказывается в том что rrdtool использовалась на 32-bit машине или  на другой OS, а переносили на 64-bit машину и на другую OS. Для восстановаления работоспособности нужно выполнить 2 простые операции:

На 32-bit машине, выполняем экспорт БД в XML:


#!/bin/sh
for i in `ls *. rrd`
do rrdtool dump $i > $i.xml
done

На другой  машине восстанавливаем БД из XML файлов:




#!/bin/sh
for i in `ls *.xml`
do
/usr/bin/rrdtool restore $i `echo $i |sed s/.xml//g`;
done
 

четверг, 16 августа 2012 г.

SmokePing

Smokeping – утилита мониторинга состояния каналов. Удобна она тем, что отображает все состояния в виде графиков. А графики – это как все отлично понимают, самая наглядная вещь.
Помимо мониторинга задержек, с помощью Smokeping можно контролировать скорость реакции сервисов на запросы. Это тоже довольно интересная тема. По возрастанию времени ответа, допустим, вебсервера, можно судить о скорости генерации страниц и о том, насколько он эффективно работает и коственным путем отмечать повышение нагрузки на него. То же самое можно делать и с почтовым сервером и с ДНС, в общем практически с любым сервисом.


 ./configure --prefix=/opt/smokeping

так может получить, что не все модули perl установлены и получится ошибка
checking checking for perl module 'RRDs'... Failed
checking checking for perl module 'FCGI'... Failed
checking checking for perl module 'CGI'... Ok
checking checking for perl module 'CGI::Fast'... Failed
checking checking for perl module 'Config::Grammar'... Failed
checking checking for perl module 'Digest::HMAC_MD5'... Failed
checking checking for perl module 'LWP'... Ok
тогда ставим модули следующим образом

perl -MCPAN -e 'install <module-name>'

если не стоит RRD тогда его нужно ставить следующим образом

apt-get install rrdtool librrds-perl

затем делаем установку, предварительно скомпилировав

make install


делаем конфигурационный файл из поставки в дистрибутиве
cp /opt/smokeping/etc/config.dist /opt/smokeping/etc/config




создаем конфигурационный файл для Apache

touch /etc/apache2/conf.d/smokeping.conf

пишем в конфиг

<Directory "/opt/smokeping/htdocs/cache" >
    Order deny,allow
            Options None
                </Directory>
alias /smokeping /opt/smokeping/htdocs
 <Directory "/opt/smokeping/htdocs">
         AddHandler fcgid-script .fcgi
                        AllowOverride All
                        Options +ExecCGI
                         DirectoryIndex smokeping.fcgi
                                           </Directory>


копируем скрипт из поставки в дистрибутиве
cp /opt/smokeping/htdocs/smokeping.fcgi.dist /opt/smokeping/htdocs/smokeping
при запуске /opt/smokeping/ping/smokeping , может появиться ошибка

file '/opt/smokeping/etc/smokeping_secrets.dist' is world-readable or writable, refusing it

надо просто дать права записи для группы на файл smokeping_secrets.dist

вот примерный конфиг моего pathnames
imgcache и imgurl должны указывать на одну и туже папку

#sendmail = /usr/sbin/sendmail
imgcache = /opt/smokeping/htdocs/images
imgurl   = ../smokeping/images
datadir  = /opt/smokeping/lib
dyndir   = /opt/smokeping/__cgi
piddir   = /var/run/smokeping
smokemail = /opt/smokeping/etc/smokemail
tmail    = /opt/smokeping/etc/tmail
precreateperms = 2775


Probes файл в котором прописаны, что вы будете использовать для контроля.

*** Probes ***

+ FPing
binary = /usr/bin/fping

+ Curl
binary = /usr/bin/curl
step = 60

# SMTP - echoping smtp
+ EchoPingSmtp
# HTTP - echoping http
#+ HTTP
#+ EchoPingHttp
# DNS - echoping dns
+ EchoPingDNS
+EchoPingHttp

binary = /usr/bin/echoping
forks = 5
offset = 50%
step = 300

Targets файл в котором описываются цели, которые вы будете контролировать. Меню допускает вложенность. Сколько допускается вложений - не знаю, я использую 2.
Payments верхний уровень
Server второй уровень

urlformat формат применяется, если нужен доступ к web сайту отличному от 80 порта. Например HTTPS или по порту 8080

+ Payments

menu = Payments
title = Payments


++ Server
menu = FastMail
title = FastMail_https://myserver.ru
probe = Curl
host = myserver.ru
urlformat = https://%host%/

Вот и все.
Стоит отметить, что возможно использовать схему Master/Slave (главный/подчиненный), когда необходимо получать данные с удаленных серверов.

И еще, не забываем, что есть режим debug - для отладки, reload перезагрузка файлов конфигурации

вторник, 14 августа 2012 г.

Смена пароля root в mysql

Я готовил около 10 серверов, настроив один, я просто клонировал, конечно надо было менять и пароли root в mysql. Бегло порывшись в интернете, нашел только способ, для забывших пароль. Но, кто ищет тот найдет
mysqladmin -u root --password=oldpass password newpass

Почему не запускается ssh

Так получилось, что настраивал на одном из серверов доступ по ключам, и была ошибка в логах
Aug 14 10:54:33 r1204 kernel: [  152.435427] init: ssh main process ended, respawning
Aug 14 10:54:33 r1204 kernel: [  152.440190] init: ssh main process ended, respawning
Aug 14 10:54:33 r1204 kernel: [  152.444963] init: ssh respawning too fast, stopped

Включение детализации DEBUG3  решило проблему, на одном из сайтов нашел
/usr/sbin/sshd -ddd
И вот тут я увидел, что NumberOfPasswordPrompts была не закоментирована, я ведь настроил авторизацию по ключам.
Как только я закоментировал, ssh снова стал работать

пятница, 27 мая 2011 г.

Аутентификация SSH по ключам

С чего все началось, когда на работе появилось с десяток ubuntu серверов (половина тестовых), встал вопрос о повышении безопасного доступа по ssh к серверам. Что можно сделать:

  • длина пароля (>15  символов)
  • аутентификация по ключам 
Т.к. первое было сделано изначально, то второе нужно сделать, чтобы исключить атаку перебора пароля.
Есть два способа:
  1. Генерирование ключей на ubuntu а потом импорт в Putty
  2. Генерирование ключей в Putty а потом импорт в ubuntu
Но, необходимо для начала настроить ssh
редактируем  /etc/ssh/sshd_config
[root@server-dhcp ]# nano /etc/ssh/sshd_config
PermitRootLogin yes  (Если будете заходить на сервер под учетной записью root)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no (Запрет аутентификации по паролю)
UsePAM no
Сохраняем изменения и перезапускаем службу
[root@server-dhcp]#service ssh restart
Теперь создаем папку .ssh в своем домашнем каталоге
[root@server-dhcp ]#mkdir .ssh
Нам нужен пустой файл authorized_keys в папке .ssh
Заходим в созданную папку .ssh
[root@server-dhcp .ssh]#cd .ssh
Создаем пустой файл authorized_keys
 [root@server-dhcp ]#touch authorized_keys
Выставляем права на директорию .ssh/, и все что в ней находится:
[root@server-dhcp .ssh]# chmod -R 600 *
[root@server-dhcp .ssh]# chmod 700 ~/.ssh/

Способ первый
Делаем ключи на ubuntu,  а затем импортируем в Putty
[root@server-dhcp]# ssh-keygen  -t  rsa
Далее нам предлагают ответить на несколько вопросов:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
(по умолчанию ключи создаются в папке .ssh/)(здесь жмем ENTER, если вы не хотите сохранить их в другом месте)
Enter passphrase (empty for no passphrase):       
(здесь вводим парольную фразу для ключа)
Enter same passphrase again: 
(повторяем фразу)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:6a:00:aa:78:ad:fb:70:d5:8c:d9:b8:6a:da:a4:f5 root@server-dhcp
Копируем ключ в  authorized_keys
[root@server-dhcp]#cat  /root/.ssh/id_rsa.pub  >> /home/имя пользователя/.ssh/authorized_keys
 Теперь с нашего сервера из папки /root/.ssh/ забираем с помощью WinSCP или любого другого ftp-клиента, на компьютер с которого будет производиться удаленный доступ,  закрытый ключ – id_rsa
Далее нам необходимо преобразовать наш закрытый ключ, в ключ поддерживаемый Putty. Делаем это с помощью Puttygen.
Если при импорте получили ошибку
попробуйте не простой puttygen, а developer snapshot, там добавили поддержку AES ключей. А все из-за того, что теперь ключи шифруются по стандарту AES-128 вместо 3DES
Вводим парольную фразу
Сохраняем наш новый ключ
Вот и все!

Способ второй

Генерируем ключ
Вводим ключевую фразу, и комментарии! Ни в коем случае не используйте кириллицу! 
Сохраняем секретный ключ.
Публичный ключ отображается в верхнем поле «Key» и имеет вид:
«ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-».
Копируем содержимое поля «Public key for pasting into OpenSSH authorized_keys file» в оперативную память и закрываем PuttyGen.
Теперь нужно вставить скопированное в /home/имя пользователя/.ssh/authorized_keys
ВАЖНО! ключ в файле должен быть записан в одной строке без переносов.

Перепроверили!

Теперь нужно настроить Putty на работу с ключом.
Запустите Pageant
И добавьте приватный ключ (расширение ppk)
Введи вашу ключевую фразу
Теперь ваш ключ будет в списке.

Запускаем Putty
Вводим имя пользователя
Выбираем наш приватный ключ (расширение ppk)

Поздравляем!