天天看點

Cacti(php腳本)

實作監控的方式:

SNMP

指令、腳本(remote script)

Cacti(php腳本)

強大的繪圖引擎

将其他監控軟體收集的資料通過圖形的方式展示

時間序列資料的展示工具

Nagios

狀态監控工具

監控的對象:

Fault Management故障管理

Configuration Management配置管理

Accounting Management統計管理

Performance Management性能管理

Security Management安全管理

SNMP----------Simple Network Management Protocol

161/UDP

協定版本:

SNMP v1

安全機制通過community實作

read-only

read-write

trap:被監控端向監控端主動發送狀态資料的機制

SNMP v2

通過community實作安全機制

SNMP v3

SNMP内置Community

SNMP協定安裝啟動後,會有兩個内置的community

public

private

MIB--------Management Information Base管理資訊庫

用于儲存每一個可被監控對象的OID(Object ID)與名稱的對應關系

标準MIB OID:

system     1.3.6.1.2.1.1 

interfaces 1.3.6.1.2.1.2

at   1.3.6.1.2.1.3

ip   1.3.6.1.2.1.4

icmp   1.3.6.1.2.1.5

tcp   1.3.6.1.2.1.6

udp   1.3.6.1.2.1.7

egp   1.3.6.1.2.1.8

transmission 1.3.6.1.2.1.10

snmp 1.3.6.1.2.1.11

host 1.3.6.1.2.1.25

hrSystem

hrDevice

hrStorage

hrSWRun

hrSWRunPerf

hrSWInstalled

SNMP操作封包:

get 擷取某一個特定OID的狀态資訊

getnext 擷取指定節點的所有子節點的資訊

getbulk 能擷取更大範圍的子節點的資訊

set 向被監控節點發起控制指令

Linux中SNMP軟體包

net-snmp(Agent端,被監控端)

net-snmp-utils(NMS,監控端)

/usr/share/snmp/mibs:

存放MIB庫

# yum install -y net-snmp net-snmp-utils

# service snmpd start

正在啟動 snmpd:                                           [确定]

# chkconfig snmpd on

# netstat -unlp | grep snmpd

udp        0      0 0.0.0.0:161                 0.0.0.0:*                               26907/snmpd       

擷取本機狀态資訊

# snmpwalk -v 2c -c public localhost

擷取指定對象的資訊

# snmpwalk -v 2c -c public localhost SNMPv2-MIB::sysName.0

SNMPv2-MIB::sysName.0 = STRING: node1.bj.com

擷取TCP相關的狀态資訊

1、檢視tcp MIB庫中的OID

# cat /usr/share/snmp/mibs/TCP-MIB.txt 

2、編輯snmp主配置檔案,添加view

# vim /etc/snmp/snmpd.conf 

view    systemview    included   .1.3.6.1.2.1.6

# /etc/init.d/snmpd restart

停止 snmpd:                                               [确定]

# snmpwalk -v 2c -c public localhost tcp

TCP-MIB::tcpRtoAlgorithm.0 = INTEGER: other(1)

TCP-MIB::tcpRtoMin.0 = INTEGER: 200 milliseconds

TCP-MIB::tcpRtoMax.0 = INTEGER: 120000 milliseconds

TCP-MIB::tcpMaxConn.0 = INTEGER: -1

TCP-MIB::tcpActiveOpens.0 = Counter32: 1

TCP-MIB::tcpPassiveOpens.0 = Counter32: 3

TCP-MIB::tcpAttemptFails.0 = Counter32: 0

TCP-MIB::tcpEstabResets.0 = Counter32: 0

TCP-MIB::tcpCurrEstab.0 = Gauge32: 1

TCP-MIB::tcpInSegs.0 = Counter32: 2304

定義新的community

com2sec notConfigUser  127.0.0.1 mypublic

com2sec notConfigUser  10.1.1.0/24 mypublic

# /etc/init.d/snmpd restart 

擷取指定主機的tcp各狀态連接配接的資訊

# snmpnetstat -v 2c -c mypublic -Can -Cp tcp 10.1.1.1

Active Internet (tcp) Connections (including servers)

Proto Local Address          Remote Address         (state)

tcp   *.22                   *.*                   LISTEN

tcp   *.111                  *.*                   LISTEN

tcp   *.60335                *.*                   LISTEN

tcp   10.1.1.1.22            10.1.1.100.51063      ESTABLISHED

tcp   127.0.0.1.25           *.*                   LISTEN

tcp   127.0.0.1.199          *.*                   LISTEN

tcp   127.0.0.1.631          *.*                   LISTEN

tcp   127.0.0.1.6010         *.*                   LISTEN

RRDTool------Round Robin Database Tool 

将擷取的狀态資訊資料根據一定的機制儲存到rrd資料庫檔案中(以.rrd結尾),對這些資料進行處理後,繪圖顯示

PDP:Primary Data Point 主資料節點

RR資料庫中用于儲存擷取的狀态資訊,使用者不可見

RRA:Round Robin Archive 

每n組PDP進行歸檔的操作

CDP: Consolidation Data Point  聚合節點

每n個PDP一組,對每組資料進行聚合運算(平均值、最大/小值等),運算的結果稱為CDP

解析度:Resolution

時間跨度 

rrd檔案:

一個rrd檔案中可以儲存多個資料DS,可對每個DS進行聚合運算

DS:Data Source

建立空白rrd資料庫檔案

rrdtool create file_name [--start | -b start_time ] [--step | -s step ] [--no-overwrite] [DS:ds_name:DST:dst_arguments] [RRA:CF:cf_arguments]

--start | -b start_time(default : now---10s)

--step | -s step (default 300 seconds)

DS:ds_name:DST:dst_arguments

ds_name:

最長19個字元,[a-zA-Z0-9_]

DST:資料源類型

GAUGE:儲存原始資料(PDP)

COUNT:儲存相對上一個資料的值,必須是遞增的,不允許接受負值

DERIVE:儲存相對上一個資料的值,可增可減

ABSOLUTE:儲存相對于初始值的值 

例:

初始值為1,分别産生2 3 6 9四個數字

GAUGE: 2 3 6 9 

COUNT: 1 1 3 3

DERIVE: 1 1 3 3 

ABSOLUTE: 1 2 5 8 

dst_arguments

heartbeat

例如指定每5秒鐘接收資料,heartbeat用于指定5秒過後多長時間仍然接收 ;超過時間标記為UNKNOWN

min:定義每個時間槽上可接收的數值的最小值

max:定義每個時間槽上可接收的數值的最大值

U:表示無論任何資料都接收 

RRA:CF:cf_arguments

RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rows

xff: 指定PDP中可以有多大比例的UNKNOWN

steps: 指定對幾個PDP進行聚合

rows: 儲存多少個CDP(聚合後的結果)

示例:

建立test.rrd檔案,每5秒産生随機數;分别儲存每5秒,50秒,500秒的平均值

# rrdtool create test.rrd --step 5 DS:testds:GAUGE:8:0:U RRA:AVERAGE:0.5:1:17280 RRA:AVERAGE:0.5:10:3456 RRA:AVERAGE:0.5:100:1210

向rrd資料庫檔案中提供資料

rrdtool { update | updatev } file_name [--template | -t ds_name[:ds_name] ] [--]N| timestamp:value[:value]

--template | -t ds_name[:ds_name]: 如果rrd檔案中有多個資料源,-t用于指定資料源的次序

示例:向test.rrd檔案中指定資料

# rrdtool update test.rrd N:$RANDOM

#!/bin/bash

#

while true;do

  rrdtool update /root/test.rrd N:$RANDOM

  sleep 5

done

繪圖 

# rrdtool graph a.png -s 1455603485 DEF:vartest=/root/test.rrd:testds:AVERAGE:step=5 LINE1:vartest#ff0000:"testline"

cacti

rrdtool create 

周期性執行能夠取得資料的指令,并将取回的資料儲存至rrd檔案中

利用rrdtool繪圖并顯示

php網頁程式

LAMP,LNMP

編譯安裝PHP需要啟用--enable-sockets

插件機制

thold:為cati提供報警功能

模闆機制:

圖形模闆

資料模闆

主機模闆

cacti安裝配置

1、解壓并重命名

# tar zxf cacti-0.8.8a.tar.gz -C /web/vhost/

# mv  /web/vhost/cacti-0.8.8a/ /web/vhost/cacti

# /etc/init.d/httpd restart

停止 httpd:                                               [确定]

正在啟動 httpd:                                           [确定]

2、為cacti準備資料庫

# mysql -e  'CREATE DATABASE cactidb'

# mysql -u root cactidb < /web/vhost/cacti/cacti.sql 

# mysql -e "GRANT ALL ON cactidb.* TO 'cactiuser'@'localhost' IDENTIFIED BY 'redhat'"

# mysql -e "FLUSH PRIVILEGES"

3、編輯cacti配置檔案,指定mysql名稱及通路路徑 

# vim /web/vhost/cacti/include/config.php 

$database_type = "mysql";

$database_default = "cactidb";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "redhat";

$database_port = "3306";

$database_ssl = false;

$url_path = "/";

4、建立cactiuser使用者,并把cacti目錄下的log及rra的所屬修改為cactiuser

# useradd cactiuser

# chown -R cactiuser.cactiuser /web/vhost/cacti/log /web/vhost/cacti/rra

在浏覽器中通路http://cacti.bj.com進入cacti安裝界面

進入cacti頁面的預設使用者名、密碼分别為admin 

cacti頁面工具:

1、資料收集方法

Collection Methods

資料查詢

事先定義好的xml格式的資料收集方法

資料輸入方法

指令或者腳本

腳本:

隻需要指定如何擷取資料,并且擷取到的資料經過處理後按照規定的格式輸出 

TAG:data TAG:data

input:30 output:40

由poller.php負責周期性執行擷取資料的腳本,對于大規模主機的監控,應使用spine替換poller

# echo '*/5 * * * * /usr/bin/php /web/vhost/cacti/poller.php &> /dev/null' > /var/spool/cron/cactiuser

手動執行此腳本,會發現有時區相關的報錯,按照報錯資訊将Php的時區修改一緻

# vim /etc/php.ini 

date.timezone = Asia/Chongqing

再此執行此腳本,無此錯誤

cacti插件

cacti插件體系能夠讓程式員在不改變cacti核心代碼的情況下為cacti開發附加功能,并且能夠在不影響cacti運作的前提下為其添加安全更新檔,而且也能夠讓終端使用者為cacti添加其需要但cacti核心缺失的功能

插件特性:

增強的使用者接口

通路cacti資料庫

管理RRD檔案

增進的緩存和增強的性能

附加的新功能,如統計報告、日志和門檻值監控等

常見的插件:

MAC Track插件------用于記錄裝置接口相關的MAC、IP等資訊

Network WeatherMap ---- 用于在cacti中建立網絡裝置間連接配接關系圖,并能在圖像中簡單展現其性能名額

Thold------ 門檻值監控功能,并可實作通知功能

上一篇: php小腳本
下一篇: PHP 查詢腳本

繼續閱讀