在Alma Linux 8上安装和配置OpenNMS
在Alma Linux 8上安装和配置OpenNMS
OpenNMS是一个用Java编写的免费开源网络监控和管理平台。 它是由用户、开发人员和 OpenNMS Group 组成的社区自行托管和开发的。 OpenNMS 允许您监控本地和远程网络上的所有内容,包括性能、流量监控、配置、服务监控、事件管理、K线走势图支持等。 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
更改以下与您的数据库凭据匹配的行:
保存并关闭文件,然后运行以下命令来检测 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 P新高: "/etc/alternatives/java"... runjava: Did not find an appropriate JVM in the P新高: "/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 => Change Password 按钮来更改默认密码,如下所示:
更改您的默认密码并单击“提交”按钮。 您将看到以下屏幕:
结论
恭喜 您已在Alma Linux 8上成功安装带有Nginx的OpenNMS。您现在可以从OpenNMS仪表板添加远程主机并开始从中央位置监控它们。 如果您有任何疑问,请随时问我。