Cacti(php脚本)

实现监控的方式:

SNMP

命令、脚本(remote script)

强大的绘图引擎

将其他监控软件收集的数据通过图形的方式展示

时间序列数据的展示工具

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:                                               [确定]

正在启动 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

# vim /etc/snmp/snmpd.conf

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

# /etc/init.d/httpd restart

再此执行此脚本,无此错误

cacti插件

cacti插件体系能够让程序员在不改变cacti核心代码的情况下为cacti开发附加功能,并且能够在不影响cacti运行的前提下为其添加安全补丁,而且也能够让终端用户为cacti添加其需要但cacti核心缺失的功能

插件特性:

增强的用户接口

访问cacti数据库

管理RRD文件

增进的缓存和增强的性能

附加的新功能,如统计报告、日志和阈值监控等

常见的插件:

MAC Track插件------用于记录设备接口相关的MAC、IP等信息

Network WeatherMap ---- 用于在cacti中创建网络设备间连接关系图,并能在图像中简单展现其性能指标

Thold------ 阈值监控功能,并可实现通知功能

时间: 2024-08-01 21:20:32

Cacti(php脚本)的相关文章

Cacti 自定义脚本监控

************************************************* 脚本内容: [[email protected] scripts]# cat get_snmp_network_data.sh #!/bin/bash # ======================================================================================== # goldengate health plugin for Na

Cacti自定义脚本,监测Docker信息(Script/Command方式)

一 环境背景 监控主机A:192.168.24.231:被监控主机B:192.168.24.233 A/B主机,通过公私钥建立ssh连接 [操作B主机时不需要输入密码,详见笔记:http://app.yinxiang.com/l/ACQDOta4_v1IEr_WI6aufZVFEux9o1ou6ts/] 二 监控目标及测试结果 主机 A监测主机B上以下信息: 正在运行的容器数量 (黄) 已经定义的容器数量 (绿) 崩溃的容器数量        (红) 三 整体步骤 B主机采集docker容器信息

cacti自定义脚本和图形模板

cacti自带的模板,很多时候都无法满足我们的监控需求,这时候就要求我们会自定义监控,来满足实际的监控需求,以下只是一个简单的案例,大家可学习其中的过程即可. 写一个脚本,用来实现监控无线AP的客户端连接数量. 脚本的位置放在<path_cacti>/scripts/collect_ap1600_clients.sh 注意,脚本的输出格式:clients:xxxx 添加数据输入方法 3.添加数据模板 4.添加图形模板 5.主机添加该数据源 6.主机添加图形模板 7.效果展示

服务器监控cacti

第九章:服务器监控系统cacti 防伪码:海阔天空 前言:在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现.今天就以Cacti套件为例,介绍服务器集中监测体系的构建和使用. 今天所讲的cacti服务器监控系统与windows操作系统中的"性能监视器"属于同一类,都是为了监控cpu占用,内存使用,运

cacti监控工具之自定数据收集方法

目录 1.引语 2.使用自定义数据收集方法完成设备监控 2.1.创建数据收集脚本 2.2.定义Data Input Methods 2.3.定义Data Templates 2.4.定义Data Sources 2.5.定义Graph Templates 2.6.设置Graph Management 3.总结 1.引语 在上一博文中大致介绍了cacti的数据收集方法和模板的使用,还以一个例子介绍了怎样导入一个主机模板,并让此模板应用到一个指定的Devices上.此次博文在上一次博文的基础上介绍以

CentOS上配置Cacti监控MySQL

防伪码:即使没有辉煌的未来.如果能有无悔的往昔.   第九章 CentOS上配置Cacti监控MySQL 前言:在企业网络运维过程中,管理员必须随时关注服务器和网络的运行状况.以便及时发现问题,尽可能减少故障的发生.当网络中的设备.服务器等数量较多时,为了更加方便.快捷的获得各种监控信息,通常会借助于一些集中检测软件.本章将以著名的Cacti套件为例,介绍服务器集中监控体系的构建和使用. 一.Cacti官方简介: 1.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且

Cacti详解

实现监控的方式: SNMP 命令.脚本(remote script) Cacti(php脚本) 强大的绘图引擎 将其他监控软件收集的数据通过图形的方式展示 时间序列数据的展示工具 Nagios 状态监控工具 监控的对象: Fault Management故障管理 Configuration Management配置管理 Accounting Management统计管理 Performance Management性能管理 Security Management安全管理 SNMP--------

Cacti的基本安装及配置

一.cacti介绍: Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti通过 snmp协议来获取数据,使用 RRDtool绘画图形,从而让用户完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,界面十分友好.Cacti 的发展是让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟

服务器监控系统cacti

前言:在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现.今天就以Cacti套件为例,介绍服务器集中监测体系的构建和使用. 今天所讲的cacti服务器监控系统与windows操作系统中的"性能监视器"属于同一类,都是为了监控cpu占用,内存使用,运行进程数,磁盘空间,网卡流量等各种数据.但不同的是,