Icinga
Icinga 是一个开源的主机、服务和网络监控程序。它可以监控指定的主机和服务,并在出现任何正在 developing 的问题、错误或改进时发出警报。本文介绍了 Icinga 的安装和配置。
安装
您可能还需要安装 monitoring-plugins。
启动/启用 icinga2.service
。
Icinga Web 2
安装 icingaweb2AUR 以及可选的 icingaweb2-module-directorAUR。
启用 icinga-director.service
如果您安装了 director 模块。
配置 Web 服务器
如果您使用 php-fpm,您将需要 覆盖 unit - 如果您使用 php-fpm-legacy,请确保将 php-fpm.service.d
替换为 php-fpm-legacy.service.d
/etc/systemd/system/php-fpm.service.d/override_icingaweb2.conf
[Service] ReadWritePaths = /etc/icingaweb2
您还需要将您的 Web 服务器添加到 icingaweb2
组,以便能够直接从 Web 应用程序创建和更改配置文件,假设 http
是 Web 服务器用户
# usermod -a -G icingaweb2 http
nginx
服务器块示例,使用 php-legacy,示例中的 sock 路径将变为 /run/php-fpm-legacy/php-fpm.sock
server { listen 80; listen [::]:80; server_name localhost; root /usr/share/webapps/icingaweb2/public; location ~ ^/icingaweb2/index\.php(.*)$ { fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/webapps/icingaweb2/public/index.php; fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2; fastcgi_param REMOTE_USER $remote_user; } location ~ ^/icingaweb2(.+)? { alias /usr/share/webapps/icingaweb2/public; index index.php; try_files $1 $uri $uri/ /icingaweb2/index.php$is_args$args; } }
Apache
如果您收到 HTTP/503 错误,请检查配置文件以查看您是否被允许访问该页面
Order allow,deny Allow from all
这必须位于 <Directory "/usr/local/icinga-web/lib/ext3/">
和 <Directory "/usr/local/icinga-web/pub/">
部分中。
配置 PHP
取消注释以下扩展
/etc/php/php.ini
curl gettext pdo_mysql - MariaDB setups pdo_pgsql - PostgreSQL setups pgsql - PostgreSQL setups intl - Icinga Web 2 sockets - Director
如果 open_basedir
在 php.ini
中设置,您需要授权 /usr/share/icinga-php
,并且您需要创建 ICINGAWEB_LOCALEDIR
环境变量 为 /usr/share/icinga-php/icinga-L10n/locale
,以避免在 /usr/share/webapps/icingaweb2/library/Icinga/Application/ApplicationBootstrap.php
第 740 行出现 open_basedir
错误。
配置 Icinga
您可以选择 PostgreSQL 或 MariaDB 作为 Icinga 的后端。
默认情况下,Icinga 使用以下文件和目录
/etc/icinga2
— 包含 Icinga 2 配置文件。/usr/sbin/icinga2*
— Icinga 2 二进制文件。/usr/share/doc/icinga2
— Icinga 2 附带的文档文件。/usr/share/icinga2/include
— Icinga 模板库和插件命令配置。/var/run/icinga2
— PID 文件。/var/run/icinga2/cmd
— 命令管道和 Livestatus 套接字。/var/cache/icinga2
—status.dat
/objects.cache
,icinga2.debug
文件/var/spool/icinga2
— 用于性能数据假脱机文件。/var/lib/icinga2
— Icinga 2 状态文件、集群日志、本地 CA 和配置文件。/var/log/icinga2
— 日志文件位置和 compat/ 目录,用于 CompatLogger 功能。
自动
生成设置令牌,并使用设置页面让 Icinga Web 2 处理它
# icingacli setup config directory --group icingaweb2; # icingacli setup token create;
https://127.0.0.1/icingaweb2/setup
手动
如果您不想使用 Icinga Web 2 为您配置所有内容。
MariaDB
https://icinga.com/docs/icinga-2/latest/doc/02-installation/
https://icinga.com/docs/icinga-web/latest/doc/02-Installation/
创建 icinga 用户和数据库
# mysql -u root -p > CREATE DATABASE icinga; > GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'supersecretpassword'; > quit
创建 icingaweb2 用户和数据库
# mysql -u root -p > CREATE DATABASE icingaweb2; > GRANT ALL ON icingaweb2.* TO 'icingaweb2'@'localhost' IDENTIFIED BY 'anothersecurepassword'; > quit
导入 icinga 模式
# mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
导入 icingaweb2 模式
# mysql -p icingaweb2 < /usr/share/webapps/icingaweb2/etc/schema/mysql.schema.sql
创建 director 数据库和用户
# mysql -u root -p > CREATE DATABASE director CHARACTER SET 'utf8'; > CREATE USER director@localhost IDENTIFIED BY 'directorpassword'; > GRANT ALL ON director.* TO director@localhost;
创建一个用户以登录 Icinga Web 2
$ php -r 'echo password_hash("yourwebpassword", PASSWORD_DEFAULT);'
使用您从上一个命令中获得的哈希值,替换此示例中的哈希值以将新用户插入到数据库中
# mysql -u root -p > USE icingaweb2; > INSERT INTO icingaweb_user (name, active, password_hash) VALUES ('icingaadmin', 1, '$2y$10$G.qLnALysvw3yr5wP70sF.KtlwB/xDYypRU3x2WZd6x3N0oBAXuIi');
使用您的 SQL 详细信息编辑 /etc/icinga2/features-available/ido-mysql.conf
。
启用 ido-mysql
# icinga2 feature enable ido-mysql
PostgreSQL
https://icinga.com/docs/icinga2/latest/doc/02-installation/#installing-postgresql-database-server
以 postgres 用户身份,创建 icinga 用户和数据库
[postgres]$ psql -c "CREATE ROLE icinga WITH LOGIN PASSWORD 'supersecretpassword'" [postgres]$ createdb -O icinga -E UTF8 icinga
创建 icingaweb2 用户和数据库
[postgres]$ psql -c "CREATE ROLE icingaweb2 WITH LOGIN PASSWORD 'anothersecurepassword'" [postgres]$ createdb -O icingaweb2 -E UTF8 icingaweb2
导入 icinga 模式
# psql -U icinga -d icinga < /usr/share/icinga2-ido-pgsql/schema/pgsql.sql
导入 icingaweb2 模式
# psql -U icingaweb2 -d icingaweb2 < /usr/share/webapps/icingaweb2/etc/schema/pgsql.schema.sql
创建 director 数据库和用户
[postgres]$ psql -q -c "CREATE DATABASE director WITH ENCODING 'UTF8';" [postgres]$ psql director -q -c "CREATE USER director WITH PASSWORD 'directorpassword'; GRANT ALL PRIVILEGES ON DATABASE director TO director; CREATE EXTENSION pgcrypto;"
创建一个用户以登录 Icinga Web 2
$ php -r 'echo password_hash("yourwebpassword", PASSWORD_DEFAULT);'
使用您从上一个命令中获得的哈希值,替换此示例中的哈希值以将新用户插入到数据库中
[postgres]$ psql -d icingaweb2 icingaweb2=# INSERT INTO icingaweb_user (name, active, password_hash) VALUES ('icingaadmin', 1, '$2y$10$G.qLnALysvw3yr5wP70sF.KtlwB/xDYypRU3x2WZd6x3N0oBAXuIi');
使用您的 SQL 详细信息编辑 /etc/icinga2/features-available/ido-pgsql.conf
。
启用 ido-pgsql
# icinga2 feature enable ido-pgsql
最后
启用 Icinga API
# icinga2 api setup
启用 director 模块及其依赖项
# icingacli module enable incubator # icingacli module enable director
创建 Director 数据库模式
# icingacli director migration run --verbose
重启 icinga2.service
以应用更改。
如果您选择使用 Icinga Web 2,请创建适当的 .ini 文件(如果您使用 MariaDB,请为数据库和端口使用 mysql 和 3306)
/etc/icingaweb2/authentication.ini
[icingaweb2] backend = db resource = icingaweb2
/etc/icingaweb2/resources.ini
[icingaweb2] type = "db" db = "pgsql" host = "localhost" port = "5432" dbname = "icingaweb2" username = "icingaweb2" password = "anothersecurepassword" [icinga2] type = "db" db = "pgsql" host = "localhost" port = "5432" dbname = "icinga" username = "icinga" password = "supersecretpassword" [director] type = "db" db = "pgsql" host = "localhost" port = "5432" dbname = "director" username = "director" password = "directorpassword" charset = "utf8"
以下是当前的默认配置,重要的非默认部分是 config_resource
。
也可以通过 https://127.0.0.1/icingaweb2/config/general 来生成此文件。
/etc/icingaweb2/config.ini
[global] show_stacktraces = "1" show_application_state_messages = "1" module_path = "/usr/share/webapps/icingaweb2/modules" config_resource = "icingaweb2" [security] use_strict_csp = "0" [logging] log = "syslog" level = "ERROR" application = "icingaweb2" facility = "user"
/etc/icingaweb2/roles.ini
[admins] users = "icingaadmin" permissions = "*"
/etc/icingaweb2/modules/director/config.ini
[db] resource = "director"
转到 https://127.0.0.1/icingaweb2/ 并尝试以 'icingaadmin' 和您选择的密码登录 - 如果一切正常,您就完成了基本设置!
升级数据库
新版本通常需要升级数据库。您可以在以下文件夹中找到 SQL 升级脚本
/usr/share/icinga2-ido-mysql/schema/upgrade /usr/share/icinga2-ido-pgsql/schema/upgrade /usr/share/webapps/icingaweb2/schema/mysql-upgrades /usr/share/webapps/icingaweb2/schema/pgsql-upgrades
要进行升级,请 cd 进入上面写的相应文件夹并导入模式,例如
# mysql -u root -p icinga < ./2.8.1.sql # mysql -u root -p icingaweb2 < ./2.12.0.sql # psql -U icinga -d icinga < ./2.8.1.sql # psql -U icingaweb2 -d icingaweb2 < ./2.12.0.sql
重启 icinga2.service
以应用更改。
参见
- 文档 - 官方文档
- monitoring-plugins - Icinga 和其他监控应用程序的默认插件
- Nagios 插件 - 传统插件的家园
- 维基百科文章
- NagiosExchange - Icinga 的插件、附加组件、邮件列表概述