OpenNMS – 透過 SNMP 取得更多設備相關資訊

如果要偵測的設備已經有開啟 SNMP 功能,OpenNMS 會以預設的 public 群體名稱來做偵測掃描,但如果要偵測的設備不是使用 public 為群體名稱,可能就要特別去指定。
1. 選擇 admin / Configure OpenNMS

2.  選擇 Configure SNMP Community Names by IP Address
[@more@]3. 輸入要偵測的 IP,然後按 Look up

4. 下方會出現設備的相關設定

5. 預設的群體名稱是 public,請自行更改

6. 最後按 Save Config 即可!

7. 也可以直接修改 /opt/opennms/etc/snmp-config.xml 設定檔
# cp /opt/opennms/etc/snmp-config.xml /opt/opennms/etc/snmp-config.xml.$(date +%F)
# vim /opt/opennms/etc/snmp-config.xml
<snmp-config xmlns=”http://xmlns.opennms.org/xsd/config/snmp” version=”v2c” read-community=”public” timeout=”1800″ retry=”1″>
   <definition write-community=”private” read-community=”test” port=”161″>
      <range begin=”192.168.1.3″ end=”192.168.1.4″/>
   </definition>
</snmp-config>

OpenNMS 利用 GMAIL 來寄送通知

參考網頁:
Gmail example javamail-configuration.properties – OpenNMS
雜亂的學習筆記本: OpenNMS – OpenNMS 基礎應用篇(01) – Notification 設定
Shunze 學園 – 《二》設定notification郵件通知

1. 備份原檔
# cp /opt/opennms/etc/javamail-configuration.properties /opt/opennms/etc/javamail-configuration.properties.$(date +%F)

2. 修改設定檔 /opt/opennms/etc/javamail-configuration.properties
# vim /opt/opennms/etc/javamail-configuration.properties

#org.opennms.core.utils.mailHost=127.0.0.1
#org.opennms.core.utils.transport=smtp
#org.opennms.core.utils.smtpport=25
#org.opennms.core.utils.smtpssl.enable=false
#org.opennms.core.utils.authenticate=false
#org.opennms.core.utils.authenticateUser=opennms
#org.opennms.core.utils.authenticatePassword=opennms
#org.opennms.core.utils.starttls.enable=false
#org.opennms.core.utils.messageContentType=text/plain
#org.opennms.core.utils.charset=us-ascii
[@more@]修改成
org.opennms.core.utils.mailHost=smtp.gmail.com
org.opennms.core.utils.transport=smtps
org.opennms.core.utils.smtpport=465
org.opennms.core.utils.smtpssl.enable=true
org.opennms.core.utils.authenticate=true
org.opennms.core.utils.authenticateUser=帳號@gmail.com
org.opennms.core.utils.authenticatePassword=密碼
org.opennms.core.utils.starttls.enabe=true
org.opennms.core.utils.messageContentType=text/html
org.opennms.core.utils.charset=UTF-8


org.opennms.core.utils.mailHost=smtp.gmail.com
org.opennms.core.utils.transport=smtp
org.opennms.core.utils.smtpport=587
org.opennms.core.utils.smtpssl.enable=false
org.opennms.core.utils.authenticate=true
org.opennms.core.utils.authenticateUser=帳號@gmail.com
org.opennms.core.utils.authenticatePassword=密碼
org.opennms.core.utils.starttls.enabe=true
org.opennms.core.utils.messageContentType=text/html
org.opennms.core.utils.charset=UTF-8

3. 重新啟動 OpenNMS
# systemctl restart opennms.service

4. 收到的警告信件

OpenNMS 開啟 Notification 並設定通知管理者

OpenNMS 安裝完成預設沒有開啟 Notification

修改方式:
1. 選擇 admin / Configure OpenNMS

[@more@]2. 預設定 Off

3. 選擇 On,然後按 Update

也可以直接修改 /opt/opennms/etc/notifd-configuration.xml 設定檔
# cp /opt/opennms/etc/notifd-configuration.xml /opt/opennms/etc/notifd-configuration.xml.$(date +%F)
# sed -i ‘s/status=”off”/status=”on”/’ /opt/opennms/etc/notifd-configuration.xml

4. 就會變成沒有禁止符號

5. 選擇 Configure Notifications,設定哪些事件要通知

6. 選擇 Configure Event Notifications

7. 選擇要通知的 Notification,如果有不夠的,也可以按上方的 Add New Event Notification 新增

8. 設定接收通知信的管理者信箱

9. 選擇 Configure Users

10. 選擇 Modify

11. 輸入電子郵件

12. 選擇 Finish

13. 完成修改

如果 Server 可以直接寄送信件,那麼管理者就會收到通知信,如果不行的話,可以改用 GMAIL 來寄送!

OpenNMS – Discovery 設定要偵測的主機、網段

修改方式:
1. 選擇 admin / Configure OpenNMS

2. 選擇 Configure Discovery

[@more@]3. 指定一個要偵測的 IP

4. 將要偵測的 IP 寫在一個檔案之中,一個 IP 一行
# cat /home/host.lst
192.168.2.1 # stu01
192.168.2.10 # stu10

5. 偵測的 IP 為一個範圍或網段

6. 要排除的 IP 範圍

7. 最後按 Save and Restart Discovery

8. 過一段時間,就可以在畫面中間看到偵測的結果

9. 如果覺得使用 Web 畫面來操作過於麻煩,也可以直接修改
# cat /opt/opennms/etc/discovery-configuration.xml
<?xml version=”1.0″ encoding=”UTF-8″?><discovery-configuration initial-sleep-time=”30000″ packets-per-second=”1″ restart-sleep-time=”86400000″ retries=”1″ timeout=”2000″>

    <include-range>
        <begin>192.168.1.1</begin>
        <end>192.168.1.254</end>
    </include-range>

</discovery-configuration>

解決 OpenNMS 執行時在 Log 檔中的提示訊息

/var/log/message 出現
systemd: Started OpenNMS server.
systemd: Configuration file /usr/lib/systemd/system/opennms.service is marked executable. Please remove executable permission bits. Proceeding anyway.

查看權限 655
# ls -l /usr/lib/systemd/system/opennms.service
-rw-r-xr-x. 1 root root 363 Mar 22 22:11 /usr/lib/systemd/system/opennms.service

改成 644
# chmod 644 /usr/lib/systemd/system/opennms.service
檔案權限已經改成 644
# ls -l /usr/lib/systemd/system/opennms.service
-rw-r–r–. 1 root root 363 Mar 22 22:11 /usr/lib/systemd/system/opennms.service

OpenNMS CentOS 7 客製化安裝光碟

利用時間完成,採手動的方式來進行後續的設定工作
在 /root 目錄下放置 README 檔案,說明設定的步驟!

# cat /root/README
# 底下請以 root 身份執行
# Java 設定
# /opt/opennms/bin/runjava -s
#
# PostgreSQL Server初始化資料庫
# /usr/bin/postgresql-setup initdb
# sed -i ‘/^host/s/…..$/md5/’ /var/lib/pgsql/data/pg_hba.conf[@more@]#
# 重新啟動 PostgreSQL Server
# systemctl enable postgresql.service
# systemctl restart postgresql.service
#
# PostgreSQL Server 資料庫設定帳號及密碼
# sudo -u postgres psql -c “CREATE USER opennms WITH PASSWORD ‘密碼’;”
# sudo -u postgres psql -c “CREATE DATABASE opennms;”
# sudo -u postgres psql -c “GRANT ALL PRIVILEGES ON DATABASE opennms to opennms;”
#
# OpenNMS 資料庫帳號及密碼設定
# sed -i -e ‘s/password=”opennms”/password=”密碼”/’ -e ‘s/password=””/password=”密碼”/’  -e ‘s/user-name=”postgres”/user-name=”opennms”/’ /opt/opennms/etc/opennms-datasources.xml
#
# 初始化 OpenNMS
# /opt/opennms/bin/install -dis
#
# RRD 設定
# sed -i ‘/MultithreadedJniRrdStrategy/s/^#org/org/’ /opt/opennms/etc/rrd-configuration.properties
# sed -i ‘/rrd2/s/^#opennms/opennms/’ /opt/opennms/etc/rrd-configuration.properties
# sed -i ‘/rrd2/s/^#org/org/’ /opt/opennms/etc/rrd-configuration.properties
#
# OpenNMS 啟動並設定開機時啟動
# systemctl enable opennms.service
# systemctl start opennms.service

執行紅字部分的指令

如果碰到 SELinux 的問題,可以先試著關掉!
# sed -i ‘s/^(SELINUX=).*$/1”disabled/’ /etc/selinux/config
# sync;sync;sync;reboot

如果要取消 OpenNMS 自動更新
# sed -i ‘/gpgcheck/aenable=0’ /etc/yum.repos.d/opennms-repo-stable-rhel7.repo
反之
# sed -i ‘s/enable=0/enable=1/’ /etc/yum.repos.d/opennms-repo-stable-rhel7.repo

OpenNMS – Apache Cassandra 安裝與 Newts 設定 – CentOS

參考網頁:
OpenNMS Installation Guide

根據官方網站上的解釋:
Newts 是基於 Apache Cassandra 的時間序列資料儲存,是一個持久性的策略,可以用來取代 JRobin 或是 RRDtool。

在 CentOS 7.x 下安裝
1. 新增 DataStax 套件庫設定檔
# vim /etc/yum.repos.d/datastax.repo
[datastax]
name = “DataStax Repo for Apache Cassandra”
baseurl = https://rpm.datastax.com/community
enabled = 1
gpgcheck = 1

2. 安裝 GPG Key
# rpm –import https://rpm.datastax.com/rpm/repo_key

3. 更新套件庫
# yum update[@more@]4. 安裝 Cassandra 3.0.x package
# yum install dsc30

5. 啟動 Cassandra 服務
# systemctl enable cassandra
cassandra.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig cassandra on
# systemctl start cassandra

6. 設定 OpenNMS Horizon
# cp /opt/opennms/etc/opennms.properties /opt/opennms/etc/opennms.properties.$(date +%F)
將 false 改為 true
# sed -i ‘/rrd.storeByForeignSource/s/false/true/’ /opt/opennms/etc/opennms.properties
取消前面的註解,並將 rrd 改為 newts
# sed -i ‘/^#org.opennms.timeseries/s/#org.opennms.timeseries.strategy=rrd/org.opennms.timeseries.strategy=newts/’ /opt/opennms/etc/opennms.properties
取消前面的註解
# sed -i ‘/newts.config.hostname/s/^#org/org/’ /opt/opennms/etc/opennms.properties
# sed -i ‘/keyspace/s/^#org/org/’ /opt/opennms/etc/opennms.properties
# sed -i ‘/9042/s/^#org/org/’ /opt/opennms/etc/opennms.properties

7. 初始化 newts
# /opt/opennms/bin/newts init

8. 進行驗證
# cqlsh 127.0.0.1 9042
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.0.9 | CQL spec 3.4.0 | Native protocol v4]
Use HELP for help
.
cqlsh> use newts;
cqlsh:newts> describe table terms;

CREATE TABLE newts.terms (
    context text,
    field text,
    value text,
    resource text,
    PRIMARY KEY ((context, field, value), resource)
) WITH CLUSTERING ORDER BY (resource ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {‘keys’: ‘ALL’, ‘rows_per_partition’: ‘NONE’}
    AND comment = ”
    AND compaction = {‘class’: ‘org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy’, ‘max_threshold’: ’32’, ‘min_threshold’: ‘4’}
    AND compression = {‘chunk_length_in_kb’: ’64’, ‘class’: ‘org.apache.cassandra.io.compress.LZ4Compressor’}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = ’99PERCENTILE’;

cqlsh:newts> describe table samples;

CREATE TABLE newts.samples (
    context text,
    partition int,
    resource text,
    collected_at timestamp,
    metric_name text,
    attributes map<text, text>,
    value blob,
    PRIMARY KEY ((context, partition, resource), collected_at, metric_name)
) WITH CLUSTERING ORDER BY (collected_at ASC, metric_name ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {‘keys’: ‘ALL’, ‘rows_per_partition’: ‘NONE’}
    AND comment = ”
    AND compaction = {‘class’: ‘org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy’, ‘max_threshold’: ’32’, ‘min_threshold’: ‘4’}
    AND compression = {‘chunk_length_in_kb’: ’64’, ‘class’: ‘org.apache.cassandra.io.compress.LZ4Compressor’}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = ’99PERCENTILE’;

cqlsh:newts> quit

9. 重新啟動 OpenNMS
# systemctl restart opennms

OpenNMS – Apache Cassandra 安裝與 Newts 設定 – Ubuntu

參考網頁:
OpenNMS Installation Guide
雜亂的學習筆記本: OpenNMS – OpenNMS 安裝篇(04) – Cassandra 的安裝與 Newts 的設定

根據官方網站上的解釋:
Newts 是基於 Apache Cassandra 的時間序列資料儲存,是一個持久性的策略,可以用來取代 JRobin 或是 RRDtool。

在 Ubuntu 16.04 下安裝
1. 新增 DataStax 套件庫設定檔
# vim /etc/apt/sources.list.d/cassandra.sources.list
deb https://debian.datastax.com/community stable main

2. 安裝 GPG Key
# wget -O – https://debian.datastax.com/debian/repo_key | apt-key add –

3. 更新套件庫
# apt-get update[@more@]
4. 安裝 Cassandra 3.0.x package
# apt-get install dsc30
如果出現下面的錯誤訊息,請下載 python-support 進行安裝
The following packages have unmet dependencies:
 dsc30 : Depends: python-support (>= 0.90.0) but it is not installable
E: Unable to correct problems, you have held broken packages.

# wget http://launchpadlibrarian.net/109052632/python-support_1.0.15_all.deb
# dpkg -i python-support_1.0.15_all.deb
Selecting previously unselected package python-support.
(Reading database … 72575 files and directories currently installed.)
Preparing to unpack python-support_1.0.15_all.deb …
Unpacking python-support (1.0.15) …
Setting up python-support (1.0.15) …
Processing triggers for man-db (2.7.5-1) ...

5. 設定 OpenNMS Horizon
# cp /usr/share/opennms/etc/opennms.properties /usr/share/opennms/etc/opennms.properties.$(date +%F)
將 false 改為 true
# sed -i ‘/rrd.storeByForeignSource/s/false/true/’ /usr/share/opennms/etc/opennms.properties
取消前面的註解,並將 rrd 改為 newts
# sed -i ‘/^#org.opennms.timeseries/s/#org.opennms.timeseries.strategy=rrd/org.opennms.timeseries.strategy=newts/’ /usr/share/opennms/etc/opennms.properties
取消前面的註解
# sed -i ‘/newts.config.hostname/s/^#org/org/’ /usr/share/opennms/etc/opennms.properties
# sed -i ‘/keyspace/s/^#org/org/’ /usr/share/opennms/etc/opennms.properties
# sed -i ‘/9042/s/^#org/org/’ /usr/share/opennms/etc/opennms.properties

6. 初始化 newts
# /usr/share/opennms/bin/newts init

7. 進行驗證
# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.0.9 | CQL spec 3.4.0 | Native protocol v4]
Use HELP for help.
cqlsh> use newts;
cqlsh:newts> describe table terms;

CREATE TABLE newts.terms (
    context text,
    field text,
    value text,
    resource text,
    PRIMARY KEY ((context, field, value), resource)
) WITH CLUSTERING ORDER BY (resource ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {‘keys’: ‘ALL’, ‘rows_per_partition’: ‘NONE’}
    AND comment = ”
    AND compaction = {‘class’: ‘org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy’, ‘max_threshold’: ’32’, ‘min_threshold’: ‘4’}
    AND compression = {‘chunk_length_in_kb’: ’64’, ‘class’: ‘org.apache.cassandra.io.compress.LZ4Compressor’}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = ’99PERCENTILE’;

cqlsh:newts> describe table samples;

CREATE TABLE newts.samples (
    context text,
    partition int,
    resource text,
    collected_at timestamp,
    metric_name text,
    attributes map<text, text>,
    value blob,
    PRIMARY KEY ((context, partition, resource), collected_at, metric_name)
) WITH CLUSTERING ORDER BY (collected_at ASC, metric_name ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {‘keys’: ‘ALL’, ‘rows_per_partition’: ‘NONE’}
    AND comment = ”
    AND compaction = {‘class’: ‘org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy’, ‘max_threshold’: ’32’, ‘min_threshold’: ‘4’}
    AND compression = {‘chunk_length_in_kb’: ’64’, ‘class’: ‘org.apache.cassandra.io.compress.LZ4Compressor’}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = ’99PERCENTILE’;

cqlsh:newts> quit

8.重新啟動 OpenNMS
# systemctl restart opennms