суббота, 14 ноября 2015 г.

Установка Icinga 2 в связке с PostgreSQL и nginx

Дистрибутив CentOS 7.
Документация: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc

Icinga 2 - это система мониторинга, форк Nagios.
Сравнение по багам: https://wiki.icinga.org/display/Dev/Bug+and+Feature+Comparison

Как добавить удаленный хост к мониторингу тут: http://blog.amet13.name/2015/11/icinga-2.html

Установка Icinga 2 и плагинов:
# yum install epel-release
# rpm --import http://packages.icinga.org/icinga.key
# curl -o /etc/yum.repos.d/ICINGA-release.repo http://packages.icinga.org/epel/ICINGA-release.repo
# yum makecache
# yum install icinga2 nagios-plugins-all
# systemctl enable icinga2
# systemctl start icinga2

Настройка подсветки в vim, понадобится при редактировании конфигов:
# mkdir  ~/.vim
# cp -R /usr/share/doc/icinga2-common-2.3.11/syntax/vim/{syntax,ftdetect} ~/.vim/
# tree ~/.vim/
/root/.vim/
├── ftdetect
│   └── icinga2.vim
└── syntax
    └── icinga2.vim

Проверить подсветку можно на файле:
# vim /etc/icinga2/conf.d/templates.conf

Установка СУБД, я для эксперимента выбрал PostgreSQL:
# yum install postgresql-server postgresql
# postgresql-setup initdb
# systemctl enable postgresql
# systemctl start postgresql

Установка модуля IDO PostgreSQL и создание базы для него:
# yum install icinga2-ido-pgsql
# cd /tmp
# sudo -u postgres psql -c "CREATE ROLE icinga WITH LOGIN PASSWORD 'icinga'";
# sudo -u postgres createdb -O icinga -E UTF8 icinga

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

Создаем доступы к базе:
# vim /var/lib/pgsql/data/pg_hba.conf
local   icinga      icinga                            md5
host    icinga      icinga      127.0.0.1/32          md5
host    icinga      icinga      ::1/128               md5

local   all    all                                    peer
host    all    all             127.0.0.1/32           ident
host    all    all             ::1/128                ident

И рестарт PostgreSQL:
# systemctl restart postgresql

Заливаем базу из шаблона:
# export PGPASSWORD=icinga
# psql -U icinga -d icinga < /usr/share/icinga2-ido-pgsql/schema/pgsql.sql

На всякий случай включаем ido-pgsql, хотя он у меня был включен:
# icinga2 feature enable ido-pgsql
# icinga2 feature list
Disabled features: api command compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog
Enabled features: checker ido-pgsql mainlog notification

Рестарт для применения настроек:
# systemctl restart icinga2

Установка Icinga Web 2:
# icinga2 feature enable command
# systemctl restart icinga2
# usermod -a -G icingacmd apache
# yum install icingaweb2 icingacli
# systemctl start httpd
# systemctl enable httpd
# firewall-cmd --permanent --add-service=http

Создаем токен:
# icingacli setup token create
# icingacli setup token show

Создаем базу данных для Icinga Web 2:
# usermod -a -G icingaweb2 apache
# cd /tmp
# sudo -u postgres psql -c "CREATE ROLE icingaweb2 WITH LOGIN PASSWORD 'icingaweb2'";
# sudo -u postgres createdb -O icingaweb2 -E UTF8 icingaweb2

# vim /var/lib/pgsql/data/pg_hba.conf
local   icingaweb2      icingaweb2                            md5
host    icingaweb2      icingaweb2      127.0.0.1/32          md5
host    icingaweb2      icingaweb2      ::1/128               md5

# systemctl restart postgresql

Проверить доступы к базе можно так:
# psql icingaweb2 icingaweb2 -W

Переходим по ссылке: http://ip-address/icingaweb2/setup и настраиваем Icinga 2 Web:






Пароль для администратора можно сгенерировать через pwgen:
# pwgen 14 1
du5Uoheeh4sei1 

Проверяем работоспособность, все должно быть ок.

Установка nginx в качестве реверс-прокси для apache:
# yum install nginx
# systemctl enable nginx

В /etc/httpd/conf/httpd.conf изменяем строку:
Listen 80
на
Listen 127.0.0.1:8080

Создаем виртхост для nginx:
# vim /etc/nginx/conf.d/icinga.mydomain.name.conf
server {
   listen      80;
   server_name icinga.mydomain.name;
   access_log  /var/log/nginx/icinga.mydomain.name.access.log  main;
   error_log   /var/log/nginx/icinga.mydomain.name.error.log;
   root        /usr/share/icingaweb2/public;
   index       index.html index.php;
   location / {
      error_log /dev/null crit;
      proxy_pass http://127.0.0.1:8080;
      proxy_redirect http://127.0.0.1:8080 /;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
   }
}

В /etc/httpd/conf.d/icingaweb2.conf дописываем в начале файла:
<VirtualHost 127.0.0.1:8080>
ServerName icinga.mydomain.name
и в конце файла:
</VirtualHost>

Применяем изменения:
# systemctl restart nginx
# systemctl restart httpd

Заходим по ссылке:
http://icinga.mydomain.name/icingaweb2/

2 комментария:

Анонимный комментирует...

При создании БД IDO в веб интерфейсе пишет "Cannot find the IDO schema. Please verify that the given database contains the schema and that the configured user has access to it." что делать?

Анонимный комментирует...

создать структуру бд командой
mysql -u root -p monitor < /usr/share/icinga2-ido-mysql/schema/mysql.sql
где monitor имя базы данных