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

PostgreSQL Server 基本操作

1. 建立使用者 testuser 及密碼
# su – postgres
$ /bin/createuser -P testuser
輸入新身份的密碼:
再輸入一次:

2. 刪除使用者
$ /bin/dropuser testuser[@more@]

3. 建立資料庫 testdb,並指定管理者  testuser
$ /bin/createdb -O testuser testdb

4. 進行連線
$ psql -U testuser testdb
用戶 testuser 的密碼:
psql (9.2.18)
輸入 “help” 顯示說明。

testdb=>help
您正在使用 PostgreSQL 指令列介面 psql。
輸入: copyright 顯示發行條款
       h 顯示 SQL 指令的說明
       ? 顯示 psql 指令的說明
       g 或者以分號 (;) 結尾以執行查詢
       q 結束

5. 建立資料表
testdb=> create table users (
testdb(> name varchar(30),
testdb(> age integer,
testdb(> mobiletel varchar(10),
testdb(> address varchar(80));
CREATE TABLE

6. 插入資料
testdb=> insert into users values (‘陳小華’,31,’0910001002′,’頭城鎮開蘭路123號’);
INSERT 0 1
testdb=> insert into users values (‘吳小剛’,38,’0910003004′,’頭城鎮開蘭路456號’);
INSERT 0 1

7. 瀏覽資料
testdb=> select * from users;
  name  | age | mobiletel  |      address
——–+—–+————+——————-
 陳小華 |  31 | 0910001002 | 頭城鎮開蘭路123號
 吳小剛 |  38 | 0910003004 | 頭城鎮開蘭路456號
(2 筆資料列)

testdb=> select * from users where age=31;
  name  | age | mobiletel  |      address
——–+—–+————+——————-
 陳小華 |  31 | 0910001002 | 頭城鎮開蘭路123號

testdb=> select * from users where name=’吳小剛’;
  name  | age | mobiletel  |      address
——–+—–+————+——————-
 吳小剛 |  38 | 0910003004 | 頭城鎮開蘭路456號

testdb=> update users set mobiletel=’0910005006′ where name=’吳小剛’;
UPDATE 1
testdb=> select * from users where name=’吳小剛’;
  name  | age | mobiletel  |      address
——–+—–+————+——————-
 吳小剛 |  38 | 0910005006 | 頭城鎮開蘭路456號

testdb=> delete from users where name=’吳小剛’;
DELETE 1
testdb=> select * from users;
  name  | age | mobiletel  |      address
——–+—–+————+——————-
 陳小華 |  31 | 0910001002 | 頭城鎮開蘭路123號

8. 刪除資料表
testdb=> drop table users;
DROP TABLE

9.
testdb=> l
                                     資料庫清單
   名稱    |  擁有者  | 字元編碼 |   Collate   |  轉換型別   |       存取權限
———–+———-+———-+————-+————-+———————–
 postgres  | postgres | UTF8     | zh_TW.UTF-8 | zh_TW.UTF-8 |
 template0 | postgres | UTF8     | zh_TW.UTF-8 | zh_TW.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_TW.UTF-8 | zh_TW.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 testdb    | testuser | UTF8     | zh_TW.UTF-8 | zh_TW.UTF-8 |
(4 筆資料列)

testdb=> du
                        角色清單
 角色名稱 |               屬性                | 成員屬於
———-+———————————–+———-
 postgres | 超級用戶, 建立角色, 建立 DB, 複製 | {}
 testuser |                                   | {}

命令列操作
# sudo -u postgres psql -c “CREATE USER testuser WITH PASSWORD ‘密碼’;”
# sudo -u postgres psql -c “CREATE DATABASE testdb;”
# sudo -u postgres psql -c “GRANT ALL PRIVILEGES ON DATABASE testdb to testuser;”

# sudo -u postgres psql -c “ALTER USER testuser WITH SUPERUSER;”
# sudo -u postgres psql -c “ALTER ROLE testuser NOSUPERUSER;”
# sudo -u postgres psql -c “ALTER ROLE testuser NOCREATEDB;”

$ /bin/pg_dump -f users_dump.sql -U testuser -W testdb
$ /bin/psql -U testuser testdb -f users_dump.sql

在 CentOS 7.x 上安裝 PostgreSQL Server

從剛開始學 GNU/Linux 用的就是 MySQL,一直到後來的 MariaDB,很少使用的 PostgreSQL,印象中只有 OpenNMS 才有特別使用到。

1. 安裝 PostgreSQL Server
# yum install postgresql-server postgresql-contrib

2. 初始化 PostgreSQL 資料庫
# /usr/bin/postgresql-setup initdb
Initializing database … OK[@more@]
3. 修改認證設定檔 /var/lib/pgsql/data/pg_hba.conf
# sed -i ‘/^local/s/peer$/md5/’ /var/lib/pgsql/data/pg_hba.conf

# sed -i ‘/^host/s/…..$/md5/’ /var/lib/pgsql/data/pg_hba.conf
# egrep ‘^local|^host’ /var/lib/pgsql/data/pg_hba.conf
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5

host    all             all             ::1/128                 md5

4. 啟動 PostgreSQL Server
# systemctl start postgresql.service
# systemctl enable postgresql.service

5. 開啟防火牆設定
# firewall-cmd –permanent –add-service=postgresql
# firewall-cmd –reload

# iptables -A INPUT -p tcp –syn -m state –state NEW –dport 5432 -j ACCEPT

在 CentOS 6.x 上安裝 OpenNMS

OpenNMS 是一套 OpenSource 的網路管理軟體,可以利用 Ping 及 SNMP 的方式來偵測網路設備或服務的啟動狀態。
OpenNMS 官方網站:http://www.opennms.org/
本篇文章參考:浮雲雅築: [研究] OpenNMS 1.12.3 快速安裝程式 (yum)(CentOS 6.5 x64)

[@more@]
下載 OpenNMS 套件庫 rpm
# wget http://yum.opennms.org/repofiles/opennms-repo-stable-rhel6.noarch.rpm

進行安裝
# rpm -Uvh opennms-repo-stable-rhel6.noarch.rpm

安裝 PostgreSQL 資料庫
# yum install postgresql postgresql-server

PostgreSQL 初始化資料庫
# service postgresql initdb
正在初始化資料庫:                                         [  確定  ]

啟動 PostgreSQL Server
# service postgresql start
正在啟動 postgresql 服務:                                 [  確定  ]

如果沒有先初始化資料庫,而直接啟動,則會出現下面的錯誤訊息
# service postgresql start

/var/lib/pgsql/data is missing. Use “service postgresql initdb” to initialize the cluster first.
                                                           [失敗]

設定開機時啟動
# chkconfig –level 3 postgresql on

先備份設定檔,再進行修改
# cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.$(date +%F)

將 70 行後的 ident 取代成 trust
# sed -i ’70,$s/ident/trust/’ /var/lib/pgsql/data/pg_hba.conf

重新啟動 PostgreSQL Server
# service postgresql restart                                               
正在停止 postgresql 服務:                                 [  確定  ]
正在啟動 postgresql 服務:                                 [  確定  ]

檢查是否有正常啟動 PostgreSQL Server
# netstat -antulp | grep 5432
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      8092/postmaster
tcp        0      0 ::1:5432                    :::*                        LISTEN      8092/postmaster

安裝 Oracle Java JDK
Oracle Java JDK 下載網頁:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
# rpm -ivh jdk-7u45-linux-x64.rpm

進行 Oracle Java JDK 設定
# alternatives –install /usr/bin/java  java  /usr/java/jdk1.7.0_45/bin/java  100
# alternatives –set  java /usr/java/jdk1.7.0_45/bin/java
# echo ‘export JAVA_HOME=/usr/java/jdk1.7.0_45’ >> /etc/profile
# echo ‘export PATH=$PATH:$JAVA_HOME/bin’ >> /etc/profile
# echo ‘export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar’ >> /etc/profile
# source /etc/profile

檢查 Java 版本
# java -version
java version “1.7.0_45”
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

安裝 OpenNMS
# yum -y install opennms opennms-plugins opennms-remote-poller mib2opennms iplike
 *** Installation complete.  You must still run the installer at
 *** $OPENNMS_HOME/bin/install to be sure your database is up
 *** to date before you start OpenNMS.  See the install guide at
 *** http://www.opennms.org/wiki/Installation:RPM and the
 *** release notes for details.

設定 OpenNMS 環境變數
# export OPENNMS_HOME=/opt/opennms
# echo ‘export PATH=$PATH:$OPENNMS_HOME/bin’ >> /etc/profile

設定 OpenNMS 使用的 Java
# /opt/opennms/bin/runjava -S /usr/java/latest/bin/java
runjava: checking specified JRE: “/usr/java/latest/bin/java”…
runjava: specified JRE is good.
runjava: value of “/usr/java/latest/bin/java” stored in configuration file

# $OPENNMS_HOME/bin/runjava -s
runjava: Looking for an appropriate JRE…
runjava: Checking for an appropriate JRE in JAVA_HOME…
runjava: found: “/usr/java/jdk1.7.0_45/bin/java” is an appropriate JRE
runjava: value of “/usr/java/jdk1.7.0_45/bin/java” stored in configuration file

建立 OpenNMS 需要的資料庫
# $OPENNMS_HOME/bin/install -dis

最後會出現
Upgrade completed successfully!

啟動 OpenNMS
# service opennms start
Starting OpenNMS: Started OpenNMS, but it has not finished starting up
                                                           [失敗]

設定開機時啟動
# chkconfig –level 3 opennms on

雖然最後的訊息出現失敗,但有正常執行
# netstat -antulp | grep 8980
tcp        0      0 :::8980                     :::*                        LISTEN      8956/java
tcp        0      0 :::18980                    :::*                        LISTEN      8956/java

如果不放心,可以檢查 log 檔的訊息
# cat /opt/opennms/logs/daemon/output.log
[DEBUG] System property ‘opennms.library.jicmp’ set to ‘/usr/lib64/libjicmp.so.  Attempting to load jicmp library from this location.
[INFO] Successfully loaded jicmp library.
[DEBUG] System property ‘opennms.library.jicmp6’ set to ‘/usr/lib64/libjicmp6.so.  Attempting to load jicmp6 library from this location.
[INFO] Successfully loaded jicmp6 library.

顯示 OpenNMS 執行狀態
# /opt/opennms/bin/opennms -v status
OpenNMS.Eventd         : running
OpenNMS.Trapd          : running
OpenNMS.Queued         : running
OpenNMS.Actiond        : running
OpenNMS.Notifd         : running
OpenNMS.Scriptd        : running
OpenNMS.Rtcd           : running
OpenNMS.Pollerd        : running
OpenNMS.PollerBackEnd  : running
OpenNMS.Ticketer       : running
OpenNMS.Collectd       : running
OpenNMS.Discovery      : running
OpenNMS.Vacuumd        : running
OpenNMS.EventTranslator: running
OpenNMS.PassiveStatusd : running
OpenNMS.Statsd         : running
OpenNMS.Provisiond     : running
OpenNMS.Reportd        : running
OpenNMS.Alarmd         : running
OpenNMS.Ackd           : running
OpenNMS.JettyServer    : running
opennms is running

開啟瀏覽器,在網址列上輸入 http://Server’IP:8980/opennms
預設帳號和密碼都是 admin,可以在 Web 介面中更改密碼

設定 OpenNMS 要偵測的網段,也可以在 Web 介面設定
# vim /opt/opennms/etc/discovery-configuration.xml
<discovery-configuration threads=”1″ packets-per-second=”1″
        initial-sleep-time=”30000″ 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>

在網段中所偵測到的主機及服務

在防火牆中設定
iptables -A INPUT -p tcp  -m state –state NEW –dport 389 -j ACCEPT