вторник, 3 июля 2012 г.

Высокая загрузка MySQLd & leap second.

Внезапно. На серверах скакнула загрузка, причина быстро выяснилась - mysqld жрал процессор как сумасшедший. Без запросов (потушил php-fpm) сжирал стабильно 50-70% процессора. Было найдено следующее решение без перезагрузки системы:

# service ntpd stop
# date -s "`date`"
# service ntpd start


И mysqld успокоился. Как говорится - "Не думай о секундах свысока".

пятница, 25 мая 2012 г.

Запланированная перезагрузка маршрутизатора cisco.

Возникла необходимость в сабже. Имеется устройство:

Router1#sh ver
Cisco IOS Software, C870 Software (C870-ADVIPSERVICESK9-M), Version 12.4(15)T7, RELEASE SOFTWARE (fc3)
ROM: System Bootstrap, Version 12.3(8r)YI4, RELEASE SOFTWARE

Router1 uptime is 22 minutes
System returned to ROM by power-on
System restarted at 15:26:54 FET Thu May 24 2012
System image file is "flash:c870-advipservicesk9-mz.124-15.T7.bin"

Cisco 871 (MPC8272) processor (revision 0x300) with 118784K/12288K bytes of memory.
Processor board ID FHK124728XM
MPC8272 CPU Rev: Part Number 0xC, Mask Number 0x10
5 FastEthernet interfaces
128K bytes of non-volatile configuration memory.
28672K bytes of processor board System flash (Intel Strataflash)

Клиент сильно желает перегружать ежедневно ночью. Попытка решить задачу с помощью команды reload не привела к ожидаемым результатам, необходимо каждый раз подтверждать перезагрузку, что не подходит. После недолгих поисков было найдено решение - использовать EEM (Embedded Event Manager).

Router1# conf t
Router1(config)#event manager applet RELOAD-ROUTER

Router1(config-applet)#event timer cron name "RELOAD" cron-entry "0 6 * * *"

Router1(config-applet)#exit

четверг, 24 мая 2012 г.

Как сохранить устанавливаемые с помощью yum rpm-пакеты

Иногда бывает полезно сохранять устанавливаемые с помощью yum пакеты. Например, когда внезапно понадобилась старая версия пакета, которой уже нет в публичном доступе.
Нижеследующие действия производились на RHEL6, но в 99% случаев подойдут и для CentOS, SL, Fedora.
sudo vi /etc/yum.conf
# Прописываем/изменяем переменную cachedir, в которой будут сохраняться устанавливаемые с помощью yum пакеты
cachedir=/var/cache/yum/$basearch/$releasever

# keepcache=0, означает удалять пакеты после успешной установки. Меняем на 1.
keepcache=1

Сохраняем изменения. Теперь в указанной выше директории будут сохраняться пакеты. Их можно будет устанавливать либо с помощью yum localinstall SOME_PACKAGE.rpm или rpm -ivh SOME_PACKAGE.rpm


Литература:
man yum.conf

среда, 9 мая 2012 г.

SSH, проброс портов

Собственно, довольно таки избитая тема. Оставлю небольшую заметку себе на память.
Предыстория: На работе начались проблемы с ДНС-сервером под Win2008R2, я в это время находился в заслуженном отгуле. Необходимо было подключиться и исправить. Своего ноута с настроенным впн-клиентом под рукой не оказалось - пришлось пользоваться ноутом друга. Настраивать там впн не имело особого смысла, потому решил сделать проброс порта через SSH.
Итак, вот она заветная строчка:
ssh -p 3821 -L 3389:192.168.0.2:3389 USERNAME@DOMAIN.COM
где
-p 3821 порт, на котором висит SSHD, можно не указывать, если используется стандартный 22-й. В моем случае такой.
-L 3389:192.168.0.2:3389. Формат данной записи такой (согласно man ssh)
-L [bind_address:]port:host:hostport. Строчка говорит о том, что данный порт на локальном хосте (клиенте) будет пробрасываться на указанный хост и порт на удаленной стороне. Т.е. bind_address я НЕ указываю (в моем случае), затем идет локальный порт 3389 (можно указать другой), затем IP-адрес и порт удаленной машины.
USERNAME@DOMAIN.COM имя пользователя и домен для аутентификации (НЕ доменные, не путать)

Кроме того, перед выполнением данных действий необходимо убедиться, что на стороне сервера разрешена опция AllowAgentForwarding в файле конфигурации sshd.
[jack@FW ~]$ sudo grep Allow /etc/ssh/sshd_config
AllowAgentForwarding yes


Итак, после ввода данной строчки и успешной аутентификации, сворачиваем клиент в сторону, но НЕ закрываем. Открываем RDP-клиент и пробуем соединиться на 127.0.0.1:3389. Получилось? Тогда вперед.
PS: Проблема с ДНС-сервером была решена.

Литература:
man ssh
http://www.lissyara.su/articles/freebsd/trivia/ssh_port_forwarding/

суббота, 5 мая 2012 г.

Установка nodejs на RHEL6.2

Краткая заметка на память о сабже.

1. Скачать пакет с информацией о репозитории:
wget -c http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm

2. Установить скачанный на предыдущем шаге пакет
sudo rpm -ivh nodejs-stable-release.noarch.rpm
или
sudo yum localinstall nodejs-stable-release.noarch.rpm

3. Установить nodejs
sudo yum install nodejs

4. Создать тестовый js-файл для проверки работы сервера:
cat test.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8888, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8888/');


5. Запуск сервера nodejs
sudo nodejs test.js

четверг, 5 апреля 2012 г.

Canon MF3110 и Windows 7 64-бит

Дано: Windows7 64 бит, принтер Canon MF3110.
Задача: заставить работать.
На сайте производителя имеются драйвера только под 32-х битную версию. Переставлять Windows заказчик не дает. После непродолжительных поисков было найдено решение народных умельцев. Небольшая заметка на память.
Для данного устройства под 64-битную Windows подходят драйвера для LaserBase MF5770 того же производителя.
1. Итак, скачиваем драйвера отсюда - http://software.canon-europe.com/software/0037099.asp
2. Распаковываем во временную папку.
3. Добавить принтер с помощью мастера в Панель Управления -> Устройства и Принтеры
3.1 выбрать Сетевой принтер
3.2 Использовать существующий порт, выбрать USB
3.3 Установка с диска, выбрать папку с драйвером, выбрать файл CNXRPKA6
3.4 Выбрать Canon MF5700 Series
3.5 Согласиться "Заменить текущий драйвер"

Литература:
http://genmed-root.blogspot.com/2011/03/canon-mf3110-windows-7-x64.html

среда, 4 апреля 2012 г.

Настройка awstats для снятия статистики proftpd


Предположим пакет proftpd установлен и настроен. Задача сводится к получению статистики из файла /var/log/xferlog (путь к файлу может отличаться, проверьте директиву TransferLog в конфигурационном файле proftpd.conf) и приведению ее к удобочитаемому виду.

Пример лог-файла xferlog
Wed Jan 01 19:29:35 2012 1 192.168.1.1 102 /home/test/123.txt b _ o r test ftp 0 * c

Подробную информацию о том, что именно записывается в данный лог-файл можно получить из документации, в частности описание директивы LogFormat.

Отредактировать файл /etc/awstats/awstats.DOMAIN.COM.conf (приведу лишь измененные строчки)
# Файл с данными
LogFile="/var/log/xferlog"
# Тип лог-файла, для web-сервера W, F — для ftp и т.п.:
LogType=F
# Строка, описывающая формат лог-файла
LogFormat="%time3 %other %host %bytesd %url %other %other %method %other %logname %other %code %other %other"
# Указываем имя домена
SiteDomain="DOMAIN.COM"
# Указываем все возможные псевдонимы домена
HostAliases="localhost 127.0.0.1 www.DOMAIN.COM ftp.DOMAIN.COM"
# В какой папке будут лежать БД awstats, на основе этих данных awstats сгенерирует отображаемую статистику.
DirData="/var/www/awstats/DOMAIN.COM"
# Путь к папке с иконками
DirIcons="/awstats/icon/"

Добавляем в cron:
crontab -e
30 * * * * /var/www/awstats/awstats.pl -config=DOMAIN.COM -update >/dev/null
40 * * * * awstats_buildstaticpages.pl -config=DOMAIN.COM -update -lang=ru -awstatsprog=/var/www/awstats/awstats.pl -dir=/var/www/awstats/DOMAIN.COM/ >/dev/null

Перезапуск crond.
service crond restart

Настройки виртуального хоста nginx можно взять из моей предыдущей заметки http://jskyworker.blogspot.com/2011/10/awstats-web-nginx.html

Литература: