Инструменты пользователя

Инструменты сайта


raspberry_pi:pi_4_model_b:raspberry_pi_os:icinga2:installation

Установка Icinga 2 на Raspberry Pi OS (64-bit)

Выбирая систему мониторинга для домашней сети на замену давно и успешно работающему потоку NodeRED, сперва решил попробовать Icinga 2, т.к. на скриншотах оно выглядело, как то, что нужно…

Но реальность в этот раз оказалась ко мне жестока! – мало того, что провозился с ней трое суток, так еще это и оказалось решением, которое «из коробки» не работает от слова совсем! Выругавшись, подружился с LibreNMS.

Эта статья, как дань уважению потраченному мной времени – путевые заметки, которые предоставляются частично, как сформированный текст, и частично, в совершенно сыром виде. Возможно, это кому-то чем-то сможет помочь.

Ошибки

Вот таким многообещающим сообщением нас встречает установка icinga2…

nikolay@servos:~ $ sudo apt install icinga2
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Некоторые пакеты не могут быть установлены. Возможно, то, что вы просите,
неосуществимо, или же вы используете нестабильную версию дистрибутива, где
запрошенные вами пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, вам поможет:

Следующие пакеты имеют неудовлетворённые зависимости:
 icinga2 : Зависит: icinga2-bin (= 2.12.3-1) но он не будет установлен
           Зависит: icinga2-common (= 2.12.3-1) но 2.13.7-1+raspbian11 должен быть установлен
           Рекомендует: icinga2-doc (= 2.12.3-1) но он не будет установлен
           Рекомендует: monitoring-plugins-basic но он не будет установлен или
                                   nagios-plugins-basic
           Рекомендует: libreadline7 но он не может быть установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.

В процессе борьбы выяснилось1), что Icinga 2.13.7 не скомпилирована под arm64 и в полноценном виде она на сегодня существует только, как armhf! Но по официальной документации, это совершенно не очевидно, увы.

Компиляция

  1. Авторизуемся под пользователем «root»

    sudo -s
  2. устанавливаем необходимые компоненты

    apt update && apt -y install apt-transport-https wget gnupg
  3. добавляем ключ репозитория

    wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
  4. добавляем файл настроек репозитория

    DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
    echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/raspbian icinga-${DIST} main" > /etc/apt/sources.list.d/icinga.list
    echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/raspbian icinga-${DIST} main" >> /etc/apt/sources.list.d/icinga.list
  5. обновляем списки пакетов

    apt update
  6. создаем папки и переходим

    mkdir -p /opt/build /opt/debs && cd /opt/build/
  7. проверяем и устанавливаем зависимости2)

    apt build-dep icinga2 icingaweb2 icinga-php-common icinga-php-library icinga-php-thirdparty icinga-l10n -y
  8. скачиваем исходники

    apt source icinga2 icingaweb2 icinga-php-common icinga-php-library icinga-php-thirdparty icinga-l10n
  9. создаем файл скрипта

    nano build_icinga.sh

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

    compilation.sh
    #!/bin/bash
     
    ICINGADIR=$(find /opt/build -maxdepth 1 -type d | grep icinga2-2)
    ICINGAWEBDIR=$(find /opt/build -maxdepth 1 -type d | grep icingaweb2-2)
    ICINGAPHPCOMMONDIR=$(find /opt/build -maxdepth 1 -type d | grep icinga-php-common)
    ICINGAPHPLIBRARY=$(find /opt/build -maxdepth 1 -type d | grep icinga-php-library)
    ICINGAPHPTHIRDPARTY=$(find /opt/build -maxdepth 1 -type d | grep icinga-php-thirdparty)
    ICINGAL10N=$(find /opt/build -maxdepth 1 -type d | grep icinga-l10n)
     
    cd ${ICINGADIR}
    dpkg-buildpackage -b -uc -us
     
    cd ${ICINGAWEBDIR}
    dpkg-buildpackage -b -uc -us
     
    cd ${ICINGAPHPCOMMONDIR}
    dpkg-buildpackage -b -uc -us
     
    cd ${ICINGAPHPLIBRARY}
    dpkg-buildpackage -b -uc -us
     
    cd ${ICINGAPHPTHIRDPARTY}
    dpkg-buildpackage -b -uc -us
     
    cd ${ICINGAL10N}
    dpkg-buildpackage -b -uc -us
     
    cd /opt/build
    mv *.deb /opt/debs
  10. разрешаем выполнение скрипта

    chmod 744 build_icinga.sh
  11. запускаем компиляцию

    ./build_icinga.sh
  12. удаляем не нужное

    find /opt/debs/ -name *ido-pgsql* -delete && find /opt/debs/ -name *vim* -delete

Установка

Все, что ниже, это поток сознания в заметку notepad, не судите. :-|


Устанавливаем php 7.4, apache2 и mariadb
sudo apt install php7.4 apache2 mariadb-server

правим часовой пояс
sudo nano /etc/php/7.4/apache2/php.ini
->> date.timezone = Asia/Vladivostok
Раскомментируйте конфигурацию 'cgi.fix_pathinfo' и измените значение на '0'.
cgi.fix_pathinfo=0 

перезапускаем апач
sudo systemctl restart apache2

настраиваем базу
sudo mysql_secure_installation
(у меня пароль qaz123wsx)

устанавливаем пакеты
cd /opt/debs/
sudo dpkg -i *

если ругается на зависимости то
sudo apt --fix-broken install

настройка icinga2-ido-mysql

запускаем командную стоку mysql (https://icinga.com/docs/icinga-2/2.10/doc/02-getting-started/#setting-up-icingaweb2)
mysql -u root -p

создаем базу 
CREATE DATABASE icinga;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga';
quit

импортируем схему 
mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Настраиваем апач
sudo icingacli setup config directory --group icingaweb2;

Создаем токен 
sudo icingacli setup token create

выбираем doc и Monitoring

проверяем, чтобы всего было вдоволь. у меня не хватало imagick

установка:
sudo apt install php-imagick
sudo nano /etc/php/7.4/apache2/php.ini
добавить в соответствующем разделе -->> extension=imagick
sudo systemctl restart apache2

далее Тип аутентификации - база данных

вводи данные для базы базы для хранения юзеров. самой базы может не существовать!
Название базы данных icinga_db
Имя пользователя icinga
Пароль icinga
Проверить конфиг.

далее мне сказали, что не могут создать базу с этими четными данными. ввел рут.

бэкэнд не меняем, хер знает, что это

вводим первого юзера

далее настройка логирования, не трогаем

проверяем, нажимаем далее.

указываем базу "icinga2" пользовать "icinga2" пароль ""
далее

настройка API
sudo icinga2 api setup

добавление пользователя api (там уже будет root)
sudo nano /etc/icinga2/conf.d/api-users.conf

---

object ApiUser "icingaweb2" {
  password = "gergregregerger"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}
----

перезапускаем ицингу
systemctl restart icinga2

вводим узел localhost
логин и пароль созданный выше

проверка конфигурации - ок.

-------------------------
установка модуля настройки ицинги (icingaweb2 director)
https://blog.it-kb.ru/2016/11/22/deploy-and-configure-icinga-2-on-debian-8-6-part-3-installation-of-icinga-director-1-2-0-module-for-icinga-web-2/
 
хуй я угадал с простым вариантом! не совместим....
это не канает ->> sudo apt install icingaweb2-module-director

поэтому 
sudo apt install git

sudo mkdir /usr/share/icingaweb2/modules/incubator
sudo git clone --branch v0.20.0 https://github.com/Icinga/icingaweb2-module-incubator.git /usr/share/icingaweb2/modules/incubator

sudo mkdir /usr/share/icingaweb2/modules/director
sudo git clone --branch v1.10.2 https://github.com/Icinga/icingaweb2-module-director.git /usr/share/icingaweb2/modules/director

ага выше и там и там надо сперва актуальную версию глянуть

создаем базу
mysql -u root -p

CREATE DATABASE director CHARACTER SET 'utf8';
GRANT ALL ON director.* TO 'icinga_di2'@'localhost' IDENTIFIED BY 'D1rect0rUsRPa$sw0rd';

в веб идем - настройки - приложения - ресурсы
создаем новый ресурс с базой выше и обязательным указанием набора символов "utf8"

переходим в "управление icinga" и выбираем эту базу

далее создаем схему

далее вводим имя конечной точки можно посмотреть sudo nano /etc/icinga2/constants.conf в параметре NodeName, имя пользователя root, пароль посмотреть тут sudo nano /etc/icinga2/conf.d/api-users.conf

тыкаем экспорт или что-то похожее

На этом месте я сперва все понял, а потом и окончательно сдался, да пошел дружиться с LibreNMS! LOL


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
Запрос от 2021 года, двадцать первого, Карл, сегодня 23-й!!!
2)
Параметр «-y» автоматически положительно отвечает на все вопросы приложения.

Обсуждение

Simcha Bryzgalov, 2024/06/01 15:44
Thanks. You helped me a lot.

Configure the Database

mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql

mysqlshow -u root -p icinga2

Now we need to tell Icinga how to connect to the database. Edit the /etc/icinga2/features-available/ido-mysql.conf file.

sudo nano /etc/icinga2/features-available/ido-mysql.conf
When you are done, the configuration file will look like this:
/**
* The IdoMysqlConnection type implements MySQL support
* for DB IDO.
*/
object IdoMysqlConnection "ido-mysql" {
user = "icinga2"
password = "your_password"
host = "localhost"
database = "icinga2"
}

Enable the IDO-MySQL Feature

sudo icinga2 feature enable ido-mysql
sudo icinga2 feature list

Install Monitoring Plugins

apt install monitoring-plugins

Prepare the Server for Clients
This one time process needs to be completed if you will be using an Icinga client installed locally on the machines you plan to monitor.
To prepare this server for that purpose, run the node wizard. Because the goal is to perform a master setup, be sure to answer "n" to the first question of "Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]:". Also, answer "n" to the last question of "Do you want to disable the inclusion of the conf.d directory [Y/n]:". Accept the defaults for the remaining questions by simply pressing ENTER for those questions.

sudo icinga2 node wizard
Example:
Please specify if this is a agent/satellite setup ('n' installs a master setup) [Y/n]: n
...
Please specify the common name (CN) [icinga]: (press ENTER)
Master zone name [master]: (press ENTER)
Do you want to specify additional global zones? [y/N]: (press ENTER) Bind Host []: (press ENTER)
Bind Port []: (press ENTER)
Do you want to disable the inclusion of the conf.d directory [Y/n]: n

Start Icinga
Configure the Web front end

sudo systemctl restart apache2
sudo cat /etc/icinga2/conf.d/api-users.conf
sudo icingacli setup token create

http://your_ip/icingaweb2/setup. Here, you'll enter the token you just created into the web application. Click the button labeled "Next".
Now you can simply follow the guided installation process. Below is a list of screen names followed by any required information. Many times you will accept the defaults. If you don't see suggested values, accept the defaults.
sudo systemctl start icinga2.service
sudo systemctl enable icinga2.service


Modules
Accept the defaults by clicking "Next."
Icinga Web 2
Accept the defaults by clicking "Next."
NOTE: Ignore the "PHP module Imagick is missing" message. You would only need that PHP module if you intended to export graphs in PDF format.
Authentication
Accept the defaults by clicking "Next."
Database Resource
Resource Name: icingaweb_db Database Type: MySQL
Host: localhost
Port: (leave blank - the default)
Database Name: icingaweb2
Username: icingaweb2
Password: your_password
Character Set: (leave blank - the default) Use SSL: (leave unchecked - the default)
Click "Validate Configuration" Click "Next"
NOTE: If you get prompted for an additional database user with extra privileges, use the MariaDB "root" user and the password you created for that root user.
Authentication Backend
Accept the defaults by clicking "Next."
Administration
Username: Password: Repeat password:
Click "Next."
Application Configuration
Accept the defaults by clicking "Next."
You've configured Icinga Web 2 successfully
Click "Next."
Welcome to the configuration of the monitoring module for Icinga Web 2
Click "Next."
Monitoring Backend
Accept the defaults by clicking "Next."
Monitoring IDO Resource
Resource Name : icinga_ido Database Type: MySQL
Host: localhost
Port: (leave blank - the default) Database Name: icinga2 Username: icinga2
Password: your_password
Character Set: (leave blank - the default) Use SSL: (leave unchecked - the default)
Click "Validate Configuration" Click "Next"
NOTE: If you get an error, see the "Database Troubleshooting Tips" lesson for information on how to correct the issue.
Command Transport
Transport Name: icinga2 Transport Type: Icinga 2 API Host: localhost
Port: 5665
SSH port to connect to on the remote Icinga instance
API Username: root
API Password: (Use the value noted from above. Hint: return to the command line and look at
the /etc/icinga2/conf.d/api-users.conf file)
Click "Validate Configuration" Click "Next"
Monitoring Security
Accept the defaults by clicking "Next."
You've configured the monitoring module successfully
Click "Finish"
Log into the Web Front End
After the installation is complete, you can access Icinga via the web at http://10.23.45.30/icingaweb2. Log in with the username of "admin" and the password of "admin". Feel free to explore the web interface and get acquainted with the various views.

Create the Master Zone Configuration Directory
When you ran the Icinga node wizard, a default zone named "master" was created. In Icinga, a zone is a trust hierarchy. For example, members of the master Icinga zone are allowed to send their Icinga check results to the master server. When we start to monitor other servers, which are called Icinga clients or Icinga satellites, they will be part of the master zone.
Configuration for a zone resides in the /etc/icinga2/zones.d/ZONE_NAME directory. Let's create the configuration directory for the master zone.
sudo mkdir /etc/icinga2/zones.d/master
All the configuration for members of the master zone will reside in the /etc/icinga2/zones.d/master directory.

Move the Default Monitoring Configuration Into the Master Zone Directory
Icinga includes some default configuration that resides in the /etc/icinga2/conf.d directory. The /etc/icinga2/conf.d/hosts.conf file contains example configuration to monitor the icinga host itself. Because the Icinga host itself is in the master zone, lets move its configuration into the appropriate directory.
Also, it's a good practice to name the configuration file for a host the same name as the host with ".conf" appended. So, not only will you move the hosts.conf file into the master zone directory, you will rename it to icinga.conf:
sudo mv /etc/icinga2/conf.d/hosts.conf /etc/icinga2/zones.d/master/icinga.conf
sudo systemctl restart icinga2.service

http://your_ip/icingaweb2

sudo nano /etc/icinga2/zones.d/master/icinga.conf
Uncomment the Icinga Web 2 section by changing this:
vars.http_vhosts["Icinga Web 2"] = {
http_uri = "/icingaweb2"
}
sudo systemctl restart icinga2.service
Look at the check for ip/icingaweb2.It should be reported as "OK".

Add a Host to Monitoring
sudo nano /etc/icinga2/zones.d/master/hostname.conf
object Host "hostname" {
import "generic-host"
address = "hostip"
vars.os = "Linux"
}
The import line causes the configuration for the "generic-host" template to be applied to this host. That configuration lives in the /etc/icinga2/conf.d/templates.conf file. This allows you to quickly change a setting in one place and have it applied to multiple hosts. Primarily this configuration tells Icinga how often to perform checks against the host.
The address line tells Icinga what the IP address of the host is. If you have DNS configured in your environment you can use a DNS hostname here, but just know that if you have a problem with DNS then it will cause the checks to fail. Strongly consider using IP addresses as we are doing here.
Icinga allows for custom variables, or custom attributes. When you see "vars.SOME_NAME", it is a custom variable. Here, we set vars.os to be "Linux." This custom variable is used to group hosts in the web front end. So, all the hosts that have "Linux" set for vars.os will be grouped together in the "Linux Servers" group. All the hosts that have "Windows" set for vars.os will be grouped together in the Windows group. You can create your own groups by modifying /etc/icinga2/conf.d/groups.conf.

sudo systemctl restart icinga2.service

Open the web frontend (http://your_ip/icingaweb2/monitoring/list/hosts) and check the status of the new host.

Prepare the Server for the Client
For each Icinga client you install, you'll need to create a ticket for it on the master Icinga server. This is part of the certificate process that allows for secure communications between the master Icinga server and the client machine.
Create a ticket for the new host.
sudo icinga2 pki ticket --cn 'hostname'
You'll need this ticket number when you configure the client.


Install the Icinga Client
Николай Солошин, 2024/06/01 17:43
Thanks for your comment! :)
Ваш комментарий:
P I Y᠎ I Y O J X M Q C F E Y T H
 
Последнее изменение: 2023/03/18 13:37 — Николай Солошин