Windows 作業系統安裝 SNMP 服務

因為沒有 Windows Server,所以以 Windows 10 為例
1. 執行 程式和功能

2. 選擇 開啟或關閉 Windows 功能

[@more@]3. 新增 SNMP 服務


4. 開始 控制台

5. 選擇 系統管理工具

6. 選擇 服務

7. 選擇 SNMP Service

8. 選擇 代理程式 頁面,輸入連絡人及位置相關資訊,系選相關服務

9. 選擇 安全性 頁面,新增 群體名稱

10. 輸入唯讀的群體名稱

11. 預設只能從本機讀取,新增可以存取的 IP

12. 輸入可以讀取的 IP

13. 最後按 確定

14. 進行測試
# snmpwalk -v 2c -c publicro 192.168.1.187

# snmpwalk -v 2c -c publicro 192.168.1.187 | wc -l
3018

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

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

解決安裝 Cacti 1.0.x 版時出現的一些 SQL Server 提示訊息

在 CentOS 7.x 上安裝 Cacti 1.0.x 版時, 會出現一堆紅色的提示訊息

雖然按 Next 還是可以跳過,但還是花了一些時間,把它們通通都去除了![@more@]解決方式:
1. 安裝 MariaDB SQL 10.x 版,可以參考 頭城國小資訊組 | 安裝 MariaDB SQL Sever 10.x
2. 備份原設定檔
# cp /etc/my.cnf.d/client.cnf /etc/my.cnf.d/client.cnf.$(date +%F)
# cp /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.$(date +%F)
# cp /etc/my.cnf.d/mysql-clients.cnf cp /etc/my.cnf.d/mysql-clients.cnf.$(date +%F)

3. 參考了以下的網頁:
Optimize my.cnf with MariaDB | cPanel Forums
How to improve InnoDB performance by 55%

其實也不懂,反正只是把上面提示的值加大而已!

# sed -i ‘/[client]/adefault-character-set=utf8mb4’ /etc/my.cnf.d/client.cnf

# sed -i ‘/[mysqld]/acollation-server=utf8mb4_unicode_ci’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/acharacter-set-server=utf8mb4’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/amax_heap_table_size=128M’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/amax_allowed_packet=32M’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/atmp_table_size=128M’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/ajoin_buffer_size=128M’ /etc/my.cnf.d/server.cnf
# sed -i ‘/[mysqld]/ainnodb_buffer_pool_size = 512M’ /etc/my.cnf.d/server.cnf

# sed -i ‘/innodb_lock_wait_timeout/askip-innodb_doublewrite’ /etc/my.cnf.d/mysql-clients.cnf
# sed -i ‘/innodb_lock_wait_timeout/ainnodb_read_io_threads=64’ /etc/my.cnf.d/mysql-clients.cnf
# sed -i ‘/innodb_lock_wait_timeout/ainnodb_write_io_threads=32’ /etc/my.cnf.d/mysql-clients.cnf
# sed -i ‘/innodb_lock_wait_timeout/ainnodb_additional_mem_pool_size=96M’ /etc/my.cnf.d/mysql-clients.cnf
# sed -i ‘/innodb_lock_wait_timeout/asinnodb_flush_log_at_timeout=5’ /etc/my.cnf.d/mysql-clients.cnf

4. 重新啟動 MariaDB SQL Server
# systemctl restart mariadb

5. 檢查成果