《Cacti实战》——3.1 检索流程

简介:

本节书摘来自华章计算机《Cacti实战》一书中的第3章,第3.1节,作者:刘钊,张跃著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 检索流程

Cacti系统的首要任务是对网络内的监控设备进行数据检索,即监控数据的获取过程。Cacti使用轮询器,也就是Poller程序来完成这个工作。还记得么?就是“同福客栈的大跑堂白展堂”。Poller程序通过操作系统自身的计划任务功能被定期触发执行。Windows平台的计划任务功能就是自身的维护计划程序,Linux平台的计划任务功能就是Cron程序,通过编写Crontab脚本来实现。
在IT数据中心的环境中有各种各样的设备,如服务器、网络设备,甚至家用电器等。不用担心,大部分设备都支持简单网络管理协议(Simple Network Management Protocol,SNMP)的标准,为了后续能够更好地调试和运维,先介绍SNMP的基本原理和架构。
SNMP由一组网络管理的标准组成,包含一个应用层协议(Application Layer Protocol,ALP)、数据库模型(database schema)和一组资料物件。该协议支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(Internet Engineering Task Force,IETF)定义的Internet协议簇的一部分。
Cacti进行数据检索的主要流程如图3-2所示。

image

还记得我们在主机上安装了SNMP的相关组件么?整个监控网络中SNMP的设备主要包含SNMP Server和SNMP Agent两个角色。
可以将SNMP Agent程序理解为一种客户端程序,它的主要作用就是将被监控设备上的数据采集回来,按照MIB库的规则存放。通常情况下,Linux的常用代理程序是Net-SNMP,Windows的程序通过添加/删除程序可以安装,而类似于Cisco路由器、EMC存储之类的设备是自带SNMP的。Agent程序把从设备读到的各种数据(如CPU的负载数据)以SMI(Structure of Management Information)规定的格式写到MIB库中。
这里解释一下MIB。MIB(Management Information Library)可以简单地理解为一张地图或者一组抽屉,它是一个结构化的描述树,如图3-3所示。
Agent程序从设备中抽取出来的数据如果没有MIB的匹配,就是一组毫无意义的数据,MIB会按照事先制定好的规则,把这些数据按照它们各自的去处分别“入库保存”。
举个例子:我们希望查看服务器收到了多少个ICMP的请求,通过上面的树状图一步一步向下寻找,那么变量1.3.6.1.2.5.1中就保存了ICMP请求的数量。

image

下面该轮到SNMP Server工作了,用户给Cacti系统发出请求,需要查看某一设备的工作状态,Cacti将请求解析,然后控制SNMP Server程序,让它去找指定的SNMP Agent的程序。
下面是服务器与客户端之间的一组对话。
“HP DL380服务器上的Agent你好!我是Cacti Server上运行的SNMP管理控制程序,我现在是通过poller程序在跟你讲话,我需要你这台机器上的CPU负载数据,你传递给我一下!”
“Hi!SNMP管理端你好!数据都在MIB库中,你可以直接获取到。还记得我们约定好的MIB变量规则吧?”
“Hi!当然不会忘记啦,这不是国际通用的标准么,自然记得,哦!对了,用户还希望MIB中的数据可以每5分钟更新一下,辛苦啦!”
“愿意效劳,我会每5分钟到CPU中取数据,Poller程序可以每5分钟触发你一下过来到MIB中读取。”
“Deal!”
通过这么一个流程,SNMP Server取到的数据通过Cacti的加工组织和RRDTool的精美包装,就可以呈现在用户面前了。

相关文章
|
16天前
|
SQL 存储 关系型数据库
轻松入门MySQL:简明教程解析数据存储与管理(1)
轻松入门MySQL:简明教程解析数据存储与管理(1)
|
2月前
|
缓存 NoSQL PHP
百度搜索:蓝易云【如何使用PHP进行数据库索引优化?】
通过以上方法,你可以使用PHP进行数据库索引优化,提高数据库查询性能和整体应用性能。同时,定期维护数据库和优化查询语句也是保持数据库高性能的关键。
42 11
|
8月前
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(一)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)
100 0
|
8月前
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
71 0
|
9月前
|
SQL 安全 关系型数据库
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
299 0
|
9月前
|
关系型数据库 MySQL PHP
PHP高级开发案例(1):使用MYSQL语句跨表查询无法导出全部记录的解决方案
PHP高级开发案例(1):使用MYSQL语句跨表查询无法导出全部记录的解决方案
58 0
|
缓存
jira学习案例90-用useQuery缓存列表
jira学习案例90-用useQuery缓存列表
76 0
jira学习案例90-用useQuery缓存列表
|
自然语言处理
【Elasticsearch 技术分享】—— ES 查询检索数据的过程
ES 使用过程中常用的就是查询以及检索,那查询和检索的过程,什么样的呢?
1264 0
|
存储 JSON 数据库
一步步拆解解决 Elasticsearch 检索模板问题
1、线上实战提问 Elasticsearch做模版查询的时候,在使用 terms 进行批量查询的时候放入数组在模版中进行查询失败,类似于模版传入数组该如何实现? 问题来源:死磕Elasticsearch知识星球
871 0
一步步拆解解决 Elasticsearch 检索模板问题
|
监控 关系型数据库 应用服务中间件