在Alma Linux 8上安装和配置OpenNMS
OpenNMS是一个用Java编写的免费开源网络监控和管理平台。它是由用户、开发人员和 OpenNMS Group 组成的社区自行托管和开发的。 OpenNMS 允许您监控本地和远程网络上的所有内容,包括性能、流量监控、配置、服务监控、事件管理、图表支持等。 OpenNMS 使用 SNPM 和 JMX 来收集远程主机的信息。
这篇文章将向您展示如何在Alma Linux 8上使用Nginx安装OpenNMS。
先决条件
- 运行Alma Linux 8的服务器。
- 与您的服务器 IP 指向的有效域名。
- 服务器上配置了 root 密码。
安装Java JDK
OpenNMS 是一个基于java 的应用程序。所以你的服务器上必须安装Java JDK。您可以通过运行以下命令来安装它:
dnf install java-11-openjdk -y
安装 Java 后,您可以使用以下命令验证 Java 安装:
java --version
您将得到以下输出:
openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
在Alma Linux 8上安装OpenNMS
默认情况下,OpenNMS不包含在Alma Linux默认存储库中。因此,您需要将 OpenNMS 官方存储库添加到您的系统中。
您可以通过运行以下命令添加 OpenNMS 存储库和 GPG 密钥:
dnf install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel8.noarch.rpm
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY
接下来,通过运行以下命令安装 OpenNMS:
dnf install opennms -y
这还将把 PostgreSQL 服务器安装到您的服务器上。
接下来,将目录更改为 OpenNMS 并使用以下命令初始化 PostgreSQL 数据库:
cd /opt/opennms
postgresql-setup initdb
最后,使用以下命令启动并启用 PostgreSQL 服务:
systemctl start postgresql
systemctl enable postgresql
您现在可以使用以下命令检查 PostgreSQL 的状态:
systemctl status postgresql
您将得到以下输出:
? postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-01-15 13:34:47 UTC; 5s ago
Process: 7305 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
Main PID: 7307 (postmaster)
Tasks: 8 (limit: 11411)
Memory: 15.9M
CGroup: /system.slice/postgresql.service
??7307 /usr/bin/postmaster -D /var/lib/pgsql/data
??7309 postgres: logger process
??7311 postgres: checkpointer process
??7312 postgres: writer process
??7313 postgres: wal writer process
??7314 postgres: autovacuum launcher process
??7315 postgres: stats collector process
??7316 postgres: bgworker: logical replication launcher
Jan 15 13:34:47 almalinux8 systemd[1]: Starting PostgreSQL database server...
Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG: listening on IPv6 address "::1", port 5432
Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG: listening on IPv4 address "127.0.0.1", port 5432
为 OpenNMS 配置 PostgreSQL
接下来,您需要为 OpenNMS 创建数据库和用户。
首先,使用以下命令登录 PostgreSQL:
su - postgres -c "psql -U postgres"
接下来,使用以下命令更改 Postgres 密码:
alter user postgres with password 'mypassword';
接下来,使用以下命令为 OpenNMS 创建数据库和用户:
createuser -P opennms
createdb -O opennms opennms
接下来,使用以下命令退出 PostgreSQL shell:
\q
接下来,使用以下命令编辑 PostgreSQL 配置文件:
nano /var/lib/pgsql/data/pg_hba.conf
找到以下几行:
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
并且,将它们替换为以下行:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
最后,重新加载 PostgreSQL 服务以应用配置更改:
systemctl reload postgresql
配置 OpenNMS
接下来,您需要编辑 OpenNMS 数据源配置文件并定义数据库:
nano /opt/opennms/etc/opennms-datasources.xml
更改以下与您的数据库凭据匹配的行:
<jdbc-data-source name="opennms"
database-name="opennms"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/opennms"
user-name="opennms"
password="opennms" />
<jdbc-data-source name="opennms-admin"
database-name="template1"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/template1"
user-name="postgres"
password="mypassword" />
保存并关闭文件,然后运行以下命令来检测 Java 路径:
/opt/opennms/bin/runjava -s
您将得到以下输出:
runjava: Looking for an appropriate JVM...
runjava: Checking for an appropriate JVM in JAVA_HOME...
runjava: Skipping... JAVA_HOME not set.
runjava: Checking JVM in the PATH: "/etc/alternatives/java"...
runjava: Did not find an appropriate JVM in the PATH: "/etc/alternatives/java"
runjava: Searching for a good JVM...
runjava: Found a good JVM in "/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java".
runjava: Value of "/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java" stored in configuration file.
接下来,运行以下命令来初始化数据库并检测系统库:
/opt/opennms/bin/install -dis
您将得到以下输出:
- Running pre-execution phase
Creating backup of /opt/opennms/etc/service-configuration.xml
Zipping /opt/opennms/etc/service-configuration.xml
- Running execution phase
Current configuration: 32 services.
A service entry named 'OpenNMS:Name=PerspectivePoller' already exists.
Final configuration: 32 services.
- Saving the execution state
- Running post-execution phase
Removing backup /opt/opennms/etc/service-configuration.xml.zip
Finished in 0 seconds
Upgrade completed successfully!
最后,使用以下命令启动并启用 OpenNMS 服务:
systemctl start opennms
systemctl enable opennms
您可以使用以下命令检查 OpenNMS 的状态:
systemctl status opennms
您将得到以下输出:
? opennms.service - OpenNMS server
Loaded: loaded (/usr/lib/systemd/system/opennms.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-01-15 13:39:33 UTC; 6s ago
Process: 8638 ExecStart=/etc/init.d/opennms -s start (code=exited, status=0/SUCCESS)
Main PID: 9722 (java)
Tasks: 36 (limit: 11411)
Memory: 181.2M
CGroup: /system.slice/opennms.service
??9721 bash /etc/init.d/opennms -s start
??9722 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,ja>
Jan 15 13:39:22 almalinux8 systemd[1]: Starting OpenNMS server...
Jan 15 13:39:32 almalinux8 systemd[1]: opennms.service: Can't open PID file /opt/opennms/logs/opennms.pid (yet?) after start: No such file or>
Jan 15 13:39:33 almalinux8 systemd[1]: opennms.service: Supervising process 9722 which is not our child. We'll most likely not notice when it>
Jan 15 13:39:33 almalinux8 systemd[1]: Started OpenNMS server.
此时,OpenNMS已启动并监听8980端口,可以通过以下命令查看:
ss -antpl | grep 8980
您将得到以下输出:
LISTEN 0 50 *:8980 *:* users:(("java",pid=9722,fd=1031))
完成后,您可以继续下一步。
将 Nginx 配置为 OpenNMS 的反向代理
接下来,您需要安装 Nginx 并将其配置为 OpenNMS 的反向代理。为此,请使用以下命令安装 Nginx 服务器:
dnf install nginx -y
安装 Nginxx 后,创建 Nginx 虚拟主机配置文件:
nano /etc/nginx/conf.d/opennms.conf
添加以下行:
upstream opennms {
server 127.0.0.1:8980;
}
server {
listen 80;
server_name opennms.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://opennms/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
保存并关闭文件,然后使用以下命令验证 Nginx 配置:
nginx -t
您将得到以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来,启动并启用 Nginx 服务以在系统重新引导时启动:
systemctl start nginx
systemctl enable nginx
您现在可以使用以下命令检查 Nginx 的状态:
systemctl status nginx
您将得到以下输出:
? nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-01-15 13:44:05 UTC; 6s ago
Process: 13489 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 13488 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 13486 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 13491 (nginx)
Tasks: 2 (limit: 11411)
Memory: 3.7M
CGroup: /system.slice/nginx.service
??13491 nginx: master process /usr/sbin/nginx
??13492 nginx: worker process
Jan 15 13:44:05 almalinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 15 13:44:05 almalinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jan 15 13:44:05 almalinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.
配置防火墙
接下来,您需要允许端口 80 通过防火墙。您可以通过运行以下命令来允许它:
firewall-cmd --add-service=http --permanent
接下来,重新加载防火墙以应用更改:
firewall-cmd --reload
完成后,您可以继续下一步。
访问 OpenNMS Web 界面
现在,打开 Web 浏览器并使用 URL http://opennms.example.com 访问 OpenNMS Web 界面。您将看到 OpenNMS 登录屏幕:
提供默认的管理员用户名和密码 admin/admin,然后单击登录按钮。您将在以下屏幕上看到 OpenNMS 仪表板:
现在,点击admin => 更改密码按钮更改默认密码,如下所示:
更改您的默认密码并单击提交按钮。您将看到以下屏幕:
结论
恭喜!您已在Alma Linux 8上成功安装带有Nginx的OpenNMS。您现在可以从OpenNMS仪表板添加远程主机并开始从中央位置监控它们。如果您有任何疑问,请随时问我。