Шаблон для мониторинга Linux-хоста использует ssh-подключение к хосту. 1.Необходимо произвести настройки согласно пунктам 1-6 из этой статьи https://kamaok.org.ua/?p=1409 2.Импортирование шаблона У меня используется spine вместо cmd.php и частота запуска определена как 60 секунд (вместо дефолтных 300 секунд).Поэтому перед импортированием шаблона от Percona, в котором также используется 300 секунд, необходимо изменить частоту запуска на 60 […]
Архивы рубрики ‘Centos’
Настройка мониторинга Linux-хоста в Cacti средствами Percona Monitoring Plugins
Настройка мониторинга 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 |
[…]
Настройка мониторинга дисковой подсистемы в Cacti
1.Загружаем и распаковываем архив Cacti_Net-SNMP_DevIO_v3.1
1 |
# unzip Cacti_Net-SNMP_DevIO_v3.1.zip |
2.Копируем файл net-snmp_devio.xml на Cacti сервер в каталог resource/snmp_queries/
1 |
# cp net-snmp_devio.xml /usr/share/cacti/resource/snmp_queries/ |
3.Импортируем по очереди шаблоны
1 |
Console->Import Templates |
1 |
net-snmp_devIO-BytesRW_graph_TMPL.xml |
1 |
net-snmp_devIO-LoadAVG_graph_TMPL.xml |
1 |
net-snmp_devIO-ReadsWrites_graph_TMPL.xml |
И самым последним импортируем шаблон
1 |
net-snmp_devIO-Data_query.xml |
4.Добавляем новый Data Queries
1 |
Console->Devices->ServerName->Associated Data Queries->ucd/net – Get Device I/O и Re-Indexed Method->Index count Changed->Add |
5.Создаем графики
1 |
Console->Devices->ServerName->Create Graphs for this Host->Data Query-> |
выбираем устройства(диски),например, vda, sda(либо разделы sda1, sda2 и т.д.)->graph type-> Bytes Read/Written Аналогично […]
Настройка мониторинга PHP-FPM в Cacti
Есть три сайта, каждый из которых использует свой PHP-FPM-пул
1 2 3 |
kamaok.us - /etc/php-fpm.d/kamaok.conf joomla.us - /etc/php-fpm.d/joomla.conf wordpress.us - /etc/php-fpm.d/wordpress.conf |
И дефолтный сайт
1 |
default.us - /etc/php-fpm.d/www.conf |
1.Настройка PHP-FPM для снятия статистки Включаем отображение статуса для каждого php-fpm-пула
1 |
# nano /etc/php-fpm.d/kamaok.conf |
1 2 |
pm.status_path = /status-kamaok ping.path = /ping-kamaok |
1 |
# nano /etc/php-fpm.d/joomla.conf |
1 2 |
pm.status_path = /status-joomla ping.path = /ping-joomla |
1 |
# nano /etc/php-fpm.d/wordpress.conf |
1 2 |
pm.status_path = /status-wordpress ping.path = /ping-wordpress |
1 |
# nano /etc/php-fpm.d/www.conf |
1 2 |
pm.status_path = /status ping.path = /ping |
1 |
# php5-fpm –t |
1 |
# service php-fpm reload |
2.Настройка Nginx для отображения PHP-FPM-статистики Настраиваем все пулы в дефолтном Nginx хосте
1 |
# nano /etc/nginx/conf.d/default.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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
location ~ ^/(status-kamaok|ping-kamaok)$ { fastcgi_pass unix:/var/run/php5-fpm.kamaok.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status-wordpress|ping-wordpress)$ { fastcgi_pass unix:/var/run/php5-fpm.wordpress.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status-joomla|ping-joomla)$ { fastcgi_pass unix:/var/run/php5-fpm.joomla.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status|ping)$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; 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 в 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 Выставляем корректные права на скрипты […]
Установка и использование Percona XtraBackup
1.Установка Percona XtraBackup Centos
1 |
# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm |
1 |
# yum install percona-xtrabackup |
Ubuntu Импортируем публичный GPG-ключ
1 |
# apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A |
Добавляем репозитарий Percona
1 |
# echo "deb http://repo.percona.com/apt "$(lsb_release -sc)" main" | tee /etc/apt/sources.list.d/percona.list |
Проверяем,что добавился новый репозитарий
1 |
# cat /etc/apt/sources.list.d/percona.list |
1 |
deb http://repo.percona.com/apt trusty main |
Обновляем локальный кеш и устанавливаем пакет
1 |
# apt-get update && apt-get install percona-xtrabackup |
Также можно скачать конкретную версию Percona XtraBackup для требуемой операционной системы с официального сайта Percona
1 |
https://www.percona.com/downloads/XtraBackup/ |
Update: Установка XtraBackup-2.4 на Ubuntu/Debian
1 |
# wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb |
1 |
# dpkg -i percona-release_0.1-4.xenial_all.deb |
1 |
# apt-get update |
1 |
# apt-get install percona-xtrabackup-24 |
[…]
Установка и использование Percona Toolkit
Установка Percona Toolkit Debian/Ubuntu
1 |
# wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb |
1 |
# dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb |
1 |
# apt-get update |
1 |
# apt-get install percona-toolkit |
Centos
1 |
# yum install perl-IO-Socket-SSL perl-Digest-MD5 perl-TermReadKey |
1 |
# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm |
1 |
# yum install percona-toolkit |
1 |
pt-variable-advisor |
Анализ переменных MySQL(на основе SHOW VARIABLES) и вывод рекомендаций
1 |
# pt-variable-advisor localhost |
1 |
pt-query-digest |
Анализ slow-log,списка процессов(show processlist) или tcpdump 1)Отчет самых медленных запросов из файла
1 |
# pt-query-digest /var/log/mysql/mysql-slow.log |
2)Отчет самых медленных запросов из списка процессов
1 |
# pt-query-digest --processlist h=127.0.0.1 |
Либо через анализ tcpdump
1 |
# tcpdump -s 65535 -x -nn -q -tttt -i any -c 10 port 3306 > mysql.tcp.txt |
1 |
# pt-query-digest --type tcpdump mysql.tcp.txt |
1 |
pt-ioprofile |
Просмотр […]
Установка и настройка Percona XtraDB Cluster на Centos7/Ubuntu14
Разработчик продукта рекомендует использовать минимум 3 ноды для создания кластера(причины описаны в статье). С целью знакомства с этим продуктом использовалось две ноды на виртуальных машинах. 1.Установка Percona XtraDB Cluster Centos
1 |
# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm |
Подключаем EPEL-репозитарий(если он еще не был подключен)
1 |
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm |
Устанавливаем пакет, необходимій для Percona XtraDB Cluster
1 |
# yum install socat |
Устанавливаем PXC
1 |
# yum install Percona-XtraDB-Cluster-56 |
Отклчаем SELinux, если он […]
Установка и настройка связки Exim+Dovecot+MySQL+PostixAdmin+Roundcube на Centos 7
1.Установка имени хоста
1 |
# hostnamectl set-hostname mail.example.com |
1 |
# nano /etc/hostname |
1 |
mail.example.com |
1 |
# nano /etc/hosts |
1 |
192.168.1.102 mail.example.com mail |
1 |
# systemctl restart systemd-hostnamed |
1 |
# hostname |
1 |
mail.example.com |
2.Установка и настройка Nginx
1 |
# nano /etc/yum.repos.d/nginx.repo |
1 2 3 4 5 |
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 |
1 |
# yum update |
1 |
# yum install nginx |
1 |
# nano nginx.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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
user nginx; worker_processes 1; worker_rlimit_nofile 1024; worker_priority -5; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; keepalive_timeout 65; types_hash_max_size 2048; gzip on; gzip_static on; gzip_comp_level 5; gzip_min_length 1024; gzip_proxied any; gzip_vary on; gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json font/ttf font/opentype application/vnd.ms-fontobject image/svg+xml; gzip_disable "msie6"; open_file_cache max=5000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_connect_timeout 90; fastcgi_send_timeout 90; fastcgi_read_timeout 90; client_max_body_size 100m; client_body_buffer_size 8K; include /etc/nginx/conf.d/*.conf; } |
Настройка виртуального хоста по умолчанию
1 |
# nano /etc/nginx/conf.d/default.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 31 32 33 34 35 |
server { listen 192.168.1.102:80 default_server; server_name localhost; root /usr/share/nginx/html; #charset koi8-r; access_log /var/log/nginx/default-access.log main; error_log /var/log/nginx/default-error.log warn; location / { try_files $uri $uri/ /index.php?$args; index index.php index.html index.htm ; } #include common/postfixadmin.conf; #include common/roundcube.conf; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+?\.php)(/.*)?$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ /\.ht { deny all; } } |
1 |
# systemctl restart nginx |
1 |
# systemctl enable nginx |
3.Установка и настройка PHP-FPM
1 |
# yum install php php-fpm php-mysql php-imap php-mbstring php-common php-pdo php-xml |
1 |
# nano /etc/php.ini |
1 2 3 4 5 6 7 8 |
expose_php = Off max_execution_time = 300 max_input_time = 600 memory_limit = 256M post_max_size = 100M cgi.fix_pathinfo=0 upload_max_filesize = 100M date.timezone = Europe/Kiev |
1 |
# nano php-fpm.conf |
1 2 3 4 |
emergency_restart_threshold = 10 emergency_restart_interval = 1m process_control_timeout = 10s daemonize = yes |
1 |
# nano /etc/php-fpm.d/www.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
listen.owner = nginx listen.group = nginx listen.mode = 0660 user = nginx group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 request_terminate_timeout = 350 request_slowlog_timeout = 3s slowlog = /var/log/php-fpm/www-slow.log catch_workers_output = yes security.limit_extensions = .php .php3 .php4 .php5 php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 256M php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session |
1 |
# chgrp -R nginx /var/lib/php/session/ |
1 |
# php-fpm -t |
1 |
# systemctl restart php-fpm |
1 |
# systemctl enable php-fpm |
4.Установка и настройка […]
Интеграция Fail2ban c CSF для защиты WordPress от bruteforce-атак
1. Установка, остановка и удаление с автозагрузки Fail2ban
1 |
# apt-get install fail2ban |
1 |
# service fail2ban stop |
1 |
# update-rc.d -f fail2ban remove |
2.Настройка запуска fail2ban средствами CSF
1 |
# nano /etc/csf/csfpost.sh |
1 2 |
#!/bin/sh /etc/init.d/fail2ban restart |
3.Отклчючение всех фильтров в Fail2ban
1 |
# sed -i "s|enabled = true|enabled = false|g" /etc/fail2ban/jail.conf |
4. Настройка поддержки CSF в Fail2ban
1 |
# nano /etc/fail2ban/action.d/csf-ip-deny.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Definition] actionstart = actionstop = actioncheck = actionban = csf -d <ip> Added by Fail2Ban for <name> # curl https://www.cloudflare.com/api_json.html -d 'a=ban' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>' actionunban = csf -dr <ip> # curl https://www.cloudflare.com/api_json.html -d 'a=nul' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>' # [Init] ###### Default Cloudflare API token # cftoken = XXXXXXXXXXXXXXXXXXXXXXXXXX ###### Default Cloudflare username # cfuser = me@example.com |
Если используется Cloudflare, то расскоментируем все строки с одним знаком комментария 5.Замена для всех фильтров Fail2ban действия блокировки на созданный «csf-ip-deny»
1 |
# sed -i -e "s|banaction = |banaction = csf-ip-deny\n#banaction = |" /etc/fail2ban/jail.conf |
6. […]