OpenNMS 部署步骤
环境
centos 7系统
[root@review ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@review ~]# uname -r
3.10.0-957.el7.x86_64
安装 PostgreSQL
1 添加 PostgreSQL 12 软件包存储库
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2 下载 PostgreSQL 12 客户端、服务端
yum -y install postgresql12-server postgresql12
3 PostgreSQL 数据库初始化
[root@review ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
4 设置开机自启
systemctl enable --now postgresql-12
# 查看进程
[root@review ~]# ps aux|grep postgres
postgres 7333 0.0 0.9 397816 17568 ? Ss 17:02 0:00 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
postgres 7335 0.0 0.1 252184 2052 ? Ss 17:02 0:00 postgres: logger
postgres 7337 0.0 0.1 397816 2060 ? Ss 17:02 0:00 postgres: checkpointer
postgres 7338 0.0 0.1 397948 2824 ? Ss 17:02 0:00 postgres: background writer
postgres 7339 0.0 0.3 397816 6256 ? Ss 17:02 0:00 postgres: walwriter
postgres 7340 0.0 0.1 398368 3244 ? Ss 17:02 0:00 postgres: autovacuum launcher
postgres 7341 0.0 0.1 252180 2120 ? Ss 17:02 0:00 postgres: stats collector
postgres 7342 0.0 0.1 398372 2804 ? Ss 17:02 0:00 postgres: logical replication launcher
root 7350 0.0 0.0 112724 984 pts/0 S+ 17:03 0:00 grep --color=auto postgres
5 创建opennms数据库用户和密码
[root@review ~]# sudo -i -u postgres createuser -P opennms
为新角色输入的口令: 123456
再输入一遍: 123456
创建一个空数据库,将所有者设置为opennms
sudo -i -u postgres createdb -O opennms opennms
给 PostgreSQL 超级用户设置密码
sudo -i -u postgres psql -c "ALTER USER postgres WITH PASSWORD '2024'; "
6 更改 PostgreSQL 的访问策略
vim /var/lib/pgsql/12/data/pg_hba.conf
pg_hba.conf 文件中定义了一种连接类型、连接来源、目标数据库、用户和使用的认证方法。
常见的认证方法包括:
- trust不需要密码连接。
- reject拒绝所有的连接。
- md5要求输入密码,而且通过 MD5 加密进行验证。
- password要求输入密码,但是密码以明文形式发送。
- peer使用操作系统的用户身份进行认证。
- ident使用基于映射的系统用户身份进行认证。
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
修改为
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
7 重新加载配置
systemctl reload postgresql-12
安装 openNms
1 下载官方的rpm包
rpm -Uvh https://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
2 查看
[root@review ~]# yum list opennms
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* epel: d2lzkl7pfhq30w.cloudfront.net
opennms-repo-stable-common | 1.5 kB 00:00:00
opennms-repo-stable-rhel7 | 1.5 kB 00:00:00
(1/2): opennms-repo-stable-rhel7/primary | 18 kB 00:00:01
(2/2): opennms-repo-stable-common/primary | 33 kB 00:00:01
opennms-repo-stable-common 277/277
opennms-repo-stable-rhel7 94/94
可安装的软件包
opennms.noarch 33.0.9-1 opennms-repo-stable-common
3 下载 opennms
yum install -y opennms
这一步会自动部署Java环境,可以查看Java版本。
[root@review ~]# java -version
openjdk version "11.0.23" 2024-04-16 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS, mixed mode, sharing)
4 禁止自动更新
yum -y install yum-utils
5 tree 查看目录结构
# 下载tree命令
[root@review ~]# yum install tree -y
[root@review ~]# tree /opt/opennms -L 1
/opt/opennms
├── agent
├── bin
├── data
├── deploy
├── etc
├── jetty-webapps
├── lib
├── logs -> /var/log/opennms
├── share -> /var/opennms
└── system
10 directories, 0 files
6 配置 PostgreSQL 数据库访问
sudo -u opennms vim /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="${scv:postgres:username|opennms}"
password="${scv:postgres:password|opennms}" />
<jdbc-data-source name="opennms-admin"
database-name="template1"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/template1"
user-name="${scv:postgres-admin:username|postgres}"
password="${scv:postgres-admin:password|}">
<connection-pool idleTimeout="600"
minPool="0"
maxPool="10"
maxSize="50" />
</jdbc-data-source>
<jdbc-data-source name="opennms-monitor"
database-name="postgres"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/postgres"
user-name="${scv:postgres-admin:username|postgres}"
password="${scv:postgres-admin:password|}">
<connection-pool idleTimeout="600"
minPool="0"
maxPool="10"
maxSize="50" />
</jdbc-data-source>
修改为
<jdbc-data-source name="opennms"
database-name="opennms"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://192.168.1.91:5432/opennms"
user-name="opennms"
password="123456" />
<jdbc-data-source name="opennms-admin"
database-name="template1"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://192.168.1.91:5432/template1"
user-name="postgres"
password="2024">
<connection-pool idleTimeout="600"
minPool="0"
maxPool="10"
maxSize="50" />
</jdbc-data-source>
<jdbc-data-source name="opennms-monitor"
database-name="postgres"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://192.168.1.91:5432/postgres"
user-name="postgres"
password="2024">
<connection-pool idleTimeout="600"
minPool="0"
maxPool="10"
maxSize="50" />
</jdbc-data-source>
保存退出。
7 分配java环境
[root@review ~]# /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: "/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64/bin/java"...
runjava: Found an appropriate JVM in the PATH: "/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64/bin/java"
runjava: Value of "/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64/bin/java" stored in configuration file.
8 初始化数据库
/opt/opennms/bin/install -dis
9 配置 PostgreSQL 数据库访问
systemctl edit --full opennms.service
[Unit]
Description=OpenNMS server
Wants=postgresql.service
Requires=network.target network-online.target
After=postgresql.service postgresql-10.service postgresql-11.service postgresql-12.service postgresql-13.service network.target network-online.target
[Service]
AmbientCapabilities=CAP_NET_RAW CAP_NET_BIND_SERVICE # 添加这行
User=opennms
Environment="OPENNMS_HOME=/opt/opennms"
Type=forking
RuntimeDirectory=opennms
RuntimeDirectoryMode=0775
PIDFile=/var/run/opennms/opennms.pid
ExecStart=/opt/opennms/bin/opennms -s start
# cosmetic: sleep just long enough that Systemd doesn't complain about not seeing the PID file yet
ExecStartPost=/bin/sleep 3
ExecStop=/opt/opennms/bin/opennms -s stop
[Install]
WantedBy=multi-user.target
保存后退出。
# 重新加载
systemctl daemon-reload
# 重启
systemctl restart opennms
10 开机自启核心实例
systemctl enable --now opennms
11 设置防火墙
sudo firewall-cmd --permanent --add-port=8980/tcp
重新加载防火墙
systemctl reload firewalld
12 浏览器访问
http://192.168.1.91:8980