Алгоритм действий состоит из следующих шагов: 1.Настройка Nginx на отдачу статусной страницы 2.Запуск Nginx-экспортера для сбора метрик с Nginx и отдачи их Prometheus-у 3.Настройка Prometheus-а для сбора метрик с Nginx-экспортера 4.Импортирование/настройка dashboard Grafana для визуализации метрик 5.Настрйка правил Prometheus для мониторинга Nginx показателей 1.Настройка Nginx на отдачу статусной страницы Проверка поддержки Nginx-ом модуля http_stub_status_module и […]
Записи с меткой ‘Nginx’
Установка и настройка нескольких экземпляров Odoo на одном сервере с использованием Nginx в качестве proxy-сервера на Ubuntu14
Установим две копии Odoo с разными системными пользователями, разными PostgreSQL-пользователями, разными базами данных, на разных xml-портах. В качестве frontend-сервера установим Nginx, который будет проксировать запросы на Odoo-приложения. 1.Установка всех необходимых зависимостей/пакетов
1 |
# apt-get install subversion git bzr bzrtools python-pip postgresql postgresql-server-dev-9.3 python-all-dev python-dev python-setuptools libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev python-tk libyaml-dev fontconfig |
2.Добавление системного пользовател(odoo) и создание необходимых каталогов
1 |
# adduser --system --home=/opt/odoo --group odoo |
Создание каталога для хранения лог-файлов Odoo
1 |
# mkdir /var/log/odoo |
Создание каталога для установки в него Odoo-приложения […]
Мониторинг Nginx в Zabbix
1.Настройка Nginx-статуса Статистические данные http_stub_status_module — собирает следующие данные:
1 |
active connections |
– общее количество открытых соединений в данный момент, включая коннекты на backend (не пользователей, т.к. один пользователь может открыть несколько соединений);
1 |
server accepts |
– общее количество принятых соединений
1 |
server handled |
— количество обработанных соединений ; как правило – должно быть одинаково с первым значением; Если accepts и […]
Установка и настройка Zabbix-сервера на Ubuntu
1.Добавление репозитария Zabbix Отсюда скачиваем и устанавливаем пакет для добавления репозитария http://repo.zabbix.com/zabbix/ Ubuntu 14
1 |
# wget http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.4-1+trusty_all.deb |
1 |
# dpkg -i zabbix-release_2.4-1+trusty_all.deb |
1 |
# apt-get update |
2.Установка Zabbix-сервера и Zabbix-агента(клиента)
1 |
# apt-get install zabbix-agent zabbix-server-mysql zabbix-frontend-php dbconfig-common |
Во время установки необходимо согласится на создания базы данных zabbix и ввести пароль пользователя root.После чего установщик предложит ввести пароль пользователя zabbix к базе данных zabbix
1 |
zabbix-agent |
– агент для сервера мониторинга( […]
Установка и настройка Zabbix-сервера на Centos
1.Добавление репозитария Zabbix Отсюда скачиваем и устанавливаем пакет для добавления репозитария http://repo.zabbix.com/zabbix/ Centos 6 64-бит(x86_64)
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm |
32-бит(i386)
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/i386/zabbix-release-2.4-1.el6.noarch.rpm |
Centos7
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm |
В моем случае Centos 6 x86_64
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm |
1 |
# rpm –Uhv zabbix-release-2.4-1.el6.noarch.rpm |
2.Установка Zabbix-сервера и Zabbix-агента(клиента)
1 |
# yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql |
Будет использоваться связка Nginx+PHP-FPM 3.Настройка PHP-FPM Используем отдельный пул с пользователем zabbix
1 |
# egrep -v '(^;|^$)' /etc/php-fpm.d/zabbix.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[zabbix] listen = /var/run/php5-fpm-zabbix.sock listen.allowed_clients = 127.0.0.1 listen.owner = zabbix listen.group = nginx listen.mode = 0660 user = zabbix group = zabbix pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 500 pm.status_path = /status-zabbix ping.path = /ping-zabbix ping.response = pong request_terminate_timeout = 300 request_slowlog_timeout = 3s slowlog = /var/log/php-fpm/zabbix-slow.log catch_workers_output = yes php_admin_value[error_log] = /var/log/php-fpm/zabbix-error.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 128M php_admin_value[max_execution_time] = 300 php_admin_value[post_max_size] = 16M php_admin_value[upload_max_filesize] = 2M php_admin_value[max_input_time] = 300 php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session-zabbix |
1 |
# mkdir /var/lib/php/session-zabbix |
1 |
# chown -R zabbix:zabbix /var/lib/php/session-zabbix |
1 |
# nano /etc/php.ini |
1 |
date.timezone = Europe/Kiev |
1 |
# php-fpm –t |
1 |
# service php-fpm reload |
[…]
Установка Nagios на Centos в связке с Nginx
1.Установка необходимых пакетов
1 |
# yum install gcc glibc glibc-common gd gd-devel make net-snmp unzip wget |
2. Установка Nagios 4 из исходного кода
1 |
# cd /tmp |
1 |
# wget -O nagios-4.1.1.tar.gz http://sourceforge.net/projects/nagios/files/latest/download?source=files |
1 |
# tar xvfz nagios-4.1.1.tar.gz |
Создаем пользователя и группу nagios
1 |
# useradd nagios |
Сборка и установка Nagios
1 |
# cd nagios-4.1.1/ |
1 |
# ./configure |
1 |
# make all |
1 |
# make install |
1 |
# make install-init |
1 |
# make install-config |
1 |
# make install-commandmode |
1 |
# make install-webconf |
Проверка файла конфигурации
1 |
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg |
1 2 3 |
Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check |
Либо
1 |
# /etc/init.d/nagios configtest |
1 2 3 |
Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check |
Либо
1 |
# /etc/init.d/nagios checkconfig |
1 2 |
Running configuration check... OK. |
Расположение Nagios
1 |
# ls -l /usr/local/nagios/ |
1 2 3 4 5 6 |
drwxrwxr-x 2 nagios nagios 4096 Jan 4 15:27 bin drwxrwxr-x 3 nagios nagios 4096 Jan 4 15:28 etc drwxrwxr-x 2 nagios nagios 4096 Jan 4 15:27 libexec drwxrwxr-x 2 nagios nagios 4096 Jan 4 15:27 sbin drwxrwxr-x 14 nagios nagios 4096 Jan 4 15:27 share drwxrwxr-x 5 nagios nagios 4096 Jan 4 15:30 var |
3. Установка плагинов Nagios (предварительно необходимо […]
Настройка мониторинга Nginx, Memcached, Redis в Cacti средствами Percona Monitoring Plugins
Мониторинг Nginx 1.Узнаем под каким пользователем запускается poller
1 |
# grep -ri cacti /etc/cron* |
1 |
/etc/cron.d/cacti:* * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 |
В данном случае под пользователем cacti 2. Создаем пару SSH-ключей без пароля и сохраняем ключи в /etc/cacti
1 |
# ssh-keygen |
1 2 3 4 5 6 |
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /etc/cacti/id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /etc/cacti/id_rsa. Your public key has been saved in /etc/cacti/id_rsa.pub. |
3.Выставляем корректного владельца на ключи – пользователя cacti
1 |
# chown cacti /etc/cacti/id_rsa* |
1 |
# ls -al /etc/cacti/ | grep id |
1 2 |
-rw------- 1 cacti root 1679 Dec 29 22:52 id_rsa -rw-r--r-- 1 cacti root 406 Dec 29 22:52 id_rsa.pub |
4.Создаем пользователя,например, cacti на клиенте(192.168.1.100), с которого будет сниматься статитика
1 |
# ssh -p 2220 root@192.168.1.100 adduser cacti |
[…]
Настройка мониторинга Nginx в Cacti
1.Проверяем наличие поддержки http_stub_status модуля.
1 |
# nginx -V 2>&1 | grep -o http_stub_status_module |
1 |
http_stub_status_module |
2.Настраиваем хост по умолчанию на отображение статистики Nginx.
1 |
# nano /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 |
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP_address_Cacti_server>; deny all; } |
1 |
# nginx –t |
1 |
# service nginx reload |
Проверяем вывод Nginx-статистики
1 |
# lynx http://<ip-address-client>/nginx_status |
1 2 3 4 |
Active connections: 1 server accepts handled requests 3 3 10 Reading: 0 Writing: 1 Waiting: 0 |
3.Скачиваем необходимые скрипты/шаблоны и копируем скрипты get_nginx_clients_status, get_nginx_socket_status в папку scripts на сервере Cacti. Отсюда качаем необходимые скрипты/шаблоны http://forums.cacti.net/about26458.html Либо с моего сайта cacti-nginx.tar Выставляем корректные права на скрипты […]
Nginx — полезные мелочи (security, redirect)
Безопасность 1.Блокировка определенных User-Agents. Создаем файл с запрещенными User-Agent-ами
1 |
# nano /etc/nginx/blockuseragents.rules |
1 2 3 4 5 6 7 8 |
map $http_user_agent $blockedagent { default 0; ~*malicious 1; ~*bot 1; ~*backdoor 1; ~*crawler 1; ~*bandit 1; } |
Подключаем файл с запрещенными User-Agent-ами(вставляем перед секцией server)
1 |
include /etc/nginx/blockuseragents.rules; |
Добавляем в секцию server запрет для указанных в файле User-Agents
1 2 3 4 5 6 |
server { if ($blockedagent) { return 444; } …… } |
Либо второй вариант. Например , защита от сканеров
1 2 3 4 5 |
server { if ( $http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) ) { return 444; } } |
Тестируем
1 |
# wget --user-agent "I am a bandit" http://example.com/index.html |
2.Защита от HotLink. Для конкретного location
1 2 3 4 5 6 7 8 |
location /images/ { # Или для определенных типов файлов #location ~ .(gif|png|jpe?g)$ { valid_referers none blocked example.com *.example.com; if ($invalid_referer) { return 444; } } |
3.Защита от реферального спама. […]
Ускорение WordPress за счет кеширования в memcached с помощью плагина W3 Total Cache
Установка memcached ранее рассматривалась Установка memcached в Ubuntu Установка memcached в Centos 1.Установка плагина w3 total cache через менеджер плагинов 2.Проверка/добавление наличие строки подключения плагина в файле wp-config.php
1 |
# cat -n /path_to_site/wp-config.php | less |
1 2 3 4 5 |
1 <?php 2 /** Enable W3 Total Cache */ 3 define('WP_CACHE', true); // Added by W3 Total Cache 4 5 /** |
3.Настройка Nginx виртуального хоста(включаем сжатие и определяем типы файлов для сжатия ) в http-секции
1 |
# nano /etc/nginx/conf.d/virtualhostname.conf |
1 2 3 4 |
server { .......... include /path_to_site/nginx.conf; } |
Проверка наличия файла nginx.conf в […]