Публикации

Почему Monit создает zombie процесс ruby (Rails+Puma)?

Добрый день! Возникла проблема на production при мониторинге процессов Rails приложения c сервером Puma. Для мониторинга и автозапуска использую Monit. Он успешно запускает Puma-сервер, worker'ы запускаются, начинают отжирать ресурсы, как положенно, но затем, спустя секунд 20, worker'ы становятся zombie с нулями ресурсов, и затем пытаются снова запуститься, и всё переходит в замкнутый цикл — ресурсы есть — зомби — ресурсы есть. Соответственно приложение на запросы не отвечает. Вот скрипт для Monit в /etc/monit/conf.d/puma.monit:

check process puma with pidfile /usr/local/src/my_site/shared/tmp/puma.pid group puma start program = "/bin/su username -c 'cd /usr/local/src/my_site/current && ( RACK_ENV=production /usr/bin/env bundle exec puma -C /usr/local/src/my_site/shared/config/puma.rb --daemon )'" stop program = "/bin/su username -c 'cd /usr/local/src/my_site/current && ( bundle exec pumactl -P /usr/local/src/my_site/shared/tmp/puma.pid stop)'"

OS — Linux 3.13.0-042stab111.12 (Ubuntu 14.04, x86_64, English)
Monit version 5.14

Если же делать запуск Puma вручную из консоли от user'a, то все работает прекрасно, но естественно нет мониторинга и автозапуска после ребута сервера. (cd /usr/local/src/my_site/current && ( RACK_ENV=production /usr/bin/env bundle exec puma -C /usr/local/src/my_site/shared/config/puma.rb --daemon )
Может кто-то сталкивался с такой проблемой, буду очень благодарен за совет? Курил маны, гуглил форумы очень долго — вроде настроил все верно…

Что мешает web-серверу?

Здравствуйте. Помогите пожалуйста решить проблему. На сервере спокойно жила панель управления webmin(на 10000 порту), так же крутился апач. После установки некоторого ПО, все это перестало быть доступным. Не понимаю что может этому мешать.
nmap localhost

Starting Nmap 6.40 ( nmap.org ) at 2015-10-24 19:41 EDT
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0012s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql
10000/tcp open snet-sensor-mgmt
Читать дальше

Как организовать автоматизацию включения и выключения серверов в облаке Microsoft Azure?

Требуется организовать возможность включения и выключения серверов в облаке пользователями. Пользователь должен заполнять форму когда ему нужен доступ к серверу, желательно чтобы эта форма была на каком-либо общедоступном ресурсе- типа google drive. Пользователь заполняет поля Включить с ВРЕМЯ до ВРЕМЯ, после этого меняется график включения серверов. После этого, отправляем письмо группе рассылке с текстом «Пользователь ИМЯ_ПОЛЬЗОВАТЕЛЯ», изменил время работы серверов с 07:00 до 23:45.

Сейчас включение и выключение организовано с помощью powershell и планировщика задач на одном из серверов в облаке, корректировка графика производится администратором.
Как возможно автоматизировать процесс обработки заявок от пользователей о времени включения-выключения серверов?

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

1. Делаем веб-страницу с авторизацией в домене Windows. Без сохранения где-либо пароля доменной учетной записи. Нужна прозрачная авторизация для доменных авторизованных пользователей.
Читать дальше

В чем ошибка смены пароля в roundcube?

Добрый день! Имеется связка Openldap + dovecot + postfix + roundcube на Centos7. Авторизацию dovecot + postfix + roundcube я все настроил через Openldap. Я без проблем логинюсь в roundcube, аутлук, почта отправляется и приходит. Но вот встала задача сделать так чтобы производилась смена пароля в roundcube. Попробовал сменить пароль в текущей конфигурации получил ошибку «Не могу сохранить новый пароль. Ошибка соединения.»
И дальше начались пляски с бубном.
Первое что пришло в голову это отсутствие прав записи у учетных записей служб в опенлдап, добавил возможность записывать и видеть пароли — резутат тот же(
Менял тип шифрования пароля через «phpldapadmin»,
менял значения в файле (/usr/share/roundcubemail/plugins/password/config.inc.php ) "$config['password_ldap_encodage'] = 'ssha';" (было и clear и md5 и crypt),
пробовал добавлять «default_pass_scheme = CRYPT» в файл "/etc/dovecot/dovecot-ldap.conf.ext"
пробовал добавлять «cram-md5» в файле "/etc/dovecot/conf.d/10-auth.conf" в строке «auth_mechanisms = plain login», но тогда авторизация ломается, тк пытается авторизовываться через cram-md5.
В логах тоже ничего полезного не пишут (смотрел /var/log/maillog)
Помогите разобраться в чем проблема?!
немного конфигов
подключение довкот /etc/dovecot/dovecot-ldap.conf.ext
hosts = server.com:389 auth_bind = yes dn = uid=dovecot,ou=services,dc=server,dc=com dnpass = pass ldap_version = 3 base = dc=server,dc=com deref = never scope = subtree user_attrs = mailHomeDirectory=home,uidNumber=uid,gidNumber=gid user_filter = (&(objectClass=PostfixBookMailAccount)(mail=%u)) pass_attrs = mail=user,userPassword=password
Читать дальше

Sphinxsearch respawning too fast, stopped; Куда копать?

@ubuntusrv02:/var/log$ tail -f syslog

Oct 19 11:14:40 ubuntusrv02 kernel: [860524.972567] init: sphinxsearch main process (25847) terminated with status 1
Oct 19 11:14:40 ubuntusrv02 kernel: [860524.972575] init: sphinxsearch main process ended, respawning
Oct 19 11:14:40 ubuntusrv02 kernel: [860524.978538] init: sphinxsearch main process (25851) terminated with status 1
Oct 19 11:14:40 ubuntusrv02 kernel: [860524.978544] init: sphinxsearch respawning too fast, stopped

@ubuntusrv02:/var/log$ ls -la
total 23944
drwxrwxrwx 6 root syslog 4096 Oct 19 06:29.
drwxr-xr-x 13 root root 4096 Jul 5 12:10…
-rwxrwxrwx 1 root root 0 Oct 1 06:45 alternatives.log
-rwxrwxrwx 1 root root 432 Oct 1 06:44 alternatives.log.1
drwxrwxrwx 2 www-data www-data 4096 Oct 18 06:54 apache2
drwxrwxrwx 2 root root 4096 Oct 1 06:45 apt
-rwxrwxrwx 1 root root 0 Oct 1 06:45 aptitude
-rwxrwxrwx 1 root root 455 Sep 21 15:05 aptitude.1.gz
-rwxrwxrwx 1 syslog adm 7099731 Oct 19 11:16 auth.log
Читать дальше

Iproute2, пять внешних IP, LARTC, почему не работает?

Задача такая
Есть внешний сервер, к нему подключены 5 внешних (Белых) IP
Нужно поднять на нем 5 соксов, на разных портах, каждый сокс должен смотреть через свой внешний IP. Этакий прокси-роутер :)

Что имеем:

ifconfig:

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:1239 errors:0 dropped:0 overruns:0 frame:0 TX packets:1141 errors:0 dropped:1 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:92654 (90.4 KiB) TX bytes:122191 (119.3 KiB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:93.170.123.191 P-t-P:93.170.123.191 Bcast:93.170.123.191 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 venet0:1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:93.170.123.201 P-t-P:93.170.123.201 Bcast:93.170.123.201 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 venet0:2 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:93.170.123.208 P-t-P:93.170.123.208 Bcast:93.170.123.208 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 venet0:3 Link encap:UNSPEC HWaddr
Читать дальше

Можно ли в Nginx наследовать блоки?

Доброй ночи!
Можно ли в Nginx наследовать локали как инклюды или миксины?

К примеру так:
server { listen 80; location / { proxy_pass @node_proxy; # инклюд миксины } location /test/ { add_header Tester '1'; proxy_pass @node_proxy; # инклюд миксины } location @node_proxy { 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_pass 127.0.0.1:1337; } }

Почему cnid_metad загружает процессор?

Прив!
ОС: Ubuntu 14.04.3 x64
Недавно стал супер-сильно (до 60 градусов) греться ноут и шуметь вентилятор.
top показывает процесс cnid_metad, жрущий ~ 96% ресурсов.
Почитал что это демон
cnid_metad waits for requests from afpd to start up instances of the cnid_dbd daemon. It keeps track of the status of a cnid_dbd instance once started and will restart it if necessary. cnid_metad is normally started at boot time from /etc/rc or equivalent and runs until shutdown. afpd needs to be configured with the -cnidserver option in afpd.conf in order to access cnid_metad. It is possible to run more than one instance of cnid_metad on the same machine if different values for the interface and/or port are specified with the -h and -p options.
Сделал sudo kill -9 cnid_metad, вроде ниче не сломалось, нагрузка снизилась, кулер не шумит.
Насколько знаю, процесс существовал и раньше, но таких нагрузок не было. Посоветуйте, можно ли выпилить демона и как вы контролируйте процессы?

Как перенести нагруженную БД MySQL на другой сервер и держать её синхронизированной?

Здравствуйте.
Хочу перенести сайт на другой сервер. Файлы перенести не проблема, а с переносом базы данных есть проблема.
БД ~ 7 гб, свыше 20000000 записей. Пока делается бэкап, сливается rsync'ом, импортируется, в базе данных на старом сервере уже могут добавиться тысячи записей и часть записей модифицироваться. Есть ли какие-то инструменты для синхронизации БД, чтобы после обновления A-записи у доменного имени, данные в обоих базах были актуальны и в последствии отключить БД на старом сервере?
Проблема усугубляется ещё и тем, что старый сервер(FreeBSD 8.4) с довольно древним ПО и поставить туда какую-нибудь программу может быть проблематично из-за неразрешённых зависимостей.
Версия MySQL на старом сервере 5.1.68
Версия MySQL на новом сервере 5.5.45-37.4-log — Percona Server

Как правильно пропарсить access.log с python?

Всем привет. Есть задача сформировать таблицу, содержащую время и коды ответа для запросов. Например:
Time, 200, 30x, 40x, 50x 10/Aug/2015:12:12:01, 7, 2, 0, 1
То есть, для указанного времени наблюдалось 7 запросов с ответом «200», 2 — вида «302» или «304», и так далее.

Строка access.log имеет следующий шаблон:
8.8.8.8 — - [10/Aug/2015:12:12:01 +0000] «GET /robots.txt HTTP/1.1» 200 708 "-" «Mozilla/5.0 (compatible; Googlebot/2.1; +www.google.com/bot.html)»

На python сформировал код вида:
#!/usr/bin/python import re for string in open(«access.log»,«r»): ws = string.split() i=0 r=0 n=0 x=0 matchi = re.findall(r'^2..',ws[8]) if matchi: i=i+1 matchr = re.findall(r'^3..',ws[8]) if matchr: r=r+1 matchn = re.findall(r'^4..',ws[8]) if matchn: n=n+1 matchx = re.findall(r'^5..',ws[8]) if matchx: x=x+1 print ws[3].replace('[',''), i, r, n, x
На выходе получаю:
10/Aug/2015:12:12:01 1 0 0 0 10/Aug/2015:12:12:01 0 1 0 0 10/Aug/2015:12:12:01 0 1 0 0 10/Aug/2015:12:12:01 0 1 0 0
Вопрос: а как теперь сложить значения и вывести уникальное время(какие средства python или алгоритм использовать), то есть, чтоб для данного примера вывода получилось:
10/Aug/2015:12:12:01 1 3 0 0