Архив автора

EiskaltDC++ 2.0.3

После обновление Debian с lenny до squeeze сменил DC++ клиента на EiskaltDC++. Вцелом впечатления положительные: редко «падает», интерфейс удобный, хотя немного запутанный (особенно пиктограмки), есть возможность указать персональные настройки для каждого хаба (ник, IP, etc).

Так что с LinuxDC++ пересел на него  и обратно переходить не собираюсь.

В тему изучения С++

ars_longa_vita_brevis

Обновил дизайн, русский Fluid Blue 1.7.2

Обновил дизайн с версии 1.6 до 1.7.2, полностью самостоятельно перевел ее. Перевод темы Fluid Blue 1.7.2 на русский можно скачать у меня в git репозитории.

Несколько раз на неделе пересобирал LinuxDC++ в связи с обновлением кода, разработчики играются, то есть полезного функционала не вносят, но оптимиируют сборщик и правят некоторые ошибки. Сегодня-завтра посмотрю сборку проекта FreeDC++.

Настройка NSCA сервера для системы мониторинга Nagios

В данной заметке я напишу как настроить NSCA демона для работы системы проверки идентичности MySQL сервера.

Для корректной работы NSCA у вас уже должна быть установлена и настроена система мониторинга Nagios, то есть как минимум пробники для сервера localhost должны проверяться и отображаться корректно. Далее, необходимо установить NSCA сервер, в RHEL 5 это можно сделать командой (предварительно подключив epel репозиторий):

yum install nsca

После установки управление демоном происходит при помощи скрипта /etc/init.d/nsca, управление конфигурацией происходит при помощи файла /etc/nagios/nsca.cfg. Необходимо проверить, что путь до command_file указан верный, либо исправить, если это не так. У меня данный параметр настрен следующим образом:

# COMMAND FILE
# This is the location of the Nagios command file that the daemon
# should write all service check results that it receives.
command_file=/var/log/nagios/rw/nagios.cmd

Все данные, что NSCA получает по сети он будет обрабатывать и записывать в этот файл, далее Nagios разберет полученную информацию, и, если нет ошибок, обработает и покажет в системе мониторинга.

После вышеописанных действий NSCA сервер настроен, осталось настроить клиента. Для этого устанавливаем его на сервере при помощи команды:

yum install nsca-client

Конфигурационный файл /etc/nagios/send_nsca.cfg в правках не нуждается, проверить корректность работы утилиты send_nsca можно следующим образом — запустить ее со следующими параметрами:

echo -e 'sql.lan.net\tMySQL Checksum Check\t0\tAll Good\n' | send_nsca nsca.server.hostname -p 5667

«echo -e» — передает на через pipe утилите send_nsca специальную строку с указанием сервера, сервиса, состояния (0 — все ок, 1 — Warning, 2 — Error, 3 — Unknown), параметр -e отвечает за обработку управляющих символов, то есть \t — табуляция, \n — перевод строки.

nsca.server.hostname — DNS адрес или IP адрес сервера.

После проверки при помощи send_nsca корректной работы связки nsca client — nsca server, осталось настроить систему мониторинга Nagios.

Для этого нужно создать шаблон для сервиса с типом passive, я использую следующий:

define service{
 name                            service_passive         ; The 'name' of this service template
 active_checks_enabled           1                       ; Active service checks are enabled
 passive_checks_enabled          1                       ; Passive service checks are enabled/accepted
 parallelize_check               1                       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
 obsess_over_service             1                       ; We should obsess over this service (if necessary)
 check_freshness                 1                       ; Default is to NOT check service 'freshness'
 check_command                   check_dummy!3!"Service check to old"
 freshness_threshold             100
 notifications_enabled           1                       ; Service notifications are enabled
 event_handler_enabled           1                       ; Service event handler is enabled
 flap_detection_enabled          1                       ; Flap detection is enabled
 failure_prediction_enabled      1                       ; Failure prediction is enabled
 process_perf_data               1                       ; Process performance data
 retain_status_information       1                       ; Retain status information across program restarts
 retain_nonstatus_information    1                       ; Retain non-status information across program restarts
 is_volatile                     0                       ; The service is not volatile
 check_period                    never                    ; The service can be checked at any time of the day
 max_check_attempts              1                       ; Re-check the service up to 4 times in order to determine its final (hard) state
 normal_check_interval           3                       ; Check the service every 5 minutes under normal conditions
 retry_check_interval            1                       ; Re-check the service every minute until a hard state can be determined
 contact_groups                  admins                  ; Notifications get sent out to everyone in the 'admins' group
 notification_options            w,u,c,r                 ; Send notifications about warning, unknown, critical, and recovery events
 notification_interval           0                       ; Re-notify about service problems every hour
 notification_period             24x7                    ; Notifications can be sent out at any time
 register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
 }

Измените его под свои настройки Nagios, и проверте, что у вас есть timeperiod c именем never и содержимым:

# This one is a favorite: never 
define timeperiod{
timeperiod_name never
alias           Never
}

Этот период задает нулевую периодичность для проверки сервисов с типом passive. После вышеописанной настройки осталось настроить сам сервис, например так:

define service {
use                             service_passive
service_description             MySQL Checksum Check
name                            mysql_checksum_check
contact_groups                  admins, smsadmins
register                        0
}
define service {
use                             mysql_checksum_check
host_name                       sql.lan.net
}

Перезапускаем Nagios, для хоста, у которого мы настроили сервис MySQL Checksum Check он находится в состоянии pending, после отправки при помощи send_nsca сообщения указанного выше, через некоторое время он должен перейти в состояние ОК.

Название сервиса MySQL Checksum Check должно быть одинаковым как в конфигурации Nagios, так и для утилиты send_nsca, иначе Nagios не сможет обработать сообщение полученное от NSCA сервера.

Проверка идентичности MySQL Slave сервера, часть 2

В продолжение прошлой заметки — в этой напишу как автоматизировать проверку идентичности slave сервера в рамках компании.

Основной момент, это определиться с периодом проверки СУБД на идентичность, судя по моему опыту — это раз в неделю, либо после проблем с репликацией. Во всех остальных случаях, если разработчики знакомы с ограничениями MySQL при репликации данных, СУБД ведет себя достаточно стабильно.

Для автоматизации проверки я использую скрипт — mysql_consistency.sh. Скрипт достаточно простой, позволяет автоматизировать проверку СУБД на идентичность, с последующей нотификацией через систему Nagios о имеющихся проблемах.

Для его использования достаточно скачать его и скопировать в нужную вам директорию, в обязательном порядке нужно установить набор утилит Maatkit, иначе скрипт не будет работать, так как не будет необходимых программ для реализации проверки идентичности MySQL серверов.

Перед запуском скрипта необходимо указать в нем логин и пароль, при помощи которых он будет подключаться к СУБД, также, если требуется поддержка Nagios, нужно настроить следующие параметры:

###
# Nagios support variables
# 1 - enable nagios nsca support
# 0 - disable nagios nsca support
###
nagios_support=0
 
# Name of the nagios service
NAGIOS_SERVICE_NAME="MySQL Checksum Check"
 
# Set NSCA host and port
NSCA_HOST="localhost"
NSCA_PORT="5667"

nagios_support — включает/выключает поддержку Nagios.

NSCA_HOST  — определяет имя сервера, на котором установлен NSCA сервер.

После запуска скрипт запустит mk-table-checksum, который проверит master MySQL сервер, далее при помощи mk-table-sync проверит консистентность slave MySQL серверов. Если включена поддержка Nagios — скрипт отправит сообщение со статусом проверки, как положительным так и отрицательным, NSCA серверу при помощи утилиты send_nsca.

В следующей заметке напишу как настраивать систему мониторинга Nagios для работы с NSCA сервером, в этой настройке есть несколько моментов.

Патч для плагина «Я не робот»

Последнее время очень много спама стали размещать спамботы в комментах, хорошо есть Akiasmet, но выгребать каждый день по несколько десятков сообщений в день надоело. Решил поставить плагин «Я не робот» и в ходе проверки натолкнулся на 1 баг, в версии блога wordpress 2.9 в случае когда при размещении комментария не ставилась галка напротив чекбокса «Это не спам», то есть если спам бот решил оставить комментарий, он все равно попадал в очередь на модерацию, хотя по логике работы плагина должен был удаляться. Изучив код нашел, что удаление спам комментария происходит при помощи функции:

wp_set_comment_status ($id, 'delete');

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

Для всех блогеров использующих данный плагин и столкнувшихся с данной проблемой предлагаю скачать исправленную версию плагина «Я не робот» для WordPress 2.9.

UP: Прошло несколько недель, за это время ни одного спам комментария. Пользователи могут постить сообшения без проблем. Считаем вопрос закрытым, плагин работает.

Проверка идентичности MySQL Slave сервера

СУБД MySQL, самая популярная СУБД для WEB проектов. Эту БД используют миллионы проектов по всей сети Интернет, от крупных компаний, до отдельных разработчиков, и как следствие, перед любым администратором СУБД MySQL рано или поздно встает вопрос об обеспечении отказоустойчивого режима работы данной подсистемы БД в рамках проекта. СУБД MySQL (далее просто MySQL или СУБД) предлагает 2-а механизма высокодоступного режима работы:

1) MySQL Cluster

2) MySQL Replication

Оба механизма имеют свои плюсы и минусы, но всетаки более популярен и доступен — это 2-ой вариант, то есть репликация данных между MySQL серверами. Настройка репликации отлично описана в документации, поэтому рассматривать мы ее не будем. Предмет данной заметки — проверка MySQL slave сервера на идентичность его данных MySQL master серверу.

Читать полностью ‘Проверка идентичности MySQL Slave сервера’ »

Кино: Опасные связи

Кино: Опасные связи Недавно посмотрел отличное кино, фильм назывался — Опасные связи. Фильм показывает нам любовные интриги 18 века, причем отлично показывает, весь фильм смотрится на одном дыхании. Очень приятно наблюдать за превосходной игрой актеров мирового уровня (фильм в итоге получил несколько оскаров), за переплетением сюжета, одна сцена соблазнения одной из главных героинь чего стоит, страсть, поцелуи…

Вобщем рекомендую всем для просмотра, отличное кино. Заказать DVD можно в Озоне, как и книгу, по которой составлялся сценарий.

RSS лента статуса сборки пакетов LinuxDC++

В правой колонке добавил RSS ленту для отображения статуса сборки пакетов linuxdcpp для Debian на сервисе build.opensuse.org. Теперь вы всегда сможете узнавать о последних собранных версиях в режиме реального времени.

Либо можете добавить эту ленту в свои RSS клиенты.

Последнюю версию из BZR репозитория я собрал сегодня, так что можете уже обновляться из репозитория сервиса сборки.

Об обновления пакетов из репозитория писать не главной странице больше не планирую. Возможно только в случае значительных изменений для собираемого ПО.

Изменения в репозитории Debian пакетов

Перенес сборку Debian пакетов с локальной машины на сервис build.opensuse.org.

Настройки для подключения можно получить на этой странице.

Сборку linuxdc++ перенес туда, так что сборки происходят как для i386, так и для amd64 платформ.