Icinga

出自 ArchWiki

Icinga 是一个开源的主机、服务和网络监控程序。它可以监控指定的主机和服务,并在出现任何正在 developing 的问题、错误或改进时发出警报。本文介绍了 Icinga 的安装和配置。

安装

安装 icinga2AUR

您可能还需要安装 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_basedirphp.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/icinga2status.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 以应用更改。

参见