MariaDB & Zabbix

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:51, 23 сентября 2018.

Zabbix & MariaDB - комплекс решений, позволяющий проводить эффективное управление базы данных MariaDB.[Источник 1]

Описание компонентов

Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования. Основные возможности:

  • Распределённый мониторинг — до нескольких тысяч узлов. Конфигурация младших узлов полностью контролируется старшими узлами, находящимися на более высоком уровне иерархии;
  • Сценарии на основе мониторинга;
  • Автоматическое обнаружение;
  • Централизованный мониторинг журналов;
  • Веб-интерфейс для администрирования и настройки;
  • Отчётность и тенденции;
  • SLA-мониторинг;
  • Поддержка высокопроизводительных агентов (zabbix-agent) практически для всех платформ;
  • Комплексная реакция на события;
  • Поддержка SNMP v1, 2, 3;
  • Поддержка SNMP-ловушек;
  • Поддержка IPMI;
  • Поддержка мониторинга JMX-приложений;
  • Поддержка выполнения запросов в различные базы данных без необходимости использования сценарной обвязки;
  • Расширение за счёт выполнения внешних скриптов;
  • Гибкая система шаблонов и групп;
  • Возможность создавать карты сетей.

MariaDB - ответвление от системы управления базами данных MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation MariaDB намерен поддерживать высокую совместимость с MySQL, обеспечивая точное соответствие с API и командами MySQL. В состав MariaDB включена подсистемы хранения данных XtraDB для возможности замены InnoDB, как основной подсистемы хранения. Также включены подсистемы Aria, PBXT и FederateX.

Zabbix применимо к MariaDB

Zabbix является известным и успешным решением в области мониторинга и управлении базами данных. Подключившись к MariaDB, Zabbix способен в режиме реального времени вести наблюдение за процессами, происходящими в базе данных. Он снимает множество показателей, вот некоторые из них[Источник 2]:

  1. Количество запросов SELECT в секунду, а так же INSERT, UPDATE, REPLACE, DELETE;
  2. Данные о состоянии кэша;
  3. Количество активных "медленных" запросов ;
  4. Количество временных таблиц, созданных в памяти и на жестком диске;
  5. Данные о запущенных потоках;
  6. Данные об использовании сети.

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

Порядок установки

Инструкция предназначена для CentOS 6.4[Источник 3]:. Необходимо скачать образ с официального сайта CentOS. После установки необходимо провести начальную конфигурацию ОС.В первую очередь необходимо получить доступ к сети. После ввода логин-пароля (root и указанный при установке пароль), нужно ввести следующее:
1.Редактируем файл конфига интерфейса:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

2.В появившемся редакторе нужно заменить строку ONBOOT следующую строку:

ONBOOT=yes

3.Сохранить файл комбинацией ESC + ⇧ Shift + Z + Z 4.Перезагрузить ОС:

reboot

5. Следующий этап не является обязательным, но сильно увеличивает удобство установки, убирая необходимость вручную набирать команды ( в сумме несколько тысяч символов), позволяя пользоваться копированием. Если SSH не нужен, можно пропустить его установку
6. Установка пакета openSSH:

yum -y install openssh-server openssh-clients

7. Нужно скачать и установить putty или любой другой SSH-клиент.
8. Этот пункт нужен, если используется OracleVM. При создании ВМ с сетью по умолчанию, Oracle дает им IP 10.0.2.X, не давая никому напрямую по этим IP связываться с хостом. Чтобы иметь возможность подключиться по ssh нужно:

  • Зайти в настройки ВМ;
  • Выбрать пункт "Сеть" ("Network");
  • Развернуть поле "Дополнительно" ("Advanced");
  • Выбрать пункт "Port forwarding";
  • Добавить правило следующего вида: Protocol = TCP, HostIP = 127.0.0.1, HostPort = 22, GuestIP = 10.0.2.15, GuestPort =22

9. GuestIP может отличаться. Поэтому его изначально стоит узнать в CentOS:

ifconfig

10. После того, как настройка Port Forwarding завершена, можно начинать работать с системой по SSH.
11. Перейдем к началу установки:
12. В некоторых случаях, Zabbix начинает работать некорректно в CentOS из-за политик SELinux. В случае возникновения таких проблем можно выключить SELinux выключить его:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Это не решение проблемы, а лишь временный способ заставить систему заработать.
13. Настроить часовой пояс и запустить синхронизацию времени:

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
yum install ntp -y
chkconfig ntpd on
/etc/init.d/ntpd stop
ntpdate 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org
/etc/init.d/ntpd start

14. Устанавить вспомогательные компоненты:

yum install wget nano wget ntpdate -y 

15. Установка RPM-forge. В нем находится много обязательного для Zabbix ПО:

rpm -ivc https://www.rpmfind.net/linux/dag/redhat/el5/en/x86_64/dag/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

16. Репозиторий, необходимый для установки и работы Zabbix и MariaDB:

rpm --import dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
cd /tmp
wget dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm && rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

17. По умолчанию выключаем этот репозитроий, будем использовать через --enablerepo=rpmforge:

sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo

18. Еще один репозиторий, необходимый для Zabbix и MariaDB:

wget -q -O - www.atomicorp.com/installers/atomic | sh

19. Ставим разного рода софт:

yum install nano mc screen sudo nscd htop ntp zip unzip pigz iotop sysstat lsof strace atop multitail -y
yum --enablerepo=rpmforge install htop -y

20. Обновляем систему. Это может занять некоторое время (в моем случае - около 30 минут):

yum update -y

21. Добавляем официальный репозиторий zabbix:

wget repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
rpm -ivc zabbix-release-2.2-1.el6.noarch.rpm

22. Удаляем старые части php, mysql, MariaDB

yum remove php-* mysql-* MariaDB-* -y

23. Ставим MariaDB по инструкции с официального сайта:

nano /etc/yum.repos.d/MariaDB.repo

24. В появившемся редактор вставляем эти данные:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

25. Сохраняем документ: Ctrl + X + Y + ↵ Enter
26. Установка MariaDB:

yum install MariaDB-server MariaDB-client -y

27. Установка доп. компонентов. Если части компонентов нет, то репозитории из пунктов 15-18 стали недоступными по старому адресу. В этом случае придется вручную искать новые.

yum install ntp php php-mysql php-mbstring php-mcrypt rpm-build gcc mariadb-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel php-fpm php-cli php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-pecl-apc hp-magpierss php-snmp php-tidy spawn-fcgi openssl perl-TimeDate webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder perl-TimeDate libevent-devel php-pecl-memcache nginx cronie cronie-anacron crontabs postfix sysstat -y

28. Установка Zabbix:

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

29. Редактирование файлов конфигурации. Здесь указываются доступные ресурсы системы для MariaDB, ее текущие настройки и ряд других параметров:

 nano /etc/my.cnf

30. Заменить содержимое файла на:

 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default_storage_engine=InnoDB
innodb_file_per_table = 1
#
#
# network
connect_timeout = 60
wait_timeout = 28800
max_connections = 200
max_allowed_packet = 512M
max_connect_errors = 1000

# limits
tmp_table_size = 512M
max_heap_table_size = 256M
table_cache = 1024

# logs
log_error = /var/log/mysql/mysql-error.log
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#slow_query_log = 1
#long_query_time = 20

# innodb
default_storage_engine=InnoDB
innodb_file_per_table = 1
innodb_status_file = 1
innodb_additional_mem_pool_size = 128M
innodb_buffer_pool_size = 12G # Значение этого параметра должно быть не более 60% от объема ОЗУ на сервере
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_flush_log_at_trx_commit = 2
innodb_support_xa = 0
innodb_log_buffer_size = 128M

# experimental
innodb_stats_update_need_lock = 0

# other stuff
event_scheduler = 1
query_cache_type = 0
query_cache_size = 536870912
join_buffer_size=1M
query_cache_limit=2M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_buffer = 256M
key_buffer_size=64M
open_files_limit = 100000
thread_cache_size = 100

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

31. Добавляем в автозагрузку

chkconfig mysql on

32. Php-fpm в автозагрузку

 chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm start

33. Удаляем файлы конфигурации nginx по умолчанию

rm /etc/nginx/conf.d/default.conf -f
rm /etc/nginx/conf.d/virtual.conf -f

34. Добавляем правила iptables

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 10050 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 10051 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
service iptables save

35. Внесем изменения в еще один конфигурационный файл

nano /etc/php.ini

36. Здесь важно задать timezone. Удалить все содержимое, вставить это:

post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Europe/Moscow

37. Внесем изменения в еще один конфигурационный файл

nano /etc/zabbix/zabbix_server.conf

Здесь важно указать socket для базы данных. По умолчанию указан неверный путь. Удалить все содержимое, вставить это

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBUser=zabbix
DBPassword=9c9yUiUuros
DBSocket=/var/lib/mysql/mysql.sock
SNMPTrapperFile=/var/log/snmptt/snmptt.log
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts

38. Zabbix в автозагрузку

chkconfig zabbix-server on

39. Внесем изменения в еще один конфигурационный файл. Необходимо указать верные пути для Zabbix.

nano /etc/nginx/nginx.conf

Удалить все содержимое, вставить это:

user nginx;
worker_processes 10;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
use epoll;

multi_accept on;

}

error_log /var/log/nginx/error.log warn;

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;

connection_pool_size 256;
client_header_buffer_size 4k;
client_max_body_size 100m;
large_client_header_buffers 8 8k;
request_pool_size 4k;
output_buffers 1 32k;
postpone_output 1460;
proxy_max_temp_file_size 0;
gzip on;
gzip_min_length 1024;
gzip_proxied any;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json;
gzip_comp_level 8;
gzip_disable «MSIE [1-6]\.(?!.*SV1)»;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
server_names_hash_max_size 8192;
ignore_invalid_headers on;
server_name_in_redirect off;

proxy_buffer_size 8k;
proxy_buffers 32 4k;
proxy_connect_timeout 1000;
proxy_read_timeout 12000;
proxy_send_timeout 12000;
proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:5m inactive=10m max_size=50m;
real_ip_header X-Real-IP;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

allow all;

include /etc/nginx/conf.d/*.conf;
}
server {
listen 80;
server_name имя;
server_name другое имя;

location / {
root /usr/share/zabbix;
index index.php index.html index.htm;
}

location ~ \.php$ {
root /usr/share/zabbix;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

server {
listen 80;
server_name _;

location / {
root /usr/share/zabbix;
index index.php index.html index.htm;
}

location ~ \.php$ {
root /usr/share/zabbix;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

40. Убираем apache из автозагрузки

chkconfig --levels 235 httpd off
/etc/init.d/httpd stop

41. Добавляем nginx в автозагрузку

chkconfig --levels 235 nginx on

42. Финальная перезагрузка

reboot

Видео установки

Источники

  1. Официальный сайт Zabbix. URL:https://www.zabbix.com/ru/ (дата обращения: 31.08.2018)
  2. Использование Zabbix для мониторинга критических систем. URL:https://xakep.ru/2014/08/13/using-zabbix/ (дата обращения: 31.08.2018)
  3. Zabbix 2.2 верхом на nginx + php-fpm и mariadb. URL:https://habr.com/company/acronis/blog/198354/ (дата обращения: 31.08.2018)