Tag Archives: настройка

Мониторинг графиков cacti и оповещение

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

Указывается имя rrd файла и задаются границы, если значения из rrd файла выходят за его пределы то отправляется уведомление.

balance_071813_122633_PM

 

Выше показан пример, когда задана только нижняя критическая граница.

balance_071813_123457_PM

 

А это пример когда заданы две нижние границы. При достижении значения ниже 10к создается ошибка уровня WARNING, когда значение доходит ниже порога в 5к, ошибка получает уровень CRITICAL.

Код команды в конфиге нагиоса:

define command{
    command_name    level_check
    command_line    /usr/bin/env bash /usr/local/etc/nagios/scripts/rrd_level_checker.sh $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
}

Параметры такие же как и для скрипта по проверке соотношения.

Конфиг для сервиса в конфиге нагиоса:

define service{                
    use main-service   
    host_name levelCheck
    service_description your text
    check_command level_check!file_114.rrd!0.5!2.3
}

В этом случае заданы только по одной верхней и нижней границе (CRITICAL).

Вот пример когда заданы по две границы:

define service{                
    use main-service   
    host_name levelCheck
    service_description your text
    check_command level_check!file_114.rrd!0.5!0.8!2.3!2
}

Для примера который отображен на второй картинке параметры выглядят так:

check_command fall_check!file_114.rrd!5!10!0!0

Настройка сервера на FreeBSD: установка софта

В продолжение поста http://toha.su/post/и-снова-о-настройке-freebsd/.

Гребаный вордпресс сначала удалил све переносы строк в том посте, а потом еще и куда то потерял первую версию этого поста. Хорошо что я хоть только начал писать его.

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

Ставим screen

whereis screen
cd /usr/ports/sysutils/screen
make install clean

Ставим MC

cd /usr/ports/misc/mc
make install clean

Ставим MySQL:

cd /usr/ports/databases/mysql55-server
make install clean
rehash
echo 'mysql_enable="YES"' >> /etc/rc.conf
service mysql-server start
mysqladmin -u root password "MySQLNewRootPassword"

Здесь можно проверить, работает ли MySQL сервер командой

mysql -u root -p

и затем ввести пароль который задали в предыдущей команде.

Ставим Nginx

cd /usr/ports/www/nginx
make install clean
# здесь я выбирал дополнительно HTTP_ADDITION_MODULE, HTTP_GEOIP_MODULE, HTTP_FLV_MODULE, HTTP_GZIP_STATIC_MODULE, HTTP_MP4_MODULE, HTTP_REALIP_MODULE, HTTP_SSL_MODULE, HTTP_UPLOAD_MODULE.
echo 'nginx_enable="YES"' >> /etc/rc.conf
service nginx start

Ставим PHP

cd /usr/ports/lang/php5/
make install clean
# здесь обязательно выбираем FPM - без этого связать с nginx без патчей нельзя будет.
echo 'php_fpm_enable="YES"' >> /etc/rc.conf
service php-fpm start

Небольшая настройка:

ee /usr/local/etc/php-fpm.conf

комментируем listen = 127.0.0.1:9000

и добавляем вместо него

listen = /tmp/php-fpm.sock

Это нужно для работы через сокет.

Поставим еще модулей PHP:

cd /usr/ports/lang/php5-extensions
# + CURL, GD, GETTEXT, MBSTRING, MYSQL, MYSQLi, SOAP, SOCKET

Вот, если вы все делали правильно то в итоге мы уже имеем систему на которой стоят mysql, nginx, php-fpm, что позволяет уже поднимать сайты в общем то. Перейдем как раз к связке всего этого добра :-)

Открываем /usr/local/etc/nginx/nginx.conf и редактируем. Руководств по настройке nginx впринципе довольно много, но я приведу пример и своего конфига.

timer_resolution 50ms;
worker_processes 1;

error_log /usr/log/nginx/error.log error;

events {
use kqueue;
worker_connections 1024;
}

http {
log_format all 'ALL $time_local $remote_addr $host $request '
'$http_user_agent $status $body_bytes_sent $request_time $http_referer $http_x_forwarded_for';

server_tokens off;
include mime.types;
default_type application/octet-stream;

resolver 127.0.0.1;
sendfile off;
keepalive_timeout 65;

gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_static on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types text/css application/x-javascript image/x-icon image/gif;
gzip_vary on;

recursive_error_pages on;

upstream php-backend
{
server unix:///tmp/php-fpm.sock;
}

include vhosts/*.host.conf;
}

Далее создаем папки /usr/log/nginx/ (если таковых не имелось) и /usr/local/etc/nginx/vhosts

И затем для подключения хоста конфиг каждого отдельного сайта бросаем в эту последнюю папку и называем anyname.host.conf

Эти файлы будут автоматически подключаться при старте nginx.

Пример файла server.host.conf:

server {
listen 80;
server_name server.com;

access_log /usr/log/nginx/vhosts/server.access.log all;
error_log /usr/log/nginx/vhosts/server.error.log;

set $rootDir /usr/www/server/server.com/;
root $rootDir;

location ~ \.php$ {
fastcgi_pass php-backend;
fastcgi_param SCRIPT_FILENAME $rootDir$fastcgi_script_name;
include fastcgi_params;
}

}

После этого я пошел адаптировать конфиг nginx для конкретного сайта с учетом его бывшего .htacess ( чем больше познаю nginx тем больше мне не нравится apache, не знаю даже с чем это связано :-).

До новых встреч, мои дорогеньки.

И снова о настройке FreeBSD

Это скоро будет моей любимой темой :-)

/**

Выражаю благодарность лучшему админу которого я знал и который очень помогал мне советами и ответами на вопросы касательно FreeBSD — slon =)

*/

Так сложилось что мне нужно поднять новый сервачок под один сайт и я решил это делать «по жесткому»  — от ДЦ я получу чистую freebsd без каких либо панелей администрирования, а дальше уже буду сам :-) Так что постараюсь восполнить пробелы в описании настройки рабочей среды, которые я упустил. По сути работа будет та же самая.

Прежде всего о заказе: я попросил поставить версию 8.2 (при этом в опициях установки выбрать только исходники) амд64 (так как оперативы больше 3гб, если меньше — ставьте x32). Так же нужно указать как разбивать диски: в моем случае это было так:

15G — /

50G — /usr

35G — /var

120 — /usrbackup

остальное — /tmp

Пример для винта на 250гб. И еще про файл подкачки. В случае, если оперативы 4гб, стоит выбрать swap x1, если меньше то swap x2.

Базовая настройка

Итак, спустя пару суток мне выдали доступ к серверу. Первым делом я изменил пароль для ssh со стандартного 22 на другой (как это делать описывалось ранее). Далее делаем

portsnap fetch update

Это обновит дерево портов. Далее, для того, что бы обновить установленные программы, настроим csvup (в командной строке утилита csup), для чего вводим

ee /etc/supfile

И  затем (файл должен быть пустым изначально) вставляем туда

#csup -L 2 /etc/supfile
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup.freebsd.org
#*default host=cvsup.ru.FreeBSD.org

*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_8
*default delete use-rel-suffix
*default compress

src-all

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

csup -L 2 /etc/supfile

Утилита работает долго, около часика у вас есть время отдохнуть :) Далее редактируем еще файл /etc/make.conf (его может не быть изначально)

WITHOUT_X11=yes

WITH_THREADS=yes

Сохраняем, выходим. На этом базовая настройка завершена. Осталось только обновить мир и ядро. Для мира:

cd /usr/src/
rm -R /usr/obj/*
make cleandir
make cleandir
make buildworld
make installworld
shutdown -r now

Да, cleandir нужно выполнить два раза, это не ошибка. И на всякий случай предупрежу, что последняя команда выполняет перезагрузку сервера :-)

Обновляем ядро:

cd /usr/src/
rm -R /usr/obj/*
make clean
make clean
make buildkernel KERNCONF=
make installkernel KERNCONF=
shutdown -r now

Там где «KERNCONF=» подставляем название нашего ядра, узнать его можно, выполнив команду:

uname -i

В моем случае это было GENERIC.

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

Среда разработки — самое начало

Привет всем! Этим постом я начну цикл статей по настройке среды разработки. Нет, это будет на настройка любимой IDE, а немного более масштабно.

Начав не так давно работать в одной компании, я там столкнулся с одним решением по организации разработки, которое мне очень пришлось по душе.

Суть была такова: на своем компе настраивается виртуальная машина и на нее ставится freeBSD, затем папка из родительской ОС (на работе это Windows 7, сейчас у себя я делаю для mac os X) расшаривается на гостевую через samba (у себя я планирую это делать через NFS). Далее на фряхе настарваются все необходимые компоненты, апачи, пхп, нгниксы и прочее, аналогично к настройке на продакшн серверах. Таким образом во время разработки мы работаем в той же среде что и будет использоваться для реальной работы.

Но тогда мне дали почти все готовое, нужно было только немного подкорректировать настройки, а сейчас я уже сам с нуля хочу настроить подобную систему.

Писать буду по мере настройки что бы не забывалось.

Часть 1 — установка freeBSD, настройка интернета.

Первое что я сделал — скачал дистрибутив фряхи (да, кэп :-) — FreeBSD-8.2-RELEASE-i386-dvd1. С этим никаких проблем думаю не может возникнуть. Далее создал новую виртуальную машину (в предварительно установленной virtualbox), с соответствующим типом системы. Выделил ей 512мб оперативы и 10гб диска в динамическом разделе. Далее в свойствах машины примонтировал скачанный образ.

Здесь мне стоило еще поменять настройки сетевого подключения (как я понял потом). Так вот, что бы сразу сделать правильно, нужно выбрать сетевое подключение типа «мост», остальные настройки я не менял.

Хотя вот как выяснилось, вариант с подключением типа мост не совсем подходит. Если у вас комп подключен по этому интерфейсу физически ( то есть если вы выбрали подключение через ethernet), то все работает нормально. На виртуалке доступен и хост и интернет (если соответственно ваш комп подключен к инету). Но стоит отключиться и виртуалка стает тоже недоступной. Мне такой вариант не очень нравится. В идеале хочу что бы независимо от подключений на хосте, связь с виртуалкой была и если на хосте появляется доступ к инету то и на виртуалке он тоже был. Как найду способ это реализовать, напишу.

Далее запускаю виртуалку, начинаю установку. Когда спрашивали тип установки — выбрал рекомендуемый по умолчанию, т.к. ставлю фряху впервые. При запросе сетевых настроек следует выбрать «да», когда спросят попробовать ли настроиться через DHCP — у меня нужные настройки подхватились сразу. Далее, для удобства работы, я настроил себе подключение по ssh, т.к. работать с консоли, которую предоставляет виртуалбокс не так удобно (мне например очень нравится ZOC для этих целей). Для этого в одном из вопросов при настройке конфигурации нужно было ответить да, на вопрос включать ssh или нет. Если вы хотите заходить по ssh используя рут логин, то для активации этой возможности нужно сделать небольшую настройку.

ee /etc/ssh/sshd_config

И там ищем строку

#PermitRootLogin no

И меняем ее на

PermitRootLogin yes

(не забываем убрать # в начале строки).

Также, по желанию можно поменять порт по умолчанию (для виртуалки это в общем то ни к чему, но все же.

В этом же файле строка Port 22, для изменения убираем # в начале и меняем цифру на любую другую. После этого жмем Esc, пункт leave editor -> save changes. Вводим команду

/etc/rc.d/sshd restart

Все, пробуем подключится по ssh. Если вы не знаете айпи адрес виртуалки, то в консоли следует ввести

ifconfig | grep inet

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

На этом пока все.