常用的监控协议有哪些
一、监控系统
1、监控系统概念
监控系统应用在监控硬件、软件和业务上,并及时获取相应的数据并分析保存数据,发送报警通知管理者,并自动做出相应的处理,通过接口展示以利于运维人员分析,保证业务的正常运行。
2、运维监控系统具备以下几个模块:
采样:从被监控主机上周期性地获取某个关注指标相关的数据,常见获取数据通道有:ssh/telnet、agent、IPMI、SNMP、JMX等等
存储:用于存储被监控主机采样的数据和分析的数据,利于调用和分析,常用的有mysql、mariadb等数据库
数据:分析被监控主机采样数据,计算出历史数据、趋势数据、速率、最大最小值等等。
展示:将被监控主机的数据通过图表方式展现出来,利于观察比对,常见的展示接口有:webGUI、GUI、APP等等。
报警:当被监控主机发生异常时,系统用于通知相关人员的报警媒介。常用的报警媒介有:邮件、短信、微信或通过脚本实施。
3、被监控对象: 主机、服务器、交换机、路由器、ups等
nms:网络监控主机NMS是移动通信网中的网络管理系统,它的管理对象可以包括网络中所有的实体,如:网络设备、应用程序、服务器系统、路由器、交换机、HUB、辅助设备(如UPS电源)等,给网络系统管理员提供一个全系统的网络视图。
4、监控系统采取的数据通道
ssh/telnet:安全传输协议
agent方式:代理方式,由监控主机(master)和安装代理进程的被监控主机(agent)组成
ipmi:因特尔智慧平台,硬件监控接口
snmp:简单网络管理协议,版本有 v1,v2(community ,pulic)v3
JMX:java管理扩展
jvm:监控java虚拟机
5、储存系统
历史数据 :每次采样的结果。保存时长较短
趋势数据: 聚合数据,保存时长较长周期内的数据
存储系统:
关系型数据库: mysql pgsql oracle
rrd: roudrobin database
nosql:redis、mongo、时间序列数据库
二、常见的开源监控项目
1、cacti
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
2、nagios
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
cacti和nagios这两个功能上有所欠缺
3、ganglia
Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
4、zebbix
功能齐备且好用
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等多种平台上。
三、SNMP协议
1、SNMP概念
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
2、SNMP版本
SNMP主要有三个版本,SNMPv1,SNMPv2,SNMPv3。
SNMPv1是最初始的版本,实现简单,存在较多安全缺陷。
SNMPv2本质上与SNMPv1相同,只是在前一个版本功能上做了加强,并增加了getbulk操作,还增加了一些更加直观的错误响应
SNMPv3解决了两个版本在安全上的问题,采用了USM和VACM技术,增加了更强的认证机制。
目前使用最多的依然是SNMPv1版。有些厂家的IT设备中,还不支持SNMPv3
3、 术语
缩略语 -------------英文全称-------------- 中文解释
MIB ----Management Information Base ------管理信息库
NMS ------Network Managerment Station -------网络管理站
OID ------Object Identifier -------对象标识符
SNMP ------Simple Network Management Protocol-------- 简单网络管理协议
SMI -----Structure of Management Information ------管理信息机构
USM -----User-based Security Model -----基于用户的安全模型
VACM ------View-based Access Control Model ------基于视图的访问控制模型
PDU ------Protocol data unit -------协议数据单元
4、SNMP管理的网络主要由三部分组成:
被管理的设备
SNMP代理
网络管理系统(NMS)
网络结构
网络中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
5、MIB管理信息库
IETF规定的管理信息库MIB(由中定义了可访问的网络设备及其属性,由对象识别符(OID:Object Identifier)唯一指定。MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点来访问网络中的设备。下图给出了NMS系统中SNMP可访问网络设备的对象识别树(OID:Object Identifier)结构。
网络设备的对象识别树
对一个线路状态进行查询的OID设置例子
Python开发的jumpserver跳板机
jumpserver跳板机是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。
企业主要用于解决:可视化安全管理
特点:完全开源,GPL授权
Python编写,Django开发框架,容易再次开发
实现了跳板机基本功能:认证、授权、审计。集成了Ansible、批量命令等。功能强大。
通俗点就是起到监控谁在服务器上做了什么操作等。录像回放、命令搜索、实时监控、批量上传下载等。
第三:Python开发的Magedu分布式监控系统
以自动化运维视角为出发点,自动化功能、监控告警、性能调优,结合saltstack实现自动化配置管理等内容进行了全方位的深入剖析。
企业主要用于解决:自动化监控常用系统服务、应用、网络设备等。分布式可监控更多服务器,分区域监控再汇总。Zabbix监控结合Python自定义监控脚本。
监控系统需求讨论:
监控常用系统服务、应用、网络设备等?一台主机上可监控多个不同服务、不同服务的监控间隔可不同?同一个服务在不同主机上的监控间隔、报警阈值可不同?告警级别?数据可视化,如何做出简洁美观的用户界面?如何实现单机支持5000+机器监控需求?采取何种通信方式?主动、被动?
第四:Python开发的Magedu的CMDB
cmdb的开发需要包含三部分功能:采集硬件数据、API、页面管理。
企业主要用于解决:项目功能,采集硬件数据、Api、页面管理。统计资产,例如服务器存放位置,服务器上的账号等等。
执行服务的过程如下:服务器的客户端采集硬件数据,然后将硬件信息发送到API,API负责将获取到的数据保存到数据库中,后台管理程序负责对服务器信息的配置和展示。
第五:Python开发的任务调度系统
Python任务调度系统的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。
企业主要用于解决:通俗的理解,批量管理crontab定时任务。原理用户通过web页面设置任务,传输到任务调度系统服务器上的客户端,客户端收集数据反馈给服务器端,服务器端根据任务具体内容调度后端的集群服务器做定时任务。
一个服务进程可以作为调度者,将任务分布到其他多个机器的多个进程中,依靠网络通信。想到这,就在想是不是可以使用此模块来实现一个简单的作业调度系统。
第六:Python运维流程系统
使用python语言编写的调度和监控工作流的平台内部用来创建、监控和调整数据管道。任何工作流都可以在这个使用Python来编写的平台上运行。
企业主要用于解决:通俗点说就是规范运维的操作,加入审批,一步一步操作的概念。
是一种允许工作流开发人员轻松创建、维护和周期性地调度运行工作流(即有向无环图或成为DAGs)的工具。这些工作流包括了如数据存储、增长分析、Email发送、A/B测试等等这些跨越多部门的用例。
这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,并且提供了钩子使得系统拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于Web的用户界面让您可以可视化管道的依赖关系、监控进度、触发任务等。
来个小总结
如果你已经阅读了前面的如何监控 NGINX,你应该知道从你网络环境的几个指标中可以获取多少信息。而且你也看到了从 NGINX 特定的基础中收集指标是多么容易的。但要实现全面,持续的监控 NGINX,你需要一个强大的监控系统来存储并将指标可视化,当异常发生时能提醒你。在这篇文章中,我们将向你展示如何使用 Datadog 安装 NGINX 监控,以便你可以在定制的仪表盘中查看这些指标:
Datadog 允许你以单个主机、服务、流程和度量来构建图形和警告,或者使用它们的几乎任何组合构建。例如,你可以监控你的所有主机,或者某个特定可用区域的所有NGINX主机,或者您可以监视具有特定标签的所有主机的一个关键指标。本文将告诉您如何:
在 Datadog 仪表盘上监控 NGINX 指标,就像监控其他系统一样
当一个关键指标急剧变化时设置自动警报来通知你
配置 NGINX
为了收集 NGINX 指标,首先需要确保 NGINX 已启用 status 模块和一个 报告 status 指标的 URL。一步步的配置开源 NGINX 和NGINX Plus 请参见之前的相关文章。
整合 Datadog 和 NGINX
安装 Datadog 代理
Datadog 代理是一个开源软件,它能收集和报告你主机的指标,这样就可以使用 Datadog 查看和监控他们。安装这个代理通常仅需要一个命令
只要你的代理启动并运行着,你会看到你主机的指标报告在你 Datadog 账号下。
配置 Agent
接下来,你需要为代理创建一个简单的 NGINX 配置文件。在你系统中代理的配置目录应该在这儿找到。
在目录里面的 confd/nginxyamlexample 中,你会发现一个简单的配置文件,你可以编辑并提供 status URL 和可选的标签为每个NGINX 实例:
init_config:
instances:
- nginx_status_url: localhost/nginx_status/
tags:
- instance:foo
当你提供了 status URL 和任意 tag,将配置文件保存为 confd/nginxyaml。
重启代理
你必须重新启动代理程序来加载新的配置文件。重新启动命令在这里,根据平台的不同而不同。
检查配置文件
要检查 Datadog 和 NGINX 是否正确整合,运行 Datadog 的 info 命令。每个平台使用的命令看这儿。
如果配置是正确的,你会看到这样的输出:
Checks
======
[]
nginx
-----
- instance #0 [OK]
- Collected 8 metrics & 0 events
安装整合
最后,在你的 Datadog 帐户打开“Nginx 整合”。这非常简单,你只要在 NGINX 整合设置中点击“Install Integration”按钮。
loadrunner和jmeter的区别
1、Jmeter的架构跟LoadRunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把它们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程。
2、分布式中间代理功能在Jmeter中也有,这个分布式分理是指可设置多台代理在不同PC中,通过远程进行控制,即通过使用多台机器运行所谓的Agent来分担LoadGenerator自身的压力,并借此来获取更大的并发用户数LoadRunner也有些功能。
3、Jmeter安装简单,只需要解压Jmeter文件包到C盘上就可以了,其实是没有安装.要是想执行调试测试脚本,前提是:装上jdk和netbean插件而LoadRunner安装包有1G多,
在一台P30,1G内存的PC上安装要一个多小时要是装过较旧的盗版还不能再装新版,解决办法倒是有,但麻烦且花时间。
4、Jmeter没有IP欺骗功能,IP欺骗是指在一PC台上多个IP地址来分配给并发用户.这个功能对于模拟较真实的客户环境来说,是较有用LoadRunner有此功能。
5、Jmeter也提供了一个利用本地ProxyServer(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用,测试对象的个别参数却要手工增加上去,还得附带装个IE代理,如GoogleToolbarDownloader这些插件来捕捉参数但是有一个工具bodboy,利用这个工具可以录制操作,然后选择将脚本保存为Jmeter脚本,然后利用Jmeter可以打开并修改脚本。
6、Jmeter的报表较少,对于要分析测试性能不足以作为依据如要知道数据库服务器或应用程序服务的CPU,memory等参数,得在相关服务器上另外写脚本记录服务器的性能。
7Jmeter做性能测试,主要是通过增加线程组的数目,或者是设置循环次数来增加并发用户,而LoadRunner可以通过在场景中选择要设置什么样的场景,然后选择虚拟用户数。
8、Jmeter可以通过逻辑控制器实现复杂的测试行为,相当于LoadRunner中的测试场景。
9、Jmeter可以做web程序的功能测试,利用Jmeter中的样本,可以做灰盒测试,LoadRunner主要用作性能测试。
10、Jmeter是开源的轻量级别 ,但是使用的人较少,网络上相关资料不全面,需要自己去揣摩,而LoadRunner是商业软件,如果是正版,有技术支持,同时,网络上的资料相当多。
11、Jmeter的脚本修改,主要是对Jmeter中各个部件的熟悉程度,已经相关的一些协议的掌握情况,而不依赖于编程,而LoadRunner除了复杂的场景设置外,还需要掌握函数,修改脚本。
0条评论