# Monitoring [TOC] + 為什麼要監控網路設備呢? + 因為網路發生異常就會導致服務中斷,就會影響到使用者的可⽤性 Availability + 需要遠端監控網路設備,不可能每台都現場查看 > like ssh ## SNMP + 簡單網路管理協定 (Simple Network Management Protocol; SNMP) 由 IETF (Internet Engineering Task Force) 所定義 + 是一個進行蒐集與管理網路設備的協定。 > 網路硬體供應商會自動將 SNMP 支援嵌入其設備中,使其成為監控網路的一種無障礙方式。它還在管理網路性能、發現問題和管理網路增長方面效率很高。 + 在 OSI 第七層應用程式層,並透過 UDP 161 port 進行請求 + 功能: + Monitor network performance + Audit network usage + Detect network faults + Detect inappropriate access + Configure remote devices + 使用SNMP管理的網路主要由3個元件所組成: +  > [圖片自](https://www.google.com.tw/imgres?imgurl=https%3A%2F%2Fwww.ctimes.com.tw%2Fart%2F2008%2F07%2F251715026292%2FP1.gif&imgrefurl=https%3A%2F%2Fwww.ctimes.com.tw%2FDispArt%2Ftw%2F%25E8%25B3%2587%25E7%25AD%2596%25E6%259C%2583%25E7%25B6%25B2%25E5%25A4%259A%25E6%2589%2580%25E5%25B0%2588%25E6%25AC%2584%2FMIB%2F%25E8%25B3%2587%25E7%25AD%2596%25E6%259C%2583%25E7%25B6%25B2%25E8%25B7%25AF%2FWiMAX%2FIII-%25EF%25BC%25B7iMAX%2F0807251715DJ.shtml&tbnid=jhkxmsYcatkSRM&vet=12ahUKEwjr04eMsJn8AhUGBaYKHabwBcYQMygIegUIARDAAQ..i&docid=9oTWvF6AYCcfnM&w=550&h=405&q=intel%20mib%20oid&hl=zh-TW&authuser=0&ved=2ahUKEwjr04eMsJn8AhUGBaYKHabwBcYQMygIegUIARDAAQ) 1. 網路管理系統 + Network Management System + 為安裝於管理端 (Manager) 的軟體,用以向代理者查詢被管理裝置的相關資訊。 + SNMP 管理器的主要功能 + 查詢代理者 + 從代理者獲得回應 + 在代理者中設定變數 + 確認來自代理者的異常事件 2. 被管理裝置 + Managed Device + 指網路中被監控的設備節點。 + 例如:路由器、交換器、伺服器、印表機、NAS、防火牆、WLAN 控制器 3. 代理者 + Agent + 為安裝於被管理裝置的軟體,負責監控及回傳被監控設備的相關資訊。 + SNMP 代理程式的主要功能 + 收集有關其本地環境的管理資訊 + 存儲和擷取 MIB 中定義的管理資訊。 + 向管理器傳送事件。 + 充當一些非 SNMP 可管理網路節點的 proxy。 + 每個 SNMP Agent 都有一個描述受控裝置參數資訊資料庫 ,SNMP Agent 是以變數方式呈現被管理裝置的相關資訊,每個變數皆有其唯一的物件識別碼 (Object Identifier; OID) ,而OID是以階層方式被描述於管理資訊庫 (Management Information Base; MIB) + SNMP 的管理系統 (NMS) 會使用這個設備參數的資料庫,向 Agent 請求設備的資訊,並根據 NMS 的需求,轉換資訊,而管理器跟 Proxy 之間共同使用的資料庫就是 MIB :::info ### MIB 架構 + 以樹狀結構,包含物件識別碼 (OID) + 每一個 OID 都是唯一的識別碼 > 例如 OID 為1.3.6.1.4.1.9代表 Cisco 公司。 + 樹狀最頂端的 OID 可以取得最多的狀態資訊  > [圖片自](https://www.google.com.tw/url?sa=i&url=https%3A%2F%2Fblog.csdn.net%2Fallway2%2Farticle%2Fdetails%2F111302349&psig=AOvVaw1tSH5YHwF_8EoqzVpQFvH4&ust=1672215977872000&source=images&cd=vfe&ved=0CAMQjB1qFwoTCJj7y4ywmfwCFQAAAAAdAAAAABBd) ::: ## SNMP 指令 + 從 NMS 可以透過 SNMP 協定發送指令: + GET + 從網路管理系統向設備傳送,可讀取設備上的數值 + GET NEXT + 取得 MIB tree 下一個 OID 值 + GET BULK + 從 MIB 中取得大量資料 + SET + 管理員可修改或設定設備的數值 > 遠端設定一直 ssh 進來的人 + TRAPS + Agent 對 SNMP 管理系統發出的事件指令 > 讓系統主動發送警告 + 使用 UDP 162 + INFORM + SNMP 管理系統接收指令後回傳確認 + 使用 UDP 162 + RESPONSE + 回傳 SNMP 網路管理系統執行的值或訊號 ## SNMP 原理  + 管理端經由 UDP 傳送 request 至代理者 (port 161) ,代理者透過來源埠傳送 response 至管理端。 + 當被監控設備發生異常事件時, ,代理者可經由UDP主動傳送 notification 至管理端(port 162)。 + 管理端一方面可經由 Get 、 GetNext 或 GetBulk 指令向代理者擷取被監控設備的相關資訊,另一方面亦可透過代理者經由 Trap 或 Inform 指令主動傳送資料。此外,管理端使用 Set 指令以達到系統管理之目的。 > SNMP Traps則可針對設備環境中的各細項,例如風扇、電壓、溫度等項次進行告警。  [圖自](https://www.netadmin.com.tw/netadmin/zh-tw/technology/DEFDB66535BA4BC68D4DAEEB01FA01E9) ### Different version of SNMP + SNMP version 2主要是增加 SNMP 在位元串(bit string)、網路位址 (network address)及計數器 (counter) 之功能 + 而 SNMPv3 是基於 SNMPv2 ,進而增加訊息安全 (message security) 及存取控制 (access control) 等功能。 ### Demo + 查詢 + `snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1` + `-v` 參數指定採用 2c 版本的 SNMP 協定 + `-c` 參數指定社群(community)名稱為 public + `localhost` 是指定 SNMP 代理者(agent)的位址,如果我們的 agent 與 NMS 裝在不同的機器上,這裡就要替換為 agent 的 IP 位址。 + 設定查詢 OID + `sudo vim /etc/snmp/snmpd.conf` +  + ` systemctl restart snmpd.service ` +  :::info ## 常見系統內建 OID + 系統基本資訊 | OID | 說明 | | -------- | -------- | .1.3.6.1.2.1.1.1.0 | 系統基本資訊 .1.3.6.1.4.1.2021.10.1.3.1 | 系統 1 分鐘平均負載(load) .1.3.6.1.4.1.2021.10.1.3.2 | 系統 5 分鐘平均負載(load) .1.3.6.1.4.1.2021.10.1.3.3 | 系統 15 分鐘平均負載(load) .1.3.6.1.2.1.1.3.0 | 系統持續運行時間(uptime)| + CPU | OID | 說明 | | -------- | -------- | .1.3.6.1.4.1.2021.11.9.0 | 使用者 CPU 用量(百分比) .1.3.6.1.4.1.2021.11.10.0 | 系統 CPU 用量(百分比) .1.3.6.1.4.1.2021.11.11.0 | 閒置 CPU 量(百分比) .1.3.6.1.4.1.2021.11.50.0 | 使用者 CPU 用量(時間) .1.3.6.1.4.1.2021.11.52.0 | 系統 CPU 用量(時間) + 記憶體 OID | 說明| | -------- | -------- | .1.3.6.1.4.1.2021.4.5.0 | 實體記憶體大小 .1.3.6.1.4.1.2021.4.6.0 | 實體記憶體用量 .1.3.6.1.4.1.2021.4.11.0 | 實體記憶體剩餘量 .1.3.6.1.4.1.2021.4.3.0 | 交換空間(swap)大小 .1.3.6.1.4.1.2021.4.4.0 | 交換空間(swap)剩餘量 + 磁碟 | OID | 說明 | | -------- | -------- | |.1.3.6.1.4.1.2021.9.1.2 | 磁碟掛載路徑 | |.1.3.6.1.4.1.2021.9.1.3 | 磁碟設備路徑 | |.1.3.6.1.4.1.2021.9.1.6 | 磁碟大小 | | .1.3.6.1.4.1.2021.9.1.7 | 磁碟剩餘空間 | | .1.3.6.1.4.1.2021.9.1.8 | 磁碟使用量| | .1.3.6.1.4.1.2021.9.1.9 | 磁碟使用量百分比| | .1.3.6.1.4.1.2021.9.1.10 | 磁碟 inode 使用量 | | .1.3.6.1.4.1.2021.9.1.100 | 磁碟剩餘空間是否不足 ::: ## Cacti + 即時監控 + 基於 Web 的開源網絡監視和繪圖工具,使用SNMP來監控網路設備(port, uptime...),並使用 RRDtool 將資訊視覺化,通常用於繪製 CPU 負載和網絡頻寬的利用率等數值的時間序列數據。 + 主要以線圖表示即時資源 + [cacti install](https://linadonis.pixnet.net/blog/post/21317813-%5Bcacti%5Dubuntu-cacti%E7%9B%A3%E6%8E%A7%E9%9B%BB%E8%85%A6%E7%8B%80%E6%85%8B) ## Nagious + 即時監控 + 可以藉由定義臨界值來設定警報 + [nagios install ubuntu 20.04](https://www.vultr.com/docs/install-nagios-on-ubuntu-20-04/) + [nagios add host](https://kifarunix.com/add-hosts-to-nagios-server-for-monitoring/) ssh nagious agent ## Grafana + Cacti Nagious 都是即時監控的軟體,但假如今天想觀察長期變化? +  [圖自](https://www.readfog.com/a/1652154485583220736)   + Grafana 是一套開源的視覺化和分析工具,並支援多種資料來源,管理者不會因為受限於不同的資料來源而必須使用不同的監控工具。透過 Grafana 將採集資料做查詢後視覺化的展現,並可即時通知示警。Grafana 提供將時間序列資料庫(Time series database)的資料轉變為圖形視覺化的功能。 + 特色 + 長期分析製圖 + 上手難度較低 + 較多外掛插件,可塑性較高 ## Prometheus  + 特色 + 長期分析、 + 以時間時序為主的多維度資料模型,以 Metric 資料名稱與 key / values 來呈現。 + 透過 PromQL 查詢語言,取得時序資料。 + 不需依賴分佈式存儲,單節點儲存即可。 + 透過 HTTP 協定 pull 模式收集時序資料。 + 支援多種圖形和儀表板。 + 除了 SNMP 預設的監測資源外也可以自訂監測的項目,也可收集 /var/log 內容做成資料庫 > ssh 登入次數,server error log ... + 進階查詢因資料庫的形式十分容易查詢 > 過去24hr cpu 長時間監控 ## REF [SNMP protocol](https://www.snmpcenter.com/what-is-snmp/) [什麼是 SNMP](https://www.whatsupgold.com/tw/snmp) [什麼是 SNMP? SNMP 教程](https://www.manageengine.com/tw/network-monitoring/what-is-snmp.html) [操作](https://officeguide.cc/ubuntu-linux-install-configure-snmp-tutorial-examples/) [cacti](https://linadonis.pixnet.net/blog/post/21317813-%5Bcacti%5Dubuntu-cacti%E7%9B%A3%E6%8E%A7%E9%9B%BB%E8%85%A6%E7%8B%80%E6%85%8B) [cacti lesson](https://www.hcrc.edu.tw/media/education/Cacti_%E7%B0%A1%E4%BB%8B.pdf) [nagious]()
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up