1. Java 环境

要定位 Java 系统文件,应用程序通常使用 $JAVA_HOME 环境变量。 操作系统启动时可以为特定用户或全局设置环境。

例如,相应路径在 RHEL, Debian 和 Microsoft Windows 系统
  • RHEL: /usr/java/jdk1.8.0_71

  • Debian: /usr/lib/jvm/java-8-oracle

  • Microsoft Windows: C:\Program Files\Java\jre1.8.0_71

1.1. 在 Linux 上设置 JAVA_HOME

选项1: 为当前用户设置 Java 环境
vi ~/.bash_profile
export JAVA_HOME=/path/to/java
选项2: 在开机时为所有用户设置 Java 环境
vi /etc/profile
export JAVA_HOME=/path/to/java

1.2. 在微软 Windows 上设置 JAVA_HOME

选项1: 将 JAVA_HOME 设置为特定用户的系统变量
setx "JAVA_HOME" "path\to\java"
选项1: 设置 JAVA_HOME 系统变量
setx /M "JAVA_HOME" "path\to\java"

2. 安装基础的 OpenNMS Horizon

OpenNMS 平台可以安装在多个OS平台上。 本指南介绍了基于 Red Hat Enterprise Linux (RHEL), _Debian 和 _Microsoft Windows 操作系统平台的安装。

2.1. 目标

  • 当单节点安装 OpenNMS Horizon 组件使,可以使用内置的 JRobin 作为时间序列存储

  • 在推荐的操作系统上安装 OpenNMS Horizon

  • 登录到 Web 用户界面并更改 admin 默认密码

2.2. 准备条件

以下缩写将用于本文档引用。

Table 1. 操作系统

RHEL

Red Hat Enterprise Linux 7 或更高, CentOS 7 或更高

Debian

Debian 9 或更高, Ubuntu 16.04 LTS 或更高

Windows

Microsoft Windows Server 2012, Windows 10

建议满足以下要求:

Table 2. 安装要求

最小硬件

2 CPU, 2 GB RAM, 20 GB 磁盘

操作系统

建议使用当前版本的 RHELDebian。 请注意,OpenNMS Horizon 是在 Linux 系统上开发和运转。 当在 Microsoft Windows 平台上运行时,社区支持是有限的。 在 Microsoft Windows 平台不支持用于时间序列数据统计的 R 集成。

互联网

在 Microsoft Windows 上通过 https 访问 {yum,debian}.opennms.orgSourceForge

DNS 设置

请确保 OpenNMS 服务器的 DNS 设置正确,并且可以解析 localhost 主机名。 如果服务器主机名的 资源记录 不正确或丢失,OpenNMS 可能无法正常启动。 Java 安全管理器可能不能初始化,并且会显示一个 RMI 类加载器禁用 的异常信息。

根据安装的操作系统,OpenNMS Horizon 的路径是不同的。 对于指令引用 ${OPENNMS_HOME},则将路径解析为以下目录:

Table 3. 目录结构

RHEL

/opt/opennms

Debian

/usr/share/opennms

Windows

C:\Program Files\opennms

2.3. 在 RHEL 上安装

下面将描述安装步骤:

  1. 安装 opennms meta 包,来处理所有依赖关系

  2. 安装 PostgreSQL 数据库,并配置访问权限

  3. 初始化 OpenNMS Horizon 和应用程序首次启动

  4. 登录到 Web 用户界面并更改 admin 默认密码

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 安装 OpenNMS Horizon

添加 yum 仓库并导入 GPG key
yum -y install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY
安装所有内置的依赖项
yum -y install opennms

下列软件包将自动安装:

  • jicmp6 and jicmp: 允许发送 ICMP 消息Java 桥,来自 OpenNMS Horizon 仓库。

  • opennms-core: OpenNMS Horizon 核心服务,例如,Provisiond, PollerdCollectd,来自 OpenNMS Horizon 仓库。

  • opennms-webapp-jetty: OpenNMS Horizon web 应用程序,来自 OpenNMS Horizon 仓库。

  • jdk1.8: Oracle Java SE Development Kit 8 环境,来自 OpenNMS Horizon 仓库。

  • postgresql: PostgreSQL 数据库服务器,来自其发布仓库。

  • postgresql-libs: PostgreSQL 数据库,来自其发布仓库。

成功安装的 OpenNMS Horizon 平台,具有如下目录结构:

[root@localhost /opt/opennms]# tree -L 1
.
└── opennms
   ├── bin
   ├── contrib
   ├── data
   ├── deploy
   ├── etc
   ├── jetty-webapps
   ├── lib
   ├── logs -> /var/log/opennms
   ├── share -> /var/opennms
   └── system
我们建议在安装后禁用 OpenNMS Horizon 的 apt 存储库,以防止在系统运行时进行更新。 OpenNMS Horizon 在升级时需要一些手动配置,来确保在新版本中数据库和系统配置是一致的,并且在很多设备或大量事件的系统上,可能需要几个小时。 因此,建议将 OpenNMS Horizon 包排除在更新之外,当想要升级时再开启。
yum-config-manager --disable opennms-repo-stable-common,opennms-repo-stable-rhel7

步骤2: 初始化并设置 PostgreSQL

初始化 PostgreSQL 数据库
postgresql-setup initdb
PostgreSQL 的系统启动配置
systemctl enable postgresql
启动 PostgreSQL 数据库
systemctl start postgresql
创建一个数据库用户 opennms,并且创建一个属于该用户的数据库 opennms
su - postgres
createuser -P opennms
createdb -O opennms opennms
为 Postgres 超级用户设置密码
psql -c "ALTER USER postgres WITH PASSWORD 'YOUR-POSTGRES-PASSWORD';"
exit
在安装和升级时需要超级用户,它能初始化和更改数据库实例。
更改 PostgreSQL 的访问策略
vi /var/lib/pgsql/data/pg_hba.conf
允许 OpenNMS Horizon 通过 MD5 hashed password(散列密码)在本地网络上访问数据库
host    all             all             127.0.0.1/32            md5(1)
host    all             all             ::1/128                 md5(1)
1 将 localhost 上对应 IPv4IPv6 的认证方式从 ident 改为 md5
应用 PostgreSQL 配置更改
systemctl reload postgresql
在 OpenNMS Horizon 中配置数据库访问
vi ${OPENNMS_HOME}/etc/opennms-datasources.xml
设置访问 PostgreSQL 数据库的凭据
<jdbc-data-source name="opennms"
                    database-name="opennms"(1)
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="** YOUR-OPENNMS-USERNAME **"(2)
                    password="** YOUR-OPENNMS-PASSWORD **" />(3)

<jdbc-data-source name="opennms-admin"
                    database-name="template1"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/template1"
                    user-name="postgres"(4)
                    password="** YOUR-POSTGRES-PASSWORD **" />(5)
1 设置 OpenNMS Horizon 使用的数据库名称
2 设置访问 opennms 数据库表的用户名
3 设置访问 opennms 数据库表的密码
4 设置访问 PostgreSQL 的管理员用户 postgres
5 设置访问 PostgreSQL 的管理员用户的密码

步骤3: 初始化并启动 OpenNMS Horizon

检测 Java 并存储到 /usr/share/opennms/etc/java.conf
${OPENNMS_HOME}/bin/runjava -s
初始化数据库并检测存储在 /opt/opennms/etc/libraries.properties 中的系统库配置
${OPENNMS_HOME}/bin/install -dis
在系统引导中配置 systemd 启动 OpenNMS Horizon
systemctl enable opennms
启动 OpenNMS Horizon
systemctl start opennms

步骤4: 首次登录并更改默认密码

OpenNMS 的 web 应用启动之后,可以通过 http://<ip-or-fqdn-of-your-server>:8980/opennms 访问系统。 缺省登录用户是 admin ,初始密码为 admin

  1. 在浏览器中打开 http://<ip-or-fqdn-of-your-server>:8980/opennms

  2. 用 admin/admin 登录

  3. 点击主导航菜单上的 "admin → Change Password → Change Password"

  4. 设置 admin 的当前密码,设置新密码并设置确认密码

  5. 点击 "Submit"

  6. 注销并使用新密码登录

下一步

附加信息可在后续文件中找到:

  • 入门指南

    首先介绍安装、配置和维护 OpenNMS Horizon

  • 参考指南

    查找有关 OpenNMS Horizon 平台使用的探测器、监测器、采集器和配置文件的深入信息。

2.4. 在 Debian 上安装

安装过程主要有以下步骤:

  1. 安装 opennms meta 包,来处理所有依赖关系

  2. 安装 PostgreSQL 数据库,并配置访问权限

  3. 初始化 OpenNMS Horizon 和应用程序首次启动

  4. 登录到 Web 用户界面并更改 admin 默认密码

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 安装 OpenNMS Horizon

在 /etc/apt/sources.list.d/opennms.list 中添加 apt 存储库并添加 GPG key
cat << EOF | sudo tee /etc/apt/sources.list.d/opennms.list
deb https://debian.opennms.org stable main
deb-src https://debian.opennms.org stable main
EOF
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
apt update
安装 OpenNMS Horizon 内置的所有依赖
apt -y install opennms

下列 opennms 依赖的软件包将自动安装:

  • jicmp6 and jicmp: 允许发送 ICMP 消息Java 桥,来自 OpenNMS 仓库。

  • opennms-core: OpenNMS Horizon 核心服务,例如,Provisiond, PollerdCollectd,来自 OpenNMS 仓库。

  • opennms-webapp-jetty: OpenNMS Horizon web 应用程序,来自 OpenNMS 仓库。

  • jdk1.8: Oracle Java SE Development Kit 8 环境,来自 OpenNMS 仓库。

  • postgresql: PostgreSQL 数据库服务器,来自其发布仓库。

  • postgresql-libs: PostgreSQL 数据库,来自其发布仓库。

成功安装的 OpenNMS Horizon 平台,具有如下目录结构:

[root@localhost /usr/share/opennms]# tree -L 1
.
└── opennms
   ├── bin
   ├── data
   ├── deploy
   ├── etc -> /etc/opennms
   ├── instances
   ├── jetty-webapps
   ├── lib -> ../java/opennms
   ├── logs -> /var/log/opennms
   ├── share -> /var/lib/opennms
   └── system
我们建议在安装后禁用 OpenNMS Horizon 的 apt 存储库,以防止在系统运行时进行更新。 OpenNMS Horizon 在升级时需要一些手动配置,来确保在新版本中数据库和系统配置是一致的,并且在很多设备或大量事件的系统上,可能需要几个小时。 因此,建议将 OpenNMS Horizon 包排除在更新之外,当想要升级时再开启。
apt-mark hold libopennms-java \
              libopennmsdeps-java \
              opennms-common \
              opennms-db

步骤2: 初始化并设置 PostgreSQL

Debian 包安装了 PostgreSQL 数据库并且已经初始化。 PostgreSQL 服务已经添加到系统启动的运行级别配置中。

启动 PostgreSQL 数据库
systemctl start postgresql
创建一个数据库用户 opennms,并且创建一个属于该用户的数据库 opennms
su - postgres
createuser -P opennms
createdb -O opennms opennms
为 Postgres 超级用户设置密码
psql -c "ALTER USER postgres WITH PASSWORD 'YOUR-POSTGRES-PASSWORD';"
exit
在安装和升级时需要超级用户,它能初始化和更改数据库实例。
在 OpenNMS Horizon 中配置数据库访问
vi ${OPENNMS_HOME}/etc/opennms-datasources.xml
设置访问 PostgreSQL 数据库的凭据
<jdbc-data-source name="opennms"
                    database-name="opennms"(1)
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="** YOUR-OPENNMS-USERNAME **"(2)
                    password="** YOUR-OPENNMS-PASSWORD **" />(3)

<jdbc-data-source name="opennms-admin"
                    database-name="template1"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/template1"
                    user-name="postgres"(4)
                    password="** YOUR-POSTGRES-PASSWORD **" />(5)
1 设置 OpenNMS Horizon 使用的数据库名称
2 设置访问 opennms 数据库表的用户名
3 设置访问 opennms 数据库表的密码
4 设置访问 PostgreSQL 的管理员用户 postgres
5 设置访问 PostgreSQL 的管理员用户的密码

步骤3: 初始化并启动 OpenNMS Horizon

检测 Java 并存储到 /usr/share/opennms/etc/java.conf
${OPENNMS_HOME}/bin/runjava -s
初始化数据库并检测存储在 /opt/opennms/etc/libraries.properties 中的系统库配置
${OPENNMS_HOME}/bin/install -dis
在系统引导中配置 systemd 启动 OpenNMS Horizon
systemctl enable opennms
启动 OpenNMS Horizon
systemctl start opennms

步骤4: 首次登录并更改默认密码

OpenNMS 的 web 应用启动之后,可以通过 http://<ip-or-fqdn-of-your-server>:8980/opennms 访问系统。 缺省登录用户是 admin ,初始密码为 admin

  1. 在浏览器中打开 http://<ip-or-fqdn-of-your-server>:8980/opennms

  2. 用 admin/admin 登录

  3. 点击主导航菜单上的 "admin → Change Password → Change Password"

  4. 设置 admin 的当前密码,设置新密码并设置确认密码

  5. 点击 "Submit"

  6. 注销并使用新密码登录

下一步

附加信息可在后续文件中找到:

  • 入门指南

    首先介绍安装、配置和维护 OpenNMS Horizon

  • 参考指南

    查找有关 OpenNMS Horizon 平台使用的探测器、监测器、采集器和配置文件的深入信息。

2.5. 在 Windows 上安装

Microsoft Windows 的安装,不处理像 Linux 操作系统上的 PostgreSQLJava 依赖关系。

确保您已经安装了 Oracle 页面上可用的 Oracle Java Development Kit 8 (JDK)

安装过程有以下步骤:

  1. 微软 Windows 上安装 PostgreSQL

  2. 用 GUI 安装程序安装 OpenNMS Horizon

  3. 初始化 PostgreSQL 数据库并配置访问权限

  4. 登录到 Web 用户界面并更改 admin 默认密码

安装 OpenNMS Horizon 需要本地 administration 权限。

微软 Windows 上编辑 OpenNMS 配置文件可以使用 Notepad++ 工具,它可以处理像 .property.xml 格式的文件。

步骤1: 安装 PostgreSQL

微软 Windows 上的可用最新版 PostgreSQL,可以从 下载 PostgreSQL 页面下载。 按照图形界面的提示进行安装。

占位符 {PG-VERSION} 表示 PostgreSQL 的版本号。

PostgreSQL 的安装过程中,需要提供以下信息:

  • PostgreSQL 的安装目录,例如 C:\Program Files\PostgreSQL{PG-VERSION}

  • 数据库超级用户(postgres)的密码,此密码将在 OpenNMS 设置期间使用。

  • PostgreSQL 连接的侦听端口,默认为 5432,通常可以使用。

  • 数据库 Locale,保留 [Default locale],如果更改了 locale 设置,OpenNMS 可能无法初始化数据库。

不需要从 PostgreSQL Stack Builder 安装任何附加的内容。

步骤2: 用GUI安装程序安装 OpenNMS

对于 Microsoft Windows 环境,先从 OpenNMS SourceForge 库下载一个 standalone-opennms-installer-{ONMS-VERSION}.zip 文件。 提取下载的 ZIP 文件。

要用最新稳定的版本号替换 {ONMS-VERSION}

启动图形安装程序并按照屏幕上的说明进行操作。 必须提供以下信息:

  • Oracle JDK 路径, 例如 C:\Program Files\Java\jdk1.8.0_51

  • OpenNMS 的安装路径, 例如 C:\Program Files\OpenNMS

  • 选择想要安装的包,必选项是 CoreDocs

  • PostgreSQL 数据库连接

    • Host: 运行 PostgreSQL 的服务器, 例如 localhost

    • Name: 用于 OpenNMS 的数据库名称, 例如 opennms

    • Port: 连接到 PostgreSQL 服务器的 TCP 端口, 例如 5432

    • Username (具有管理功能的超级用户): PostgreSQL 超级用户, 例如 postgres

    • Password (具有管理功能的超级用户): PostgreSQL 设置的超级用户密码

    • Username (opennms 的运行时用户): 连接到 OpenNMS 数据库的用户名, 例如 opennms

    • Password (opennms 的运行时用户): 连接到 OpenNMS 数据库的密码, 例如 opennms

  • 为初始设备发现配置发现范围。 如果你不想进行设备发现,可以在开始和结束使用相同的不可达地址。

请为所有数据库用户选择安全密码,不要在实际运行中使用上面的示例密码。

步骤3: OpenNMS Horizon 数据库访问配置

设置访问 PostgreSQL 数据库的凭据
<jdbc-data-source name="opennms"
                    database-name="opennms"(1)
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="** YOUR-OPENNMS-USERNAME **"(2)
                    password="** YOUR-OPENNMS-PASSWORD **" />(3)

<jdbc-data-source name="opennms-admin"
                    database-name="template1"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/template1"
                    user-name="postgres"(4)
                    password="** YOUR-POSTGRES-PASSWORD **" />(5)
1 设置 OpenNMS Horizon 使用的数据库名称
2 设置访问 opennms 数据库表的用户名
3 设置访问 opennms 数据库表的密码
4 设置访问 PostgreSQL 的管理员用户 postgres
5 设置访问 PostgreSQL 的管理员用户的密码

opennms-datasources.xml 中设置用户名和密码后,重新运行图形安装程序,并初始化数据库。 OpenNMS 可以使用 %OPENNMS_HOME%\bin 目录中的 start.batstop.bat 脚本来启动和停止。

Wiki 文章 将 OpenNMS 配置为 Windows 服务 介绍了如何通过 start.bat 文件创建一个 Windows 服务 。 还有就是 Java Wrapper ,可以把 Java 应用程序安装为 Windows 服务

步骤4: 首次登录并更改默认密码

OpenNMS 的 web 应用启动后,就可以访问 http://<ip-or-fqdn-of-your-server>:8980/opennms。 缺省登录用户是 admin ,初始密码为 admin

  1. 在浏览器中打开 http://<ip-or-fqdn-of-your-server>:8980/opennms

  2. 用 admin/admin 登录

  3. 点击主导航菜单上的 "admin → Change Password → Change Password"

  4. 设置 admin 的当前密码,设置新密码并设置确认密码

  5. 点击 "Submit"

  6. 注销并使用新密码登录

下一步

附加信息可在后续文件中找到:

  • 入门指南

    首先介绍安装、配置和维护 OpenNMS Horizon

  • 参考指南

    查找有关 OpenNMS Horizon 平台使用的探测器、监测器、采集器和配置文件的深入信息。

3. 使用 Minion 监控隔离位置

本节描述如何将 Minion 安装到无法从 OpenNMS Horizon 实例到达的位置来监视设备和服务。

3.1. 目标

  • 安装一个 Minion 来监视从 OpenNMS Horizon 实例无法访问的设备和服务

  • 通过配置身份验证,使用 ActiveMQRESTMinionOpenNMS Horizon 之间实现未加密通信

3.2. 准备条件

安装 OpenNMS HorizonMinions 准备条件:

  • OpenNMS Horizon 的实例需要与 Minion 包使用完全相同的版本

  • RHEL-based 系统的 RPMs 包和 Debian-based 系统的 DEBs 包可用

  • 首先需要安装 OpenNMS Horizon,并且使用 REST (8980/tcp)ActiveMQ (616161/tcp) 进行通信

根据安装的操作系统,Minion 的路径是不同的。 对于指令引用 ${MINION_HOME},则将路径解析为以下目录:

Table 4. 目录结构

RHEL

/opt/minion

Debian

/usr/share/minion

3.3. 在 RHEL 上安装

  1. 设置 OpenNMS Horizon 以允许 Minion 通信

  2. 安装 opennms-minion meta 包,来处理所有依赖关系

  3. 启动 Minion 并通过 SSH 访问 Karaf 控制台

  4. 配置 MinionOpenNMS Horizon 通信

  5. 验证 MinionOpenNMS Horizon 之间的连通性

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 设置 OpenNMS Horizon 以允许 Minion 通信

MinionOpenNMS Horizon 之间使用 REST API 进行通信,同时默认 ActiveMQ 作为消息传递系统。 在这些通信信道中需要 OpenNMS Horizon 中的认证用户。 安全角色 ROLE_MINION 包括 Minion 操作所需的最小权限。

我们在这个指南中使用用户名为 minion 密码为 minion。 相应地更改凭据。
在 OpenNMS Horizon web 用户界面中创建用户 minion
  1. 使用具有管理权限的用户登录 web 用户界面

  2. 导航到 "Login Name → Configure OpenNMS → Configure Users, Groups and On-Call Roles → Configure Users"

  3. 添加一个新用户,登录名为 minion 并且密码为 minion,然后点击 Ok

  4. 指定安全角色 ROLE_MINION,在可选注释中填写站点和用途,然后单击 Finish

  5. 现在 User List 中列出了 minion 用户

配置 ActiveMQ 允许在公共网络接口上进行通信
vi ${OPENNMS_HOME}/etc/opennms-activemq.xml
删除在 0.0.0.0 下的传输连接器的注释,并保存
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?useJmx=false&amp;maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
重新启动 OpenNMS Horizon
systemctl restart opennms
验证端口 61616/tcp 是否在所有接口上监听
ss -lnpt sport = :61616
State   Recv-Q  Send-Q  Local Address:Port  Peer  Address:Port
LISTEN  0       128     *:61616             *:*   users:(("java",pid=1,fd=706))

步骤2: 安装仓库和 Minion 包

使用 SSH 连接到远程 RHEL 系统,然后安装 Minion

安装 Yum 仓库
yum -y install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY
安装 Minion 包
yum -y install opennms-minion

列软件包将自动安装:

  • opennms-minion: Minion meta 包

  • opennms-minion-container: Minion 相关功能和附件管理扩展的 Karaf OSGi 容器

  • opennms-minion-features-core: Minion 特性所需的核心公共程序和服务

  • opennms-minion-features-default: 特定服务的特性

Minion 安装成功后是如下目录结构:

[root@localhost /opt/minion]# $ tree -L 1
.
├── bin
├── deploy
├── etc
├── lib
├── repositories
└── system

可以通过编辑 /etc/default/minion 文件来更改 Minion 的启动配置。 这里可以修改启动时的许多默认配置:

  • JDK 的位置

  • 使用内存

  • 运行的用户

步骤3: 启动 Minion 并测试访问 Karaf Shell

在系统引导中配置 systemd 启动 Minion
systemctl enable minion
启动 Minion
systemctl start minion
使用用户名/密码 admin/admin 测试访问 Karaf shell,并用 <ctrl-d> 退出
ssh -p 8201 admin@localhost

步骤4: 配置 Minion 与 OpenNMS Horizon 通信

通过 SSH 登录到你安装 Minion 的 Karaf Shell
ssh -p 8201 admin@localhost
配置 Minion 的位置和与 OpenNMS Horizon 进行通信的端点 URLs
[root@localhost /root]# $ ssh -p 8201 admin@localhost
...
admin@minion()> config:edit org.opennms.minion.controller
admin@minion()> config:property-set location Office-Pittsboro
admin@minion()> config:property-set http-url http://opennms-fqdn:8980/opennms
admin@minion()> config:property-set broker-url failover:tcp://opennms-fqdn:61616
admin@minion()> config:update
在连接 URL 中包括 failover: 部分,可以让 Minion 在失败后重新建立连接。 有关不同 URL 格式的引用,请参考 ActiveMQ URI Protocols
配置与 OpenNMS Horizon 通信凭证
admin@minion()> scv:set opennms.http minion minion
admin@minion()> scv:set opennms.broker minion minion
配置凭证的另一种方法是使用 Minionbin 目录下的 scvcli 工具。
使用 scvcli 命令工具配置凭证的示例
[root@localhost /root]# $ cd /opt/minion
[root@localhost /opt/minion]# $ ./bin/scvcli set opennms.http minion minion
[root@localhost /opt/minion]# $ ./bin/scvcli set opennms.broker minion minion
更新证书后重新启动 Minion
[root@localhost /root]# $ systemctl restart minion
凭证要单独配置,因为它们被加密保存在磁盘上。

步骤5: 验证连通性

连接到 Minion 的 Karaf Shell
ssh -p 8201 admin@localhost
验证与 OpenNMS Horizon 的连通性
admin@minion()> minion:ping
Connecting to ReST...
OK
Connecting to Broker...
OK
admin@minion()>

3.4. 在 Debian 上安装

  1. 设置 OpenNMS Horizon 以允许 Minion 通信

  2. 安装 opennms-minion meta 包,来处理所有依赖关系

  3. 启动 Minion 并通过 SSH 访问 Karaf 控制台

  4. 配置 MinionOpenNMS Horizon 通信

  5. 验证 MinionOpenNMS Horizon 之间的连通性

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 设置 OpenNMS Horizon 以允许 Minion 通信

MinionOpenNMS Horizon 之间使用 REST API 进行通信,同时默认 ActiveMQ 作为消息传递系统。 在这些通信信道中需要 OpenNMS Horizon 中的认证用户。 安全角色 ROLE_MINION 包括 Minion 操作所需的最小权限。

我们在这个指南中使用用户名为 minion 密码为 minion。 相应地更改凭据。
在 OpenNMS Horizon web 用户界面中创建用户 minion
  1. 使用具有管理权限的用户登录 web 用户界面

  2. 导航到 "Login Name → Configure OpenNMS → Configure Users, Groups and On-Call Roles → Configure Users"

  3. 添加一个新用户,登录名为 minion 并且密码为 minion,然后点击 Ok

  4. 指定安全角色 ROLE_MINION,在可选注释中填写站点和用途,然后单击 Finish

  5. 现在 User List 中列出了 minion 用户

配置 ActiveMQ 允许在公共网络接口上进行通信
vi ${OPENNMS_HOME}/etc/opennms-activemq.xml
删除在 0.0.0.0 下的传输连接器的注释,并保存
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?useJmx=false&amp;maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
重新启动 OpenNMS Horizon
systemctl restart opennms
验证端口 61616/tcp 是否在所有接口上监听
ss -lnpt sport = :61616
State   Recv-Q  Send-Q  Local Address:Port  Peer  Address:Port
LISTEN  0       128     *:61616             *:*   users:(("java",pid=1,fd=706))

步骤2: 安装仓库和 Minion 包

在 /etc/apt/sources.list.d/opennms.list 中添加 apt 存储库并添加 GPG key
echo 'deb https://debian.opennms.org stable main \
      deb-src https://debian.opennms.org stable main' > /etc/apt/sources.list.d/opennms.list
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
apt update
安装 Minion 包
apt -y install opennms-minion

下列软件包将自动安装:

  • opennms-minion: Minion meta 包

  • opennms-minion-container: Minion 相关功能和附件管理扩展的 Karaf OSGi 容器

  • opennms-minion-features-core: Minion 特性所需的核心公共程序和服务

  • opennms-minion-features-default: 特定服务的特性

Minion 安装后是如下目录结构:

[root@localhost /usr/share/minion]# $ tree -L 1
.
├── bin
├── deploy
├── etc
├── lib
├── repositories
└── system

此外,符号链接设置为指向 /etc/minion/var/log/minion ,已符合 Debian 预期的文件系统布局。

可以通过编辑 /etc/default/minion 文件来更改 Minion 的启动配置。 这里可以修改启动时的许多默认配置:

  • JDK 的位置

  • 使用内存

  • 运行的用户

步骤3: 启动 Minion 并测试访问 Karaf Shell

在系统引导中配置 systemd 启动 Minion
systemctl enable minion
启动 Minion
systemctl start minion
使用用户名/密码 admin/admin 测试访问 Karaf shell,并用 <ctrl-d> 退出
ssh -p 8201 admin@localhost

步骤4: 配置 Minion 与 OpenNMS Horizon 通信

通过 SSH 登录到你安装 Minion 的 Karaf Shell
ssh -p 8201 admin@localhost
配置 Minion 的位置和与 OpenNMS Horizon 进行通信的端点 URLs
[root@localhost /root]# $ ssh -p 8201 admin@localhost
...
admin@minion()> config:edit org.opennms.minion.controller
admin@minion()> config:property-set location Office-Pittsboro
admin@minion()> config:property-set http-url http://opennms-fqdn:8980/opennms
admin@minion()> config:property-set broker-url failover:tcp://opennms-fqdn:61616
admin@minion()> config:update
在连接 URL 中包括 failover: 部分,可以让 Minion 在失败后重新建立连接。 有关不同 URL 格式的引用,请参考 ActiveMQ URI Protocols
配置与 OpenNMS Horizon 通信凭证
admin@minion()> scv:set opennms.http minion minion
admin@minion()> scv:set opennms.broker minion minion
配置凭证的另一种方法是使用 Minionbin 目录下的 scvcli 工具。
使用 scvcli 命令工具配置凭证的示例
[root@localhost /root]# $ cd /opt/minion
[root@localhost /opt/minion]# $ ./bin/scvcli set opennms.http minion minion
[root@localhost /opt/minion]# $ ./bin/scvcli set opennms.broker minion minion
更新证书后重新启动 Minion
[root@localhost /root]# $ systemctl restart minion
凭证要单独配置,因为它们被加密保存在磁盘上。

步骤5: 验证连通性

连接到 Minion 的 Karaf Shell
ssh -p 8201 admin@localhost
验证与 OpenNMS Horizon 的连通性
admin@minion()> minion:ping
Connecting to ReST...
OK
Connecting to Broker...
OK
admin@minion()>

4. Sentinel

本节介绍如何安装 Sentinel 以扩展 OpenNMS Horizon 的各个组件

目前,只有使用 Sentinel 才能分发流量。 未来还会有更多的组件。

4.1. 准备条件

安装 OpenNMS HorizonSentinel 准备条件:

  • OpenNMS Horizon 的实例需要与 Sentinel 包使用完全相同的版本

  • RHEL-based 系统的 RPMs 包和 Debian-based 系统的 DEBs 包可用

  • 首先需要安装 OpenNMS Horizon,并且使用 REST (8980/tcp)ActiveMQ (616161/tcp) 进行通信

  • 至少安装一个 Minion,并且可以和 OpenNMS Horizon 成功通信

根据安装的操作系统,Sentinel 的路径是不同的。 对于指令引用 ${SENTINEL_HOME},则将路径解析为以下目录:

Table 5. 目录结构

RHEL

/opt/sentinel

Debian

/usr/share/sentinel

4.2. 在 RHEL 上安装

  1. 设置 OpenNMS Horizon 以允许 Sentinel 通信

  2. 安装 opennms-sentinel meta 包,来处理所有依赖关系

  3. 启动 Sentinel 并通过 SSH 访问 Karaf 控制台

  4. 配置 SentinelOpenNMS Horizon 通信

  5. 验证 SentinelOpenNMS Horizon 之间的连通性

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 设置 OpenNMS Horizon 以允许 Sentinel 通信

这一步操作与 Minion 完全相同。 甚至可以使用角色 ROLE_MINION,因为还没有专门的 ROLE_SENTINEL 角色。

即使我们和 OpenNMS Horizon 通信的配置与 Minion 完全相同, 但是,不会发出 ReST 请求,并且可能在以后删除。

步骤2: 安装仓库和 Sentinel 包

使用 SSH 连接到远程 RHEL 系统,然后安装 Sentinel

安装 Yum 仓库
yum install -y https://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY
安装 Sentinel 包
yum -y install opennms-sentinel

Sentinel 安装成功后是如下目录结构:

[root@localhost /opt/sentinel]# $ tree -L 1
.
|-- bin
|-- COPYING
|-- data
|-- deploy
|-- etc
|-- lib
`-- system

可以通过编辑 /etc/sysconfig/sentinel 文件来更改 Sentinel 的启动配置。 这里可以修改启动时的许多默认配置:

  • JDK 的位置

  • 使用内存

  • 运行的用户

步骤3: 启动 Sentinel 并测试访问 Karaf Shell

在系统引导中配置 systemd 启动 Sentinel
systemctl enable sentinel
启动 Sentinel
systemctl start sentinel
使用用户名/密码 admin/admin 测试访问 Karaf shell,并用 <ctrl-d> 退出
ssh -p 8301 admin@localhost

步骤4: 配置 Sentinel 与 OpenNMS Horizon 通信

通过 SSH 登录到你安装 Sentinel 的 Karaf Shell
ssh -p 8301 admin@localhost
配置 Sentinel 的位置和与 OpenNMS Horizon 进行通信的端点 URLs
[root@localhost /root]# $ ssh -p 8201 admin@localhost
...
admin@sentinel()> config:edit org.opennms.sentinel.controller
admin@sentinel()> config:property-set location Office-Pittsboro
admin@sentinel()> config:property-set http-url http://opennms-fqdn:8980/opennms
admin@sentinel()> config:property-set broker-url failover:tcp://opennms-fqdn:61616
admin@sentinel()> config:update
在连接 URL 中包括 failover: 部分,可以让 Sentinel 在失败后重新建立连接。 有关不同 URL 格式的引用,请参考 ActiveMQ URI Protocols
即使当前可以像 Minion 设置 id, location 和 http-url,但是在 Sentinel 未来版本可能会改变。
配置与 OpenNMS Horizon 通信凭证
admin@sentinel()> scv:set opennms.http minion minion
admin@sentinel()> scv:set opennms.broker minion minion

用户名和密码直接设置为 minion,并且假设它们共享相同的凭证和角色。

配置凭证的另一种方法是使用 Sentinelbin 目录下的 scvcli 工具。
使用 scvcli 命令工具配置凭证的示例
[root@localhost /root]# $ cd /opt/sentinel
[root@localhost /opt/sentinel]# $ ./bin/scvcli set opennms.http minion minion
[root@localhost /opt/sentinel]# $ ./bin/scvcli set opennms.broker minion minion
更新证书后重新启动 Minion
[root@localhost /root]# $ systemctl restart sentinel
凭证要单独配置,因为它们被加密保存在磁盘上。

步骤5: 验证连通性

连接到 Sentinel 的 Karaf Shell
ssh -p 8301 admin@localhost
验证与 OpenNMS Horizon 的连通性
admin@sentinel()> feature:install sentinel-core
admin@sentinel> health:check
Verifying the health of the container

Verifying installed bundles      [ Success  ]
Connecting to OpenNMS ReST API   [ Success  ]

=> Everything is awesome
admin@sentinel()>
命令 health:check 是原始的 minion:ping 命令的更新、更灵活的版本。 因此,Sentinel 上没有同等的 sentinel:ping

4.3. 在 Debian 上安装

  1. 设置 OpenNMS Horizon 以允许 Sentinel 通信

  2. 安装 opennms-sentinel meta 包,来处理所有依赖关系

  3. 启动 Sentinel 并通过 SSH 访问 Karaf 控制台

  4. 配置 SentinelOpenNMS Horizon 通信

  5. 验证 SentinelOpenNMS Horizon 之间的连通性

命令行接口上的所有命令都需要用 root 权限执行。

步骤1: 设置 OpenNMS Horizon 以允许 Sentinel 通信

这一步操作与 Minion 完全相同。 甚至可以使用角色 ROLE_MINION,因为还没有专门的 ROLE_SENTINEL 角色。

即使我们和 OpenNMS Horizon 通信的配置与 Minion 完全相同, 但是,不会发出 ReST 请求,并且可能在以后删除。

步骤2: 安装仓库和 Sentinel 包

在 /etc/apt/sources.list.d/opennms.list 中添加 apt 存储库并添加 GPG key
echo 'deb https://debian.opennms.org stable main \
      deb-src https://debian.opennms.org branches/features-sentinel main' > /etc/apt/sources.list.d/opennms.list
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
apt update
安装 Sentinel 包
apt -y install opennms-sentinel

Sentinel 安装后是以下目录结构:

[root@localhost /usr/share/sentinel]# $ tree -L 1
.
|-- bin
|-- COPYING
|-- data
|-- debian
|-- deploy
|-- etc
|-- lib
`-- system

此外,还要设置指向 /etc/sentinel/var/log/sentinel 的符合链接,来适用 Debian 的文件系统要求。

可以通过编辑 /etc/default/sentinel 文件来改变 Minion 的启动配置。 它可以覆盖启动时使用的默认配置,包括:

  • JDK 的位置

  • 使用内存

  • 运行的用户

步骤3: 启动 Sentinel 并测试访问 Karaf Shell

在系统引导中配置 systemd 启动 Sentinel
systemctl enable sentinel
启动 Sentinel
systemctl start sentinel
使用用户名/密码 admin/admin 测试访问 Karaf shell,并用 <ctrl-d> 退出
ssh -p 8301 admin@localhost

步骤4: 配置 Sentinel 与 OpenNMS Horizon 通信

通过 SSH 登录到你安装 Sentinel 的 Karaf Shell
ssh -p 8301 admin@localhost
配置 Sentinel 的位置和与 OpenNMS Horizon 进行通信的端点 URLs
[root@localhost /root]# $ ssh -p 8201 admin@localhost
...
admin@sentinel()> config:edit org.opennms.sentinel.controller
admin@sentinel()> config:property-set location Office-Pittsboro
admin@sentinel()> config:property-set http-url http://opennms-fqdn:8980/opennms
admin@sentinel()> config:property-set broker-url failover:tcp://opennms-fqdn:61616
admin@sentinel()> config:update
在连接 URL 中包括 failover: 部分,可以让 Sentinel 在失败后重新建立连接。 有关不同 URL 格式的引用,请参考 ActiveMQ URI Protocols
即使当前可以像 Minion 设置 id, location 和 http-url,但是在 Sentinel 未来版本可能会改变。
配置与 OpenNMS Horizon 通信凭证
admin@sentinel()> scv:set opennms.http minion minion
admin@sentinel()> scv:set opennms.broker minion minion

用户名和密码直接设置为 minion,并且假设它们共享相同的凭证和角色。

配置凭证的另一种方法是使用 Sentinelbin 目录下的 scvcli 工具。
使用 scvcli 命令工具配置凭证的示例
[root@localhost /root]# $ cd /opt/sentinel
[root@localhost /usr/share/sentinel]# $ ./bin/scvcli set opennms.http minion minion
[root@localhost /usr/share/sentinel]# $ ./bin/scvcli set opennms.broker minion minion
更新证书后重新启动 Minion
[root@localhost /root]# $ systemctl restart sentinel
凭证要单独配置,因为它们被加密保存在磁盘上。

步骤5: 验证连通性

连接到 Sentinel 的 Karaf Shell
ssh -p 8301 admin@localhost
验证与 OpenNMS Horizon 的连通性
admin@sentinel()> feature:install sentinel-core
admin@sentinel> health:check
Verifying the health of the container

Verifying installed bundles      [ Success  ]
Connecting to OpenNMS ReST API   [ Success  ]

=> Everything is awesome
admin@sentinel()>
命令 health:check 是原始的 minion:ping 命令的更新、更灵活的版本。 因此,Sentinel 上没有同等的 sentinel:ping

5. 安装非稳定版本

有多个 OpenNMS 发布版本可用。 选择一个你需要运行的版本,然后配置包资源库指向该版本。 配置包资源库后,你就可以通过使用标准的 Linux 软件更新工具,像 yumapt

下面的包资源库可用:

Table 6. OpenNMS 包资源库
发布 描述

stable

最新稳定发布。该版本推荐给所有用户。

testing

下一个稳定发布的候选版本。

snapshot

最新开发成功构建,"夜间" 构建。

branches/${BRANCH-NAME}

从特定分支名称安装,用于测试正在开发的特定功能。 可用分支在 https://yum.opennms.org/branches/https://debian.opennms.org/dists/branches/

要安装不同的版本,必须安装资源库文件并手动修改。

Debian 系统中,修改 /etc/apt/sources.list.d/opennms.list 中的存储库文件。

deb https://debian.opennms.org snapshot main(1)
deb-src https://debian.opennms.org snapshot main(1)
EOF
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
apt update
1 stable 改成 snapshot

RHEL 系统上,您可以安装一个 snapshot(快照)存储库:

yum -y install https://yum.opennms.org/repofiles/opennms-repo-snapshot-rhel7.noarch.rpm
对于分支使用 repofiles/opennms-repo-branches-${branch-name}-rhel7.noarch.rpm

安装过程与稳定版本相同。

6. 安装 Minion 配置文件

除了通过 Karaf CLI 手动配置 Minion 实例之外,还可以通过配置管理工具修改和部署它的配置文件。 配置文件位于 ${MINION_HOME}/etc/org.opennms.minion.controller.cfg。 在 Karaf CLI 设置的所有配置都将保存在配置文件中,也可以通过配置管理工具来做。

Minion 的配置文件
id = 00000000-0000-0000-0000-deadbeef0001
location = MINION
broker-url = tcp://myopennms.example.org:61616
http-url = http://myopennms.example.org:8980/opennms

配置文件被修改后,需要重启 Minion

通过 CLI 来执行配置管理工具或脚本都是需要凭证,使用 /opt/minion/bin/client 命令也可以通过 Linux shell 来执行 Karaf 命令。

7. 在非 root 环境中运行

本节介绍在非 root 环境中运行 OpenNMS HorizonMinions 进程的信息。 与系统用户一起运行有一定限制性。 本节描述如何配置相关的 Linux 系统:

  • 发送非特权用户的 ICMP

  • 在(小于) < 1023 端口接收 Syslog,例如 514/udp

  • 在(小于) < 1023 端口接收 SNMP Trap,例如 162/udp

7.1. 作为非 root 发送 ICMP

默认情况下,Linux 不允许常规用户从任意程序(包括 Java 在内)执行 ping 操作。 要使 MinionOpenNMS Horizon 正确地执行 ping,必须设置一个 sysctl 选项。

启用用户 Ping(运行系统)
# run this command as root to allow ping by any user (does not survive reboots)
sysctl net.ipv4.ping_group_range='0 429496729'

如果希望进一步限制范围,则用户可用使用 GID 来运行 MinionOpenNMS Horizon,而不是 429496729

若要永久启用此项,请在 /etc/sysctl.d/ 目录中创建文件,来设置范围:

/etc/sysctl.d/99-zzz-non-root-icmp.conf
# we start this filename with "99-zzz-" to make sure it's last, after anything else that might have set it
net.ipv4.ping_group_range=0 429496729

7.2. 非 root 接收 Trap

如果希望 MinionOpenNMS Horizon 侦听 SNMP Traps,则需要配置防火墙,来让特权 trap 端口(162)转发到 Minion 的默认 trap 侦听端口 1162。

用 Firewalld 转发 162 到 1162 端口
# enable masquerade to allow port-forwards
firewall-cmd --add-masquerade
# forward port 162 TCP and UDP to port 1162 on localhost
firewall-cmd --add-forward-port=port=162:proto=udp:toport=1162:toaddr=127.0.0.1
firewall-cmd --add-forward-port=port=162:proto=tcp:toport=1162:toaddr=127.0.0.1

7.3. 非 root 接收 Syslog

如果您希望您的 Minion or OpenNMS Horizon 侦听 syslog 消息,则需要配置防火墙,来让特权 Syslog 端口(415)转发到 Minion 的默认 syslog 侦听端口 1514。

用 Firewalld 转发 514 到 1514 端口
# enable masquerade to allow port-forwards
firewall-cmd --add-masquerade
# forward port 514 TCP and UDP to port 1514 on localhost
firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514:toaddr=127.0.0.1
firewall-cmd --add-forward-port=port=514:proto=tcp:toport=1514:toaddr=127.0.0.1

8. 使用 R 进行统计计算

R 是免费软件,用来进行统计计算和图形展示。 OpenNMS Horizon 可以利用 R 强大的预测和高级计算功能,处理采集模块的时间序列数据。

OpenNMSR 的接口通过 stdinstdout, 因此, R 必须和 OpenNMS 在同一主机上安装. 注意,安装 R 是可选的,它不是核心组件。

Microsoft Windows 系统目前还不支持 R

8.1. 在 RHEL 上安装 R

安装 EPEL 储存库
yum install epel-release
安装 R
yum install R

8.2. 在 Debian 上安装 R

安装 R
apt -y install r-recommended

9. 使用不同的时间序列存储

OpenNMS Horizon 将性能数据存储在时间序列存储中,默认存储是 JRobin。 对于不同的场景,可以切换到不同的时间序列存储。 支持以下实现:

Table 7. 支持的时间序列数据库

JRobin

JRobinRRDToolJava 实现,它没有完全实现 RRDTool 最新特性集,并且是 OpenNMS Horizon 的默认安装。 数据存储在 OpenNMS Horizon 节点的本地文件系统上。 根据 I/O 能力,它适合于中小型设备监控。

RRDTool

RRDTool 是主动维护的,是处理时间序列数据的事实标准。 数据存储在 OpenNMS Horizon 节点的本地文件系统上。 根据 I/O 能力,它适合于中小型设备监控。

Newts

NewtsCassandra 的数据库模式。 时间序列存储在专用的 Cassandra 集群上,这提供了增长的灵活性,并允许大规模地持久化时间序列数据。

本节介绍配置 OpenNMS Horizon 以使用 RRDToolNewts

从一个时间序列存储技术迁移到另一种存储技术是非常困难的。 当切换数据存储时,无法防止数据丢失。

9.1. RRDtool

在大多数 开发源码 应用程序中, RRDtool 经常被使用,并且是事实上的 时间序列数据 的开放标准。 默认情况下 OpenNMS Horizon 使用的是 JRobin ,但是切换成用 RRDtool 来存储 时间序列数据 是很简单的。 本节介绍如何安装 RRDtool, OpenNMS Java 接口 jrrd2,以及如何配置 OpenNMS Horizon 来使用它。

9.1.1. 在 RHEL 上安装 RRDTool

这个指南不包括从 JRobinRRDTool 的数据迁移。
要安装 jrrd2,请启用 OpenNMS YUM 仓库。 可以使用 yum-config-manager --enable opennms-repo-stable-common,opennms-repo-stable-rhel7 启用它们。
更多 RRDTool 的当前版本是在 OpenNMS YUM 仓库。 可以使用 yum info rrdtool 命令,显示所提供的版本。 本指南使用 OpenNMS 仓库提供的 RRDTool。 当使用 CentOS 提供的 RRDTool 包时,请验证 rrdtool 二进制文件的路径。

步骤1: 安装 RRDTool 和 jrrd2 接口

在 RHEL 上安装
yum -y install rrdtool jrrd2

步骤2: 配置 OpenNMS Horizon 使用 RRDTool

cat << EOF | sudo tee /opt/opennms/etc/opennms.properties.d/timeseries.properties
org.opennms.rrd.strategyClass=org.opennms.netmgt.rrd.rrdtool.MultithreadedJniRrdStrategy
org.opennms.rrd.interfaceJar=/usr/share/java/jrrd2.jar
opennms.library.jrrd2=/usr/lib64/libjrrd2.so
org.opennms.web.graphs.engine=rrdtool # optional, unset if you want to keep Backshift as default
EOF
可视化的图形引擎是可选的。 通过不设置 org.opennms.web.graphs.engine 属性并使用系统默认设置,可以使用默认的图形引擎 backshift

步骤3: 重新启动 OpenNMS Horizon 并验证设置

find /opt/opennms/share/rrd -iname "*.rrd"

在第一次数据采集后,将创建 .rrd 扩展名的 RRDTool 文件。 扩展名 .jrbJRobin 文件不再使用,但不会自动删除。

9.1.2. 参考

下面的配置文件是对 RRDTool 二进制文件的引用,如果定制 RRDTool 安装,则可以进行修改。

Table 8. 对于 RRDtool 二进制的引用
配置文件 属性

opennms.properties

rrd.binary=/usr/bin/rrdtool

response-adhoc-graph.properties

command.prefix=/usr/bin/rrdtool

response-graph.properties

command.prefix=/usr/bin/rrdtool
info.command=/usr/bin/rrdtool

snmp-adhoc-graph.properties

command.prefix=/usr/bin/rrdtool

snmp-graph.properties

command.prefix=/usr/bin/rrdtool
command=/usr/bin/rrdtool info

9.1.3. 在 Debian 上安装 RRDTool

这个指南不包括从 JRobinRRDTool 的数据迁移。
更多 RRDTool 的当前版本是在 OpenNMS YUM 仓库。 可以使用 apt show rrdtool 命令,显示所提供的版本。 本指南使用 OpenNMS 仓库提供的 RRDTool。 当使用 Debian/Ubuntu 提供的 RRDTool 包时,请验证 rrdtool 二进制文件的路径。

步骤1: 安装 RRDTool 和 jrrd2 接口

在 RHEL 上安装
apt -y install rrdtool jrrd2

步骤2: 配置 OpenNMS Horizon 使用 RRDTool

cat << EOF | sudo tee /usr/share/opennms/etc/opennms.properties.d/timeseries.properties
org.opennms.rrd.strategyClass=org.opennms.netmgt.rrd.rrdtool.MultithreadedJniRrdStrategy
org.opennms.rrd.interfaceJar=/usr/share/java/jrrd2.jar
opennms.library.jrrd2=/usr/lib/jni/libjrrd2.so
org.opennms.web.graphs.engine=rrdtool # optional, unset if you want to keep Backshift as default
EOF
可视化的图形引擎是可选的。 通过不设置 org.opennms.web.graphs.engine 属性并使用系统默认设置,可以使用默认的图形引擎 backshift

步骤3: 重新启动 OpenNMS Horizon 并验证设置

find /usr/share/opennms/share/rrd -iname "*.rrd"

在第一次数据采集后,将创建 .rrd 扩展名的 RRDTool 文件。 扩展名 .jrbJRobin 文件不再使用,但不会自动删除。

9.1.4. 参考

下面的配置文件是对 RRDTool 二进制文件的引用,如果定制 RRDTool 安装,则可以进行修改。

Table 9. 对于 RRDtool 二进制的引用
配置文件 属性

opennms.properties

rrd.binary=/usr/bin/rrdtool

response-adhoc-graph.properties

command.prefix=/usr/bin/rrdtool

response-graph.properties

command.prefix=/usr/bin/rrdtool
info.command=/usr/bin/rrdtool

snmp-adhoc-graph.properties

command.prefix=/usr/bin/rrdtool

snmp-graph.properties

command.prefix=/usr/bin/rrdtool
command=/usr/bin/rrdtool info

9.2. Newts

Newts 是基于 Apache Cassandra 的时间序列数据存储。 Newts 是一种存储策略,可以用来替代 JRobinRRDtool

目前,不支持在 Microsoft Windows Server 操作系统初始化 Newts keyspace(密钥空间)。 基于 Microsoft WindowsCassandra 服务器可以是集群的一部分,但是 keyspace(密钥空间)初始化只能在 _Linux-_based 系统。

9.2.1. 设置 Cassandra

只有在使用 Newts 时,才会需要 Cassandra。 如果你的 OpenNMS Horizon 系统不使用 Newts,则可以跳过这一节。

建议将 Cassandra 安装在专用服务器上,但也可以在 OpenNMS Horizon 服务器上运行。 本安装指南描述如何在 OpenNMS Horizon 相同的系统上设置单个 Cassandra 实例,用来评估和测试 Newts。 这些步骤不适用于生产 Cassandra Cluster。如果已经有运行的群集,可以跳过这一节。

有关详细信息,请参阅 Cassandra Getting Started Guide。 在设置生产集群之前,请参阅 Anti-patterns in Cassandra

RHEL

本节描述如何在一个基于 RHEL 系统上为 Newts 安装新版本 Cassandra 3.0.x。 第一步是添加 DataStax 社区仓库,并安装 GPG Key 来验证 RPM packages 的完整性。 使用 yum 安装完成后,将 Cassandra 服务将由 Systemd 管理。

这个描述是建立在 CentOS 7.2
Cassandra 3.x 需要 Java 8+.
添加 DataStax 仓库
vi /etc/yum.repos.d/datastax.repo
文件 datastax.repo 的内容
[datastax]
name = "DataStax Repo for Apache Cassandra"
baseurl = https://rpm.datastax.com/community
enabled = 1
gpgcheck = 1
安装 GPG key 验证 RPM 包
rpm --import https://rpm.datastax.com/rpm/repo_key
安装最新的 Cassandra 3.0.x 包
yum install dsc30
系统引导时启动 Cassandra
chkconfig cassandra on
启动 cassandra 服务
service cassandra start
服务器重新启动后,验证 Cassandra 服务是否自动启动。
Debian

本节描述如何在一个基于 Debian 系统上为 Newts 安装新版本 Cassandra 3.0.x。 第一步是添加 DataStax 社区仓库,并安装 GPG Key 来验证 DEB packages 的完整性。 使用 apt 安装完成后,将 Cassandra 服务添加到运行级配置。

这个描述是建立在 Debian 8.3Ubuntu 16.04 LTS
Cassandra 3.x 需要 Java 8+。
添加 DataStax 仓库
vi /etc/apt/sources.list.d/cassandra.sources.list
文件 cassandra.sources.list 的内容
deb https://debian.datastax.com/community stable main
安装 GPG key 验证 DEB 包
wget -O - https://debian.datastax.com/debian/repo_key | apt-key add -
安装最新的 Cassandra 3.0.x 包
apt-get update
apt-get install dsc30

Cassandra 服务添加到运行级配置中,并在安装后自动启动。

服务器重新启动后,验证 Cassandra 服务是否自动启动。
Microsoft Windows

本节描述如何在一个基于 Microsoft Windows Server 系统上为 Newts 安装新版本 Cassandra 3.0.x。 第一步是下载图形安装程序,然后将 Cassandra 注册为 Windows Service,来让 Service Manager 管理。

这个描述是建立在 Windows Server 2012
Cassandra 3.x 需要 Java 8+。
通过 PowerShell 或浏览器下载 Cassandra 的图形安装程序
cd C:\Users\Administrator\Downloads
Invoke-WebRequest https://downloads.datastax.com/community/datastax-community-64bit_3.0.6.msi -Outfile datastax-community-64bit_3.0.6.msi

PowerShell 或通过 Windows Explorer 运行 Windows 安装文件,并按照安装向导进行安装。 在安装过程中,选择自动启动服务。 默认情况下,DataStax Server, OpsCenter ServerOpsCenter Agent 将自动安装并启动。

只需在每个 Cassandra Cluster 上安装 DataStax OpsCenter Server
如果安装 DataStax OpsCenter,请确认安装了 ChromeFirefox

9.2.2. 配置 OpenNMS Horizon

安装了 Cassandra 之后,就可以配置 OpenNMS Horizon 使用 Newts

cat << EOF | sudo tee /opt/opennms/etc/opennms.properties.d/timeseries.properties
# Configure storage strategy
org.opennms.rrd.storeByForeignSource=true
org.opennms.timeseries.strategy=newts

# Configure Newts time series storage connection
org.opennms.newts.config.hostname=$ipaddress$
org.opennms.newts.config.keyspace=newts
org.opennms.newts.config.port=9042
EOF
属性 org.opennms.newts.config.hostname 可以接受逗号分隔的主机名或IP地址的列表。

启用 Newts 之后,可以使用下列方法在 Cassandra 中初始化 Newts 模式:

在 Cassandra 中初始化 Newts keyspace(密钥空间)
${OPENNMS_HOME}/bin/newts init

可选,现在可以连接到 Cassandra 集群,并验证 keyspace(密钥空间)是否已正确初始化:

用 cqlsh 验证 keyspace(密钥空间)是否初始化
cqlsh
use newts;
describe table terms;
describe table samples;

重新启动 OpenNMS Horizon 以应用更改。