Pull to refresh

Comments 20

>Если точнее, надо было решать проблемы с распределением возросшей нагрузки — наши фронты стали с трудом справляться со своей задачей.
>Ранее в качестве балансировщика на некоторых фронтах у нас использовался HAProxy.

На самом деле мы использовали собственный балансировщик — это было обусловлено необходимостью двухстороннего шифрования канала по ГОСТ. Когда такая необходимость отпала мы стали думать о более вменяемом балансировщике, HAProxy отпал по причине неумения терминировать ssl, а Stunnel не давал нужной производительности.
Молодцы, что не «зажали» разработку и на google code выложили :)
Особого смысла скрывать разработку нет:) Так она, возможно, заживет своей жизнью независимо от нас
Nginx и ГОСТ вполне дружат, при желании.
Я сначала прочитал название как ustas, по моему больше подходит :)
То что надо, спасибо!
Еще бы плагин к munin
Отпостили в рассылке nginx'а. Вопрос в том, решится ли Сысоев принять модуль в основную ветку
нет, не решиться. Максим тебе ответил почему твой модуль плох.
99.9%, что нет — он нужен крайне редко и показывает статистику только для одного воркера.
Претензии из рассылки я понял. Модуль мы продолжим развивать, поскольку нам он удобен, и по крайней мере позволяет отслеживать количественные соотношения между бэкендами по запросам и ошибкам. Если по-вашему юзкейсы для модуля возникают не у многих (о чем я бы не стал рассуждать столь категорично), значит развивать придется без поддержки сообщества.
зачем имплементировать эти счетчики модулем, если всю ту же информацию можно получить через логи nginx-а?
Дак тут не только счётчики, ещё же видно какой сервер попал в грей лист, т.е. это своего рода мониторинг апстрима. Это можно увидеть в логах?
Если да, то может и проще, но не так интересно.

P.S. Логи мы тоже считаем, но в несколько другом разрезе.
Да, в логах это увидеть можно, т.к. запросов на сбитый апстрим в текущий момент (или в последнюю минуту) нет. Логичнее было бы сделать подсветку — чем ярче цвет, тем больше запросов идет на апстрим, если цвет серый их или нет или очень мало.
В мониторинге можно поставить алерт на величину производной счетчика (алерт срабатывает если минуту назад было например 100 запросов, а в последнюю 5, а не +-10. я так обычно делаю)
Вы правы, данные можно выдирать и из логов. Повесить еще один процесс, занимающийся парсингом логов (которые у нас пишутся с дикой скоростью), приделать к нему веб-интерфейс, не забыть про ротацию и архивирование. Не будет веб-интерфейса для выключения бэкендов. Так ли уж это менее трудозатратно?
Дело в том, что код nginx довольно стабилен сам по себе, и когда вы подключаете к нему свой код в рамках основного — это может как-то влиять на основною функциональность. Мало ли где вы воткнете синхронный вызов например, и упадет производительность, или будет ошибка по управлению памяти. А узнать о том что работает что-то не так можно только пересобрав весь сервер и сравнив, т.е. проблему может быть сложно даже увидеть.

В то же время снаружи код в виде анализатора логов будет выглядеть практически точно так же. Можно же сделать его даже демоном — и получать данные онлайн.
Модуль весьма полезен для решения наших задач.
Избавляет от дополнительных клиентов-парсеров.
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c: In function 'ngx_http_ustats_create_response_full_html':
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:646: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:706: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:706: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:710: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:712: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:717: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:787: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:819: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:819: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:825: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:827: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:830: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:837: error: 'struct ' has no member named 'num_reqs'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:842: error: 'struct ' has no member named 'num_http_499'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:847: error: 'struct ' has no member named 'num_http_500'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:852: error: 'struct ' has no member named 'num_http_503'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:857: error: 'struct ' has no member named 'num_tcp_error'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:862: error: 'struct ' has no member named 'num_http_read_timeout'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:867: error: 'struct ' has no member named 'num_http_write_timeout'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c: In function 'ngx_http_ustats_toggle':
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:956: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:966: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:981: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:994: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c: In function 'ngx_http_ustats_create_response_upstream_xml':
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1066: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1070: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1073: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1077: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1094: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1098: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1105: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1111: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1119: error: 'struct ' has no member named 'num_reqs'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1120: error: 'struct ' has no member named 'num_http_499'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1121: error: 'struct ' has no member named 'num_http_500'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1122: error: 'struct ' has no member named 'num_http_503'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1123: error: 'struct ' has no member named 'num_tcp_error'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1124: error: 'struct ' has no member named 'num_http_read_timeout'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1125: error: 'struct ' has no member named 'num_http_write_timeout'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c: In function 'ngx_http_ustats_create_response_backend_xml':
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1176: error: 'ngx_http_upstream_server_t' has no member named 'name'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1220: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1249: error: 'ngx_http_upstream_server_t' has no member named 'name'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1254: error: 'struct ' has no member named 'server'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1271: error: 'struct ' has no member named 'num_reqs'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1272: error: 'struct ' has no member named 'num_http_499'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1273: error: 'struct ' has no member named 'num_http_500'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1274: error: 'struct ' has no member named 'num_http_503'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1275: error: 'struct ' has no member named 'num_tcp_error'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1276: error: 'struct ' has no member named 'num_http_read_timeout'
/usr/ports/www/nginx/ustats/ngx_http_ustats_module.c:1277: error: 'struct ' has no member named 'num_http_write_timeout'
*** Error code 1

Stop in /usr/ports/www/nginx/work/nginx-0.8.53.
сначала пач накати
собираю под Linux

Linux ***** 2.6.32-27-generic-pae #49-Ubuntu SMP Thu Dec 2 00:07:52 UTC 2010 i686 GNU/Linux

выкачал последнюю версию.

/nginx-0.8.53
./configure \
--with-http_stub_status_module \
--with-http_realip_module --prefix=/usr/local/nginx \
--add-module=src/http/modules/ustats

1. если не сделать в конфигурации

location /ustats {
ustats on;
}

в логах имеем:

2011/02/09 14:15:35 [notice] 28816#0: signal 17 (SIGCHLD) received
2011/02/09 14:15:35 [alert] 28816#0: worker process 28854 exited on signal 11

2. добавлялем этот локейшен

все заводится, но если запросить /ustats

так же валится с 11 сигналом

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/0.8.53
built by gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
configure arguments: --with-http_stub_status_module --with-http_realip_module --prefix=/usr/local/nginx --add-module=src/http/modules/ustats
Sign up to leave a comment.

Articles