Мониторинг версий ПО на серверах.

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Мониторинг версий ПО на серверах.

Сообщение BigBrother »

Здорова.
Решаю задачу по мониторингу версий софта (nginx,php,memcached,mysql ...) на рабочих серверах centos. Решил делать через zabbix (2.0.6), т.к. серваки подключены к zabbix`у и уже давно мониторятся, Написал скрипт soft_ver.sh:

Код: Выделить всё

#!/bin/bash

cd /usr/local/zabbix/scripts
export HOME=/usr/local/zabbix/scripts
name=$1

#NGINX
if [ "$name" = "nginx" ] && [ -e /usr/local/nginx/sbin/nginx ]; then
nginx_cur=`lynx --dump http://nginx.org/en/download.html  | grep -A 2 -e "Stable version" | awk '{print $2}' | grep nginx | sed -r 's/\[24\]//'`
nginx_srv=`/usr/local/nginx/sbin/nginx -v &> tmp && cat tmp | awk '{print $3}' | sed 's/\//-/g' && rm -f tmp`
if [ "$nginx_srv" == "$nginx_cur" ]; then
        echo 1
else
        echo 0
fi
fi

#MYSQL
if [ "$name" = "mysql" ] && [ -e /usr/bin/mysql ]; then
mysql_cur=`lynx --dump http://www.percona.com/downloads/Percona-Server-5.5/LATEST/RPM/rhel6/x86_64/ | grep client-55 | sed '2d' | sed -r 's/(\[42\]Percona-Server-client-55-|-rel30.2.509.rhel6.x86_64.rpm)//g' | sed -r 's/\s+//g'`
mysql_srv=`mysql -V | awk '{print $5}' | sed -r 's/,//g'`
if [ "$mysql_srv" == "$mysql_cur" ]; then
        echo 1
else
        echo 0
fi
fi

...

и так далее, для любого софта. В агенте прописал

Код: Выделить всё

UserParameter=soft_ver[*],/usr/local/zabbix/scripts/soft_ver.sh $1

Код: Выделить всё

[root@srv scripts]# ll /usr/local/zabbix/scripts/soft_ver.sh
-rwxr-xr-x 1 zabbix zabbix 2509 Май 21 16:31 /usr/local/zabbix/scripts/soft_ver.sh

Скрипт расплодил на все сервера с помощью fabric`и. Включаю мониторинг и вижу, что частенько мониторинг через этот скрипт становится не поддерживаемым, а на некоторых серверах, я вообще получаю проблему

Код: Выделить всё

[root@ATS scripts]# ../sbin/zabbix_agentd -t soft_ver[mysql]
Сигнал таймера
[root@ATS scripts]#

В логах с дебаг-режимом ничего подозрительного в этот момент нет.
Хотя локально скрипт отрабатывает хорошо на всех серверах.

Код: Выделить всё

[root@srv scripts]# ./soft_ver.sh mysql
0
[root@srv scripts]#


В связи с этим, у меня вопрос:
  • как можно решить эту задачу с мониторингом версий софта и уведомлениями, более грамотно и красиво??
  • почему я получаю сообщение "Сигнал таймера" (о котором я говорил выше), вместо нормальной работы?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Мониторинг версий ПО на серверах.

Сообщение SLEDopit »

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

А для этого у того же munin (возможно, у zabbix'a тоже) есть готовый скрипт проверки обновлений в yum.

Ну и вместо fabric, я бы посмотрел больше в сторону puppet и компании. Fabric, имхо, больше для деплоя самописных веб-приложений больше подходит, нежели для управления сервером.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Pchol
Сообщения: 88

Re: Мониторинг версий ПО на серверах.

Сообщение Pchol »

Либо если есть желание сильной кастомизации проверок и периодического запуска каких то своих "скриптов", то можно посмотреть на rundeck.
... Весь ужас заключается в том что предают только свои ...
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

SLEDopit писал(а):
21.05.2013 20:50
Вы всё время собираете весь этот софт из последних стабильных версий с сайта разработчика?

Да, ибо в rhel стандартных репозиториях, часто нет нужного софта, а если есть то часто нет последних версий. Сторонние репозитории не использую (кроме тех, в которых 1 программный продукт, например percona mysql), уже не раз натыкался, что они ломают систему по зависимостям + то, как собран в них нужный пакет, очень часто не устраивает.
SLEDopit писал(а):
21.05.2013 20:50
Если нет, тогда выбранный вами способ проверки большого смысла не имеет. Версию нужно сравнивать со стабильной версией из репозитория.
А для этого у того же munin (возможно, у zabbix'a тоже) есть готовый скрипт проверки обновлений в yum.

Почему? А если в репе нет последней, стабильной версии? Насчет munin: я с ним почти не работал, но как я понию, предложеный вами скрипт тоже необходимо будет расплодить по всей ферме серверов, и на каждом из них запускать его, да? Если так, тогда мой вариант ничем не отличается в подходе, от предложенного вами.
SLEDopit писал(а):
21.05.2013 20:50
Ну и вместо fabric, я бы посмотрел больше в сторону puppet и компании. Fabric, имхо, больше для деплоя самописных веб-приложений больше подходит, нежели для управления сервером.

Смотрел я немного на эту "компанию". Остановился на CFEngine, но так и не понял, как я могу сделать: "тыц" кнопку, и на 5 серверах сделался nginx restart, а на 10 серверах phpfpm reload, при этом я сразу вижу где все ОК, а где НЕ ОК и все это в интерактивном режиме (если потребуется) и с учетом того, что некоторый софт, его бинарники, конфиги и скрипт инициализации могут находится в нестандартных местах. Возможно CFEngine NOVA (web интерфейс) позволяет это сделать, но он платный, а я работал с community версией, через консоль. А вот с фабрикой питоновской, это понятно как делается, надо только логику скрипта правильно написать и все.

Pchol писал(а):
22.05.2013 00:00
посмотреть на rundeck.

Спасибо. Первый раз про него слышу, посмотрим...
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Мониторинг версий ПО на серверах.

Сообщение SLEDopit »

BigBrother писал(а):
22.05.2013 12:42
А если в репе нет последней, стабильной версии?
В чём смысл гнаться за "последней, стабильной версией"?
Вот сейчас последнее стабильное ведро 3.9.3, оно у вас уже стоит? Нет? А чем же оно хуже апача или nginx'а? Последнее же и стабильное. (:
имхо, на боевом сервере главное не "стабильное и последнее", а "стабильное и проверенное". а "проверенное" и "последнее" - взаимоисключающие понятия.
BigBrother писал(а):
22.05.2013 12:42
конфиги и скрипт инициализации могут находится в нестандартных местах
вы специально от скуки конфиги в нестандартные места разносите, чтобы в будущем подольше возиться надо было? (:

впрочем, что-то я отошёл в сторону от обсуждаемого вопроса.

BigBrother писал(а):
22.05.2013 12:42
Если так, тогда мой вариант ничем не отличается в подходе, от предложенного вами.
отличается. вёрстка сайта куда более нестабильна ( и подвержена изменениям ), нежели yum, и все ваши регулярки могут весьма регулярно падать (по сравнению с yum).
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Pchol
Сообщения: 88

Re: Мониторинг версий ПО на серверах.

Сообщение Pchol »

В паппете такой "кнопкой" может служить puppet kick
Для визуального монтиоринга того, когда прошли последние "сборки" можно использовать puppet dashboard
Вцелом же в puppet'e есть функционал позволяющий делать некоторые действия в случае изменения какого либо файла. Тоесть в случае если вы изменили конфиг nginx'a при его раскатке можно осуществить проверку этого конфига (nginx -t), и в случае успеха reload.
Мне кажеться, в вашем частном случае, более правильным подходом по управлению пакетами было бы, создание своего репозитория, и установка его на всех ваших серверах. А в puppet'е прописывать, какие версии ставить.
... Весь ужас заключается в том что предают только свои ...
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Мониторинг версий ПО на серверах.

Сообщение Bluetooth »

Pchol писал(а):
22.05.2013 17:04
В паппете такой "кнопкой" может служить puppet kick
Для визуального монтиоринга того, когда прошли последние "сборки" можно использовать puppet dashboard
Вцелом же в puppet'e есть функционал позволяющий делать некоторые действия в случае изменения какого либо файла. Тоесть в случае если вы изменили конфиг nginx'a при его раскатке можно осуществить проверку этого конфига (nginx -t), и в случае успеха reload.
Мне кажеться, в вашем частном случае, более правильным подходом по управлению пакетами было бы, создание своего репозитория, и установка его на всех ваших серверах. А в puppet'е прописывать, какие версии ставить.

Да, верно. Причем в паппете можно просто на нужные пакеты прописать ensure=>latest
Спасибо сказали:
Pchol
Сообщения: 88

Re: Мониторинг версий ПО на серверах.

Сообщение Pchol »

Лично я с опаской отношусь к latest в продакшене. Обычно достаточно installed / либо четкое указание версии.
У нас во внутренний репозиторий, к сожалению, могут попадать версии софта с breaking changes, поэтому обновление всегда контролируемо (хотя бы проверка release notes на наличие этих самых "ломающих изменений" ).
... Весь ужас заключается в том что предают только свои ...
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Мониторинг версий ПО на серверах.

Сообщение Bluetooth »

Pchol писал(а):
22.05.2013 21:46
Лично я с опаской отношусь к latest в продакшене. Обычно достаточно installed / либо четкое указание версии.
У нас во внутренний репозиторий, к сожалению, могут попадать версии софта с breaking changes, поэтому обновление всегда контролируемо (хотя бы проверка release notes на наличие этих самых "ломающих изменений" ).

Я тоже с опаской отношусь, но тут особый случай - ведь софт нужный человек собирает сам, так что latest тут - самое то. Ведь в этом случае в репо попадет только точно работающее ПО.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

SLEDopit писал(а):
22.05.2013 12:56
BigBrother писал(а):
22.05.2013 12:42
А если в репе нет последней, стабильной версии?
В чём смысл гнаться за "последней, стабильной версией"?
Вот сейчас последнее стабильное ведро 3.9.3, оно у вас уже стоит? Нет? А чем же оно хуже апача или nginx'а? Последнее же и стабильное. (:

Ядро линукс относится к самой системе, а апач или nginx это пользовательские программы, и если они развалятся, постарадет только проект, а если развалится ядро линукса, вылетит вся система.
SLEDopit писал(а):
22.05.2013 12:56
BigBrother писал(а):
22.05.2013 12:42
Если так, тогда мой вариант ничем не отличается в подходе, от предложенного вами.
отличается. вёрстка сайта куда более нестабильна ( и подвержена изменениям ), нежели yum, и все ваши регулярки могут весьма регулярно падать (по сравнению с yum).

Pchol писал(а):
22.05.2013 17:04
Мне кажеться, в вашем частном случае, более правильным подходом по управлению пакетами было бы, создание своего репозитория, и установка его на всех ваших серверах.

Согласен, мой скрипт не идеален, т.к. верстка может менятся, а вывод yum стабилен. Расмострю вариант своего репозитория. Спасибо.
Bluetooth писал(а):
23.05.2013 00:26
Я тоже с опаской отношусь, но тут особый случай - ведь софт нужный человек собирает сам, так что latest тут - самое то. Ведь в этом случае в репо попадет только точно работающее ПО.

Правильно. К тому же, перед обновлением, я просматриваю change log новой версии :)
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Мониторинг версий ПО на серверах.

Сообщение Bluetooth »

а если развалится ядро линукса, вылетит вся система.
Ничего там не развалится. Это стабильная версия. Так что SLEDopit прав, если уж гоняться, то гоняться, и linux на ваших системах должен быть версии 3.9.3 :)

Сколько сейчас пакетов Вы поддерживаете самостоятельно в актуальной версии?
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

Bluetooth писал(а):
23.05.2013 12:45
а если развалится ядро линукса, вылетит вся система.
Ничего там не развалится. Это стабильная версия. Так что SLEDopit прав, если уж гоняться, то гоняться, и linux на ваших системах должен быть версии 3.9.3 :)

Я имел ввиду, что ядро линукса относится к дистрибутиву, и я использую то ядро, которое дает дистрибутив (в данном случае centos). А вот apache или nginx, к centos`у не относятся и живут своей жизнью, вот с ихними latest stable version работаю.

Bluetooth писал(а):
23.05.2013 12:45
Сколько сейчас пакетов Вы поддерживаете самостоятельно в актуальной версии?

около 6 пакетов (дальше будут еще), но не все они последних версий, т.к. нет единого мониторинга (см. тему) и схемы обновлений ПО на серверах, а часто и просто времени.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Мониторинг версий ПО на серверах.

Сообщение SLEDopit »

BigBrother писал(а):
23.05.2013 13:54
Я имел ввиду, что ядро линукса относится к дистрибутиву, и я использую то ядро, которое дает дистрибутив (в данном случае centos). А вот apache или nginx, к centos`у не относятся и живут своей жизнью, вот с ихними latest stable version работаю.
Интересная философия. А как вы определяете "относится пакет к дистрибутиву" или нет?
Вот, например sshd если упадёт - ничего ж страшного не произойдёт, система останется живой, значит он тоже не часть системы?

Ну и вы так и не ответили на мой вопрос:
SLEDopit писал(а):
22.05.2013 12:56
В чём смысл гнаться за "последней, стабильной версией"?
Профит есть какой-нибудь от этого?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Мониторинг версий ПО на серверах.

Сообщение Bluetooth »

SLEDopit писал(а):
23.05.2013 15:23
Ну и вы так и не ответили на мой вопрос:
SLEDopit писал(а):
22.05.2013 12:56
В чём смысл гнаться за "последней, стабильной версией"?
Профит есть какой-нибудь от этого?

Отвечу я: автор сказал про 6 пакетов, т.е. он, скорее всего (я надеюсь) каждый раз принимает осознанное решение перед тем, как взваливать на себя поддержку этих пакетов. Я так понимаю, это веб сервера, пхп, mysql. Это все - активно развивающиеся проекты, и каждые новые версии добавляют какие-то новые функции, исправляют баги. И это вполне может быть нужно автору. Например, я использовал dotdeb, дабы получить новый пхп, новый nginx. При этом, правда, ничего я сам не собирал :) Я уверен, и для CentOS можно найти аналог dotdeb, но никто не мешает собирать и самому - подход тоже, в целом, верный.
Спасибо сказали:
Pchol
Сообщения: 88

Re: Мониторинг версий ПО на серверах.

Сообщение Pchol »

У nginx есть свой репозитории в том числе и для rhel.
Для остальных сервисов я осмелюсь посоветовать remi repo, возможно найдете там то, что вам нужно. Ну и конечно EPEL,
... Весь ужас заключается в том что предают только свои ...
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

Pchol писал(а):
24.05.2013 18:51
Для остальных сервисов я осмелюсь посоветовать remi repo, возможно найдете там то, что вам нужно. Ну и конечно EPEL,

BigBrother писал(а):
22.05.2013 12:42
Да, ибо в rhel стандартных репозиториях, часто нет нужного софта, а если есть то часто нет последних версий. Сторонние репозитории не использую (кроме тех, в которых 1 программный продукт, например percona mysql), уже не раз натыкался, что они ломают систему по зависимостям + то, как собран в них нужный пакет, очень часто не устраивает.

Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Мониторинг версий ПО на серверах.

Сообщение Bluetooth »

Сторонние репы бывают разные, бывают надежные и не очень. Тем более, что, если машины идентичные, то просто берется тестовая машина, и проверяется все там.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

Насчет своего репозитория:
Предположим, я его сделал и на всех серверах проверяю через yum есть ли новый пакет. Чтобы yum узнал о новом пакете, мне необходимо его собрать и положить в репозиторий, это понятно. Но лично мне тоже надо как-то узнать "а не вышла ли новая версия пакета, чтобы обновить свой репозиторий". И вот как тут поступить?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Мониторинг версий ПО на серверах.

Сообщение Bizdelnick »

BigBrother писал(а):
25.05.2013 17:17
Но лично мне тоже надо как-то узнать "а не вышла ли новая версия пакета, чтобы обновить свой репозиторий". И вот как тут поступить?

Осилить любой агрегатор и подписаться на эти фиды:
http://nginx.org/index.rss
http://www.php.net/feed.atom
https://code.google.com/feeds/p/memcached/downloads/basic
https://dev.mysql.com/downloads/rss.php
ну и так далее
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

какой feed для mongodb? подскажите, не могу найти...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Мониторинг версий ПО на серверах.

Сообщение Bizdelnick »

BigBrother писал(а):
03.06.2013 20:05
какой feed для mongodb? подскажите, не могу найти...

Тут много, возможно, лишней для Вас информации, но новости о релизах тоже есть: http://blog.mongodb.org/rss.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Мониторинг версий ПО на серверах.

Сообщение BigBrother »

Bizdelnick писал(а):
25.05.2013 19:36
BigBrother писал(а):
25.05.2013 17:17
Но лично мне тоже надо как-то узнать "а не вышла ли новая версия пакета, чтобы обновить свой репозиторий". И вот как тут поступить?

Осилить любой агрегатор и подписаться на эти фиды:
http://nginx.org/index.rss
http://www.php.net/feed.atom
https://code.google.com/feeds/p/memcached/downloads/basic
https://dev.mysql.com/downloads/rss.php
ну и так далее

Попробовал, но это не очень гибкое решение. Частенько приходится править код, для некоторых пакетов. А каким способом это делается теми, кто держит свои репозитории (remi, forge, atom ...)?
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Мониторинг версий ПО на серверах.

Сообщение landgraf »

puppet, скрипты... а чем SpaceWalk не угодил?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Мониторинг версий ПО на серверах.

Сообщение Bizdelnick »

landgraf писал(а):
07.10.2013 21:52
puppet, скрипты... а чем SpaceWalk не угодил?

А им кто-то вообще пользуется? Кроме как на редхатовских курсах, нигде не видел. IRL народ предпочитает KISS-решения.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
o5_TaHKucT
Сообщения: 19
ОС: Linux

Re: Мониторинг версий ПО на серверах.

Сообщение o5_TaHKucT »

Мда ... начали за здравие, а а закончили
1) Скрипт конечно ололо. А что будет если lynx протаймаутиться? А если страница измениться?
А сколько у Вас серверов? А если их будет в 1000 раз больше Вы тоже каждый раз будете ходить и грузить сервер разработчиков?
2) Сама идиология по моему не верна. Заббикс должен получать значение и уже на основании его решать триггер или нет, а у Вас логика принятия решения "Триггер или нет" находиться в скрипте.

Я бы сделал так:
1) html страница на свое сервере, примерно такого вида:

Код: Выделить всё

nginx: 1.0.15-5.el6
mysql: release-5.5.34-32.0
которая генерируется сама (парсингом вывода yum с тестовой машины, парсингом сайтов разработчиков или в конце концов ручками).
В заббиксе фейковый хост soft_version с айтемами по интересующим Вам продуктам, тип хранимого значения - строка, отсылка данных в заббикс через zabbix_sender.
2) написал бы скрипт типа такого:

Код: Выделить всё

yum list $1 | tail -n 1 | awk '{print $2}'||echo -1

и дергал бы его через заббикс агент, тип - так же строка
3) в самом заббиксе триггер вида

Код: Выделить всё

{soft_version:nginx_vers.last()}<>{MyServer:nginx_vers.last()}[code]
+триггер [code]{soft_version:nginx_vers.nodata(3600)}=1
и так для всего нужного софта.

Этот вариант нам дает возможность 1) иметь модульную систему (если Вы захотите что то менять, то это будет проще сделать потому что все лежит по полочкам
2) Проще искать "где оно сломалось" потому что "точки" отказа логически разделены
3) Как то более правильно что ли. Дает возможность не только понять "у нас проблема", но и провести начальную диагностику не покидая заббикса, (ага, версия nginx у разрабов 1.2.3-happy_new_year, а у нас 1.2.3 ... отличная шутка товарищи разрабы).
0 1 0
0 0 1 ...................................................................Мой хомяк
1 1 1
Спасибо сказали: