Cacti 第三天課程 Cacti 到底是什麼? (上午 ) Cacti 的資料流 - Cacti 資料的取得 :

Slides:



Advertisements
Similar presentations
●公司簡介. ●公司組織 行銷 企劃部 行銷 企劃部 研發 設計部 研發 設計部 視覺 設計部 視覺 設計部 媒體 製作部 媒體 製作部 行動 裝置部 行動 裝置部 執行長 總經理 管理部 本公司組織人力配置除董事長、執行長、總經理外,共 有六大部門,分別為研發部 6 人、管理部 4 人、視覺設計部.
Advertisements

© 2014 VMware Inc. All rights reserved. VMware 大專院校軟體聯合採購方案 – Education Licensing Program Practical, cost-effective options for qualified educational institutions.
1 网站设计理念 大连理工大学创新实验学院 优秀网站展示 - LAMP 类网站
董笑菊 电子信息与电气工程学院 计算机科学与工程系
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
动态网站开发 【HTTP与网络基础】 李博杰
DATE: 14/10/2009 陳威宇 格網技術組 雲端運算相關應用 (Based on Hadoop)
IT运维管理解决方案 -轻松管理,自在运维 产品经理 刘曜.
第5章 HTML 標籤介紹.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
share box user research finding
第 11 章 網際網路與資料庫系統.
企業升級 IPv6 注意事項與 雲端 IPv6 實務演練
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
信息系统 应急解决方案 北京神州讯安科技有限公司
MySQL 使用者名稱:USERNAME (上限16個字元)
網路設備即時監控與異常自動復原系統 胡中強 林佑群 蔡殿偉.
系統安全期末報告 網管實務經驗探討-十人以下中小企業為例
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
Xoops架站器介紹 基隆市教育網路中心 王言俊 按一下以新增備忘稿.
操作系统结构.
天涯运维的那些事 网络系统部.天涯.
Introduction to CloudStack’s System VM
Oracle WebLogic 数据库连接原理及案例探讨
计算机系统安全 第10章 常用攻击手段.
大数据在医疗行业的应用.
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
黃俊榮 邱敏乘 蔡一郎 國家高速網路與計算中心
Lab312.
CT212 (02/03)-Network Programming and design
第四章 網頁表單與資料傳遞.
利用 ISA Server 2004 建置應用層防護機制
高雄應用科技大學 有線網路建置實習(I) 聯易科技股份有限公司 Ben 李政勳
第 13 章 DNS 著作權所有 © 旗標出版股份有限公司.
系統安全期末報告 Nessus 與其相關軟體使用心得
臺東縣中小學資訊教育校園網路管理暨資訊安全防護計畫研習
基于Hadoop的数据仓库Hive.
網站內容建置實務 報告人:電資官鄒堡旬少校   .
Linux 圖形操作介面 GUI -- X-window 與 Webmin
Discover the power of SSL-VPN+ IT management
Windows 2000/XP网络组建与系统管理 李燕 中南分校.
CDR - Continuous Data Replication
遠東NAS-ON 6000教育訓練 簡報 工程師: 傅國忠.
預官考試輔導 計算機概論提要 91年12月4日.
Android盤點系統 組別:第九組 組員:四資工三B 4980E046 宋佩鴻 四資工三B 4980E054 詹典易
Introduction to Multimedia Coding
「寬頻匯流網路管理」教材 模組四: 第一章 網路管理架構
Android手动测试实践 ——绮珠.
邹佳恒 第十八届全国科学计算与信息化会议 • 威海,
第二章 防火墙基础技术.
MS Windows XP 作業系統使用操作簡介.
軟體工程:如何開發軟體? 把它看成是一件工程。 那麼就會有一些工具、技術、方法,也有管理的議題。
Unit 10: Introduction to the Internet
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
Git & github By 宋正倫 (修訂by jmchen).
凌宁 系统工程师 亚洲区嵌入式系统事业群 微软(中国)有限公司
第3章 認識處理元.
Introduction to Opensocial
第11章 網路的設定與測試.
微软云计算 --Windows Azure platform
Chang Chi-Chung 國立大里高級中學
第4章 TCP/IP应用层常用协议 4.1 Telnet 协 议 4.2 文件传输协议FTP 4.3 电子邮件的工作原理及其协议
認識資料庫 MySQL 資料庫新增 MySQL 資料表新增 認識欄位資料表 資料新增、刪除、修改、瀏灠 資料表清空與刪除
認識資料庫 MySQL 資料庫新增 MySQL 資料表新增 認識欄位資料表 資料新增、刪除、修改、瀏灠 資料表清空與刪除
第十五章 WWW網頁的製作 計算機概論編輯小組.
模式与实践:Windows Mobile 5.0应用程序架构
Chapter 11 使用者資料包通訊協定.
人事業務績效報告分享 報告人:南屯區大墩國小 徐湘雲.
24H MIS 管理與網路基礎架構 7×24×365 MIS全天候待命 0800免付費服務專線 專人專案服務處理 網路服務工程團隊,專案管理
Presentation transcript:

Cacti 第三天課程 Cacti 到底是什麼? (上午 ) Cacti 的資料流 - Cacti 資料的取得 : Data input methods (Lab 1 & 2 ) Data queries ( Lab 3) - Cacti 資料的儲存 - Cacti 資料的呈現 Cacti 的 plugin (下午) - Cacti Plugin Architecture ( Lab 4 ) - 如何寫一個 plugin Cacti  ['kæktai]是 cactus 的複數 1.知道怎麼安裝 怎麼操作 Cacti 了 , 如何去 implement ? 覺得Cacti 是什麼 ? 要怎麼去利用 Cacti ? 2.

好用、好操作的進階版 MRTG ? 整合RRD、SNMP、Mysql的軟體? 免費的網管軟體? 免費的反而有可能是最貴的 ? Cacti 到底是什麼? 好用、好操作的進階版 MRTG ? 整合RRD、SNMP、Mysql的軟體? 免費的網管軟體? 免費的反而有可能是最貴的 ? Cacti  ['kæktai]是 cactus 的複數 MRTG = Multi Router Traffic Grapher , MRTG 須要用 SNMP 才能運作 , shell script 呢 ? Cacti 會安裝 知道怎麼操作後 , 怎麼去運用它 !!

Cacti 是 它是一個具有收集資料、處理資料、儲存資料,且 具有繪圖能力的平台 強大的polling 能力(可以執行自訂的程式碼) 稍作客制化後可主動 push 資料( Agent) 可監控任何型態的資料,不限定網路設備 ex: 監控 mail 有沒有延遲 , 監控VM ,流量分析 只要收得到資料,它就可以繪圖 Plugin 提供運用的深度 Cacti 資料來源 有 : polling request , 對方主動送過來的 ( syslog , flow … ) , 程式碼 : 不限定語言( C , Java , perl , php , SQL , WQL … ) , 更增加polling 的廣度 對不喜歡拘泥於商用軟體的人 , 是最大的利器 ** Agent 角色的 Cacti 送資料給 Server 角色的 Cacti , 例如 : 利用 remote Cacti thold 當 agent , 當觸發 threshold 時 , 將資料push 到 Cacti Server ** APE (Ajax Push Engine ) , Reverse Ajax or Comet , 2. Mail 延遲 : 收到時間 與 送的時間 , 相差超過 180 sec 就認定 service 有問題 利用 Exchange Web Service 來實作 ( PHP – SOAP , SOAP client ) 3. 監控 VM : vsphere SDK 來實作 ( Vmware Vshpere SDK for perl or Java , or C# ) Host 的 resource ex: Data Storage , CPU , memory , Guest resource ex : CPU , memory ,disk 吃多少的 host 資源 百分比 4.流量分析 : 下載 前 20 大排名 , 異常 flow 數排名 (病毒發作樣態 之一 ) 5.眾多的 plugin 將 收集到的資料 , 作更進一步的分析與運用 , 產生更為有效益資訊

Cacti的資料流

資料的取得 最源頭是由 crontab 的 poller.php所發動的 Poller.php 到mysql 裡將 poller_cache裡的 polling command 逐條執行 Poller cache 是由 Device 裡的定義產生的 Device 一定要有 IP 嗎? 可以是Mail inbox嗎? Poller.php 可設定多個 thread 增快polling速度 Console->Settings->Poller

資料的取得 SNMP Query SNMP OID : 單一的 OID 值,取得單一的值 SNMP Index : 取得SNMP的 Script Query : 用寫好的Shell Script透過rsh或 ssh方式,將監控設備的資料取回 。 - Perl 、Java 、WMI PHP 的 Extension : SOAP Script : 這邊指的是 , 只要能在 command line 下的指令集合 , 所以就不限是一般的unix – like 的shell script 可以是 php , java , sql ,wql (wmi query language) , SOAP …. Script 又可分兩種 : local script and remote script

資料的取得 眾多的採集資料方式,須遵照Cacti的兩種資料導 入方法。(Cacti 官網說明) Data Input Methods : allow Cacti to retrieve data to insert into data sources and ultimately put on a graph. There are different ways for Cacti to retrieve data, the most popular being through an external script or from SNMP Data Query : Data queries are not a replacement for data input methods in Cacti. Instead they provide an easy way to query, or list data based upon an index, making the data easier to graph Index 概念 例如 : snmpwalk 一次取回網路的設備的多個interface 資料 ( 例如 : verbose query ) 作業系統的 processes , ps –ef , windows 的 工作管理員看到的 processes 處理 index 概念的資料 要注意 : 1. process or service 的 auto restart (有的程式掉下來 會自己再重新啟動 , 這時index 就會跑掉 ) 2. replace hard disk 更換硬碟 , 造成 snmp index 跑掉 , 要做 reload ( Cacti 的綠色圓圈圈) 3. 適合 index 會固定對應的資料 , 否則建議改用 process name 來做 index  process name 不會變 舉 hard disk 例子  df 用 mount point 作 index

資料取得方式 Wirte a script Create a Data Input Method Data Input Methods : Wirte a script Create a Data Input Method Create or choose a Data Template Create or choose a Graph Template Data Query Wirte a XML file

資料取得方式- Data Input Methods 資料是不具index概念的,即1 對 1的結構 一次可抓取一到多個資料,回傳多筆須照格式 var1:value1 var2:value2 ….varN:valueN 擴展性問題 : 日後若要再多抓一個欄位,須整個 Data Source 重建 若是遠端抓取資料,可減少網路往返的 traffic 1. 1 對 1 的方式 : 類似 key:value , 一個 key 對應一個 值 Data template 的 data source item 與 script return 個數回傳值 > 1時的對應 問題 , 靠 Data template 中的 Data source item 裡的Output Field 做變數對應

資料取得方式- Data Queries 資料是具index概念的,即1 對 多的結構 一次只抓取一個資料,由於資料有次序的特性, 所以poller 在Polling時,是將index做為參數帶入 Shell script,因此Shell script 一次只會回傳一個 index對應取得的值。 擴展性問題 : 日後若Device多了一個介面或 mount point,無須整個Data Source 重建 若是遠端抓取資料,會增加網路往返的 traffic Polling 次數增加 會有 Performace Issue 1 對 多 的結構 :一台有多個實體或虛擬介面的網路設備。 雖然每個 port 的ifstatus 的資料型態都是一樣的, 但可以利用介面所對應的index次序加以區別。使得我們在取得這些資料後, 可以由index所對應的位置,得知是那一個介面的狀態。 本機 及 遠端設備的 performace 問題 , 本機 啟動多次的 polling , 遠端則須應付 多次的 request 可一次將所有資料取回 Cacti( memory cache ) , 在 Local 再行做 request ( I/O 在本機 )

資料的取得 Data Input Methods Data Queries Return Data 1 ~ 多筆 1 筆 Index 無 有 1 ~ 多筆 1 筆 Index 無 有 Complexity 簡單 複雜 Extesibility 固定 可伸展 Implementation 較簡單 較複雜 需要Reindex 不用 視需要 Reindex :當資料對應的index 與最初設定不一樣時 ,例如:router 的 module 更換或移動位置

資料的儲存 經由資料取得的資料,須要放在資料庫;讓資料處 理的工具作進一步處理 Cacti 會先將資料放在 mysql -poller_output table 中 有註冊與poller.php hook 的Plugins會先到 poller_output 抓資料做處理 最後會寫到 RRD 中

資料的呈現 Cacti 依據 Device 中所套用的 Graph template中所定的條件,由rrdtool 將圖繪 出來 RRDTool Command: /usr/bin/rrdtool graph - \ --imgformat=PNG \ --start=-86400 \ --end=-300 \ --title='Localhost - Load Average' \ --rigid \ --base=1000 \ --height=120 \ --width=500 \ --alt-autoscale-max \ --lower-limit=0 \ --units-exponent='0' \ --vertical-label='processes in the run queue' \ --slope-mode \ --font TITLE:12: \ --font AXIS:8: \ --font LEGEND:10: \ --font UNIT:8: \ DEF:a="/var/www/cacti/rra/localhost_load_1min_5.rrd":load_1min:AVERAGE \ DEF:b="/var/www/cacti/rra/localhost_load_1min_5.rrd":load_5min:AVERAGE \ DEF:c="/var/www/cacti/rra/localhost_load_1min_5.rrd":load_15min:AVERAGE \

資料的取得 – 實作 以Data Input Methods 方式,寫一個隨機 產生1個數值的 bash script ,交由Cacti儲 存到 rrd 中,最後由 rrdtool 根據 graph template 出圖 ( Lab 1 ) 同上,但一次產生兩個數值 ( Lab 2 )

資料的取得 -實作 2 以Data queries 方式 ,監控本機的 service ( Lab 4 ) 需用到基本的 XML 語法

Cacti 的 plugin 剛安裝好的 Cacti 是沒有 Plugin 架構的 如果要安裝額外的 Plugin 需要安裝 PA 例如: cacti_autoinstall_v0.40c.sh Plugin 是為了擴展 Cacti 的功能 - 例如 : weathermap , 利用收集到的data source 做一個 total view 的展現 Plugin 彌補Cacti 所沒有的功能 - 例如 : Syslog , Threshold …

Cacti Plugin Architecture 要裝 Plugin 之前,須先確定有安裝 Plugin Architecture 什麼是 Plugin Architecture ?有什麼用處? 沒有 Plugin Architecture 可以嗎(陽春版)? PA 是一種選擇性的延伸檔案集,可以擴展Cacti的 基本功能;並且能夠呼叫額外的功能及程式(也就是 plugins) 所以一個 plugin 必須符合 PA 的要求;如此可以 不必動到 Cacti 的核心程式

確認PA 的版本 由 Console -> Plugin Management 由 putty login 到 Cacti 檢查是否有 /var/www/cacti/plugins 目錄

PA 的用處 可以安裝別人寫的 plugin 是 Cacti 的 API 可以開發自己的Plugin

Cacti Plugin 檔案架構 一個 plugin 的檔案架構如下: myplugin.php (主程式) My_plugin/ docs/ CHANGELOG images/ mylogo.png (tab .jpg檔) html/ LICENSE README index.php setup.php (plugin 的安裝檔) myplugin.php (主程式)

Cacti Plugin 檔案架構 index.php 內容 : <?php header("Location:../index.php"); ?> 將 plugin的首頁header 交由上一層處理, 上一層即是 PA 架構的index.php PA強制所有plugin 都導回 Cacti的首頁處理

Cacti Plugin 檔案架構 setup.php 必要的function 有 plugin_xxx_version() : 顯示版本、作者 xxx_config_arrays() : 註冊 realm ID xxx_draw_navigation_text() : 設定navigation xxx_show_tab() : 設定 tab .gif file plugin_xxx_install() : 安裝後要啟動的功能 plugin_xxx_uninstall() : 解除安裝時的動作

Plugin Setup.php function說明 plugin_xxx_version() { return array( ‘name’ => ‘myPlugin’, //plugin名稱 ‘version’ => ‘0.1’, //版本 'longname' => 'My first plugin', ‘author’ => ‘Zest Yang’, //作者 'homepage' => 'http://www.yuanta.com.tw', 'email' => 'zestyang@yuanta.com', 'url' => 'http://www.yuanta.com.tw' ); }

Plugin Setup.php function說明 xxx_config_arrays(){ global $user_auth_realm_filenames,$user_auth_realms,$menu; $realm_id=888; //註冊myPlugin realm id 為888 $user_auth_realms[$realm_id]='My Plugin Test'; $user_auth_realm_filenames['myPlugin.php'] = $realm_id; // $user_auth_realm_filenames[‘mySetting.php'] = $realm_id+1; $menu[‘My Plugins']['plugins/myPlugin/mySetting.php']=‘My Setting'; } 可查詢mysql 中的 user_auth_realm table 找出目 前登記的realm id $menu 是global 變數 : global_arrays.php Menu分為 menu header & menu item

Plugin Setup.php function說明 xxx_draw_navigation_text(){ //左邊 Menu的 navigation $nav["mySetting.php:"] = array("title" => "My Plugin Settings", "mapping" => "index.php:", "url" => "mySetting.php", "level" => "1"); //上面 tab 的 navigation $nav["myPlugin.php:"] = array("title" => "My Plugin", "mapping" => "index.php:", "url" => "myPlugin.php", "level" => "1"); return $nav }

Plugin Setup.php function說明 xxx_show_tab(){ global $config; if (api_user_realm_auth('myPlugin.php')) { if (substr_count($_SERVER["REQUEST_URI"], "myPlugin.php")) { print '<a href="' . $config['url_path'] . 'plugins/myPlugin/myPlugin.php"><img src="' . $config['url_path'] . 'plugins/myPlugin/images/tab_myPlugin_down.gif" alt="myPlugin" align="absmiddle" border="0"></a>'; }else{ print '<a href="' . $config['url_path'] . 'plugins/myPlugin/myPlugin.php"><img src="' . $config['url_path'] . 'plugins/myPlugin/images/tab_myPlugin.gif" alt="myPlugin" align="absmiddle" border="0"></a>'; }

Plugin Setup.php function說明 plugin_xxx_install(){ api_plugin_register_hook('myPlugin', 'top_header_tabs', 'myPlugin_show_tab', "setup.php"); api_plugin_register_hook('myPlugin', 'top_graph_header_tabs', 'myPlugin_show_tab', 'setup.php'); api_plugin_register_hook('myPlugin', 'draw_navigation_text', 'myPlugin_draw_navigation_text', 'setup.php'); api_plugin_register_hook('myPlugin', 'config_arrays', 'myPlugin_config_arrays','setup.php'); } 設定此plugin 會被安裝的功能

Plugin Setup.php function說明 plugin_xxx_uninstall(){ //設定 Cacti 在uninstall 時,順便也要移除的動作 //例如 : 若此 plugin 有 在 mysql Data Base create table // 就可寫在這裡順便做移除 }

Plugin myPlugin.php 說明 <?php chdir('../../'); include_once(‘./include/auth.php’); //檢查該plugin是否有註冊 include_once('./plugins/myPlugin/general_header.php'); //顯示下面這一段 print " Here is your stage !! Have a go hero !!"; ?>

Cacti Plugin 實作 - Lab 4 此實作會做出自訂的Plugin 完成plugin 後,可由 Console -> Configuration ->Plugin Management 執行安裝 plugin 動作