###### tags: `專題` # 專題 ### <mark>MRTG</mark> * SNMP(Simple Network Management Protocol,簡易網路管理協定)是目前網路上用來進行網路管理的通訊協定,最主要的目的在於管理網路上各式各樣的設備。 * SNMP主要分為管理端(Manager)、代理者(Agent)以及管理資訊庫(Management Information Base,MIB)三個元件 * 管理端(Manager)通常被稱為網路管理工作站(Network Management Station,NMS)。利用SNMP通訊協定向代理者(Agent)查詢所需的相關資訊,如網路設備運作狀態、系統硬體的配置(如CPU使用率、硬碟利用率)等。管理者取得此類資訊後,即可進行統計分析,並且利用相關工具進行處理,繪出簡單易懂的統計圖表供使用者瀏覽。 * 代理者代理者(Agent)通常是一個執行程式(通常運作在被監控的設備上),負責讀取被監控設備上的相關資訊,而後接收到管理端所發出的SNMP Get-request、Get-next-request等查詢指令時,再將相關資訊回傳至管理端。除了資料回傳的機制外,代理者也提供主動回報的機制(Trap),在符合條件的情況下(如系統發生錯誤或關機等特殊的情況)主動地以Trap的方式發送訊息通知管理端。 * SNMP定義了網管資訊庫(簡稱為MIB),利用階層性的描述,說明所有受管理設備資訊的屬性,並將這些設備稱為SNMP物件(Object)。 0. <font color=blue>virtualbox設定為橋接模式</font> ```= 裝置>網路>網路設定>改為: 橋接介面卡>進階混和模式(全部允許) ``` 0. <font color=blue>修改系統時間</font> ```= sudo timedatectl set-timezone Asia/Taipei timedatectl ``` 1. <font color=blue>安裝所需套件</font> ```= apt install snmp snmpd apache2 mrtg net-tools -y ``` 2. <font color=blue>編輯 `/etc/snmp/snmpd.conf`檔案 </font> ```= # rocommunity public default -V systemonly //註解掉 # rocommunity6 public default -V systemonly //註解掉 rocommunity public localhost //不能有systemonly,那個是唯獨 rocommunity6 public localhost ``` 3. <font color=blue>輸入以下指令重啟snmpd服務,並測試SNMPWALK是否正常運作。</font> ```= sudo service snmpd restart sudo snmpwalk localhost -c public -v 1 sudo snmpwalk localhost -c public -v 2c ``` 4. <font color=blue>創建MRTG所需設定檔並輸出。創建MRTG之index檔並輸出。若有參數不同,需要修改</font> ```= sudo cfgmaker --output=/etc/mrtg.cfg public@127.0.0.1 sudo indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg.cfg ``` 5. <font color=blue>新增crontab,使MRTG自動每5分鐘進行更新。</font> ```= crontab -e */5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg ``` 6. <font color=blue>開啟`/var/www/html/mrtg`目錄中的網頁檔即可觀察視覺化的流量</font> * or 瀏覽器打開`http://127.0.0.1/mrtg/` * ![image](https://hackmd.io/_uploads/BJdEoxEYp.png) ### <mark>安裝與編譯其他程式</mark> * 安裝gcc , libs ```= //ubuntu_2 sudo apt install gcc apt install libpcap-dev libpthread-stubs0-dev libsqlite3-dev make ``` * python 虛擬環境 ```= sudo apt install python3-venv -y //創建一個新的目錄,進入該目錄 mkdir my_project && cd my_project //創建虛擬環境。使用以下命令,其中 venv 是虛擬環境的名稱,你可以替換為你喜歡的名稱: python3 -m venv venv //啟動虛擬環境 source venv/bin/activate ``` ![image](https://hackmd.io/_uploads/SycD5SBYa.png) * 將專案所用到的套件紀錄並匯出 ```= pip freeze > requirements.txt //將來可以直接重新下載,移植更方便 pip install -r requirements.txt ```