【无监控,不运维!这份监控建设总结太赞了!】

news2025/1/11 6:10:01

运维行业有句话:“无监控、不运维”,是的,一点也不夸张,监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。所以说监控是运维这个职业的根本。

尤其是在现在DevOps这么火的时候,用监控数据给自己撑腰,这显得更加必要,有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。

在开篇之前,让我们以全局的眼光,探讨一下运维监控工具如何选型以及构建运维监控平台的设计思路,如果你是刚刚入行运维这个职业,那么这个专栏非常适合你,如果你已经在运维职场深耕多年,那么也能帮助你开阔思路和眼界。

一、常见的运维监控工具

现在运维监控工具非常多,哪个好,哪个不好,哪个适合你,哪个不适合你,其实只有你了解了他们的特性后,才知道,所以从这里开始讲起。

1、Cacti

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。简单的说Cacti就是一个PHP程序。它通过使用SNMP协议获取远端网络设备和相关信息(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL工具绘图,通过PHP程序展现出来。我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图。

cacti是很老的一款监控工具了,其实说它是一款流量监控工具更合适,对流量监控比较精准,但缺点很多,出图不好看,不支持分布式,也没有告警功能,所以使用的人会越来越少。

2、Nagios

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

nagios主要的特征是监控告警,最强大的就是告警功能,可支持多种告警方式,但缺点是没有强大的数据收集机制,并且数据出图也很简陋,当监控的主机越来越多时,添加主机也非常麻烦,配置文件都是基于文本配置的,不支持web方式管理和配置,这样很容易出错,不宜维护。

3、Zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供强大的通知机制以让系统运维人员快速定位/解决存在的各种问题。

zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。

zabbix解决了cacti没有告警的不足,也解决了nagios不能通过web配置的缺点,同时还支持分布式部署,这使得它迅速流行起来,zabbix也成为目前中小企业监控最流行的运维监控平台。

当然,zabbix也有不足之处,它消耗的资源比较多,如果监控的主机非常多时,可能会出现监控超时、告警超时等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式等。

4、Ganglia

Ganglia是一款为HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的gmond守护进程来采集CPU 、内存、硬盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad守护进程下,使用rrdtool存储数据,最后将历史数据以曲线方式通过PHP页面呈现。

Ganglia监控系统有三部分组成,分别是gmond、gmetad、webfrontend。gmond安装在需要收集数据的客户端,gmetad是服务端,webfrontend是一个php的web ui界面,ganglia通过gmond收集数据,然后在webfrontend进行展示。

ganglia的主要特征是收集数据,并集中展示数据,这是ganglia的优势和特色,ganglia可以将所有数据汇总到一个界面集中展示,并且支持多种数据接口,可以很方面的扩展监控,同时,最为重要的是,ganglia收集数据非常轻量级,客户端的gmond程序基本不耗费系统资源,而这个特点刚好弥补了zabbix消耗性能的不足。

最后,ganglia在对大数据平台的监控更为智能,只需要一个配置文件,即可开通ganglia对hadoop、spark的监控,监控指标有近千个,完全满足了对大数据平台的监控需求。

5、Centreon

Centreon是一款功能强大的分布式IT监控系统,它通过第三方组件可以实现对网络、操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它;

其次,它的底层采用类似nagios的监控引擎作为监控软件,同时监控引擎通过ndoutil模块将监控到的数据定时写入数据库中,而Centreon实时从数据库读取该数据并通过Web界面展现监控数据;

最后,我们可以通过Centreon web一键管理和配置主机,或者说Centreon就是nagios的一个管理配置工具,通过Centreon提供的Web配置界面,可以轻松完成nagios需要手工配置主机和服务的不足。

centreon的强项是一键配置和管理,并支持分布式监控,nagios能够完成的功能,通过centreon都能实现,同时,centreon还可以和ganglia进行集成,centreon将ganglia收集到的数据进行整合,可以实现主机自动加入监控以及自动告警的功能。

6、Prometheus

Prometheus是一套开源的系统监控报警框架,它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。

7、Grafana

Grafana是一个开源的度量分析与可视化套件,通俗的说,Grafana就是一个图形可视化展示平台,它通过各种炫酷的界面效果展示我们的监控数据。

如果你觉得zabbix的出图界面不够好看,逼格不够高,就可以使用Grafana的可视化展示,同时,Grafana支持许多不同的数据源,Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB都可以完美支持。

8、对比图
在这里插入图片描述

二、统一运维监控平台设计思路

运维监控平台不是简单的下载一个开源工具,然后搭建起来就行了,它需要根据监控的环境和特点进行各种整合和二次开发,以达到与自己的需求完全吻合的程度。那么下面就谈谈运维监控平台的设计思路。

构建一个智能的运维监控平台,必须以运行监控和故障报警这两个方面为重点,将所有业务系统中所涉及的网络资源、硬件资源、软件资源、数据库资源等纳入统一的运维监控平台中,并通过消除管理软件的差别,数据采集手段的差别,对各种不同的数据来源实现统一管理、统一规范、统一处理、统一展现、统一用户登录、统一权限控制,最终实现运维规范化、自动化、智能化的大运维管理。

智能的运维监控平台,设计架构从低到高可以分为6层,三大模块,如下图:在这里插入图片描述

数据收集层:位于最底层,主要收集网络数据、业务系统数据、数据库数据、操作系统数据等,然后将收集到的数据进行规范化并进行存储。

数据展示层:位于第二层,是一个Web展示界面,主要是将数据收集层获取到的数据进行统一展示,展示的方式可以是曲线图、柱状图、饼状态等,通过将数据图形化,可以帮助运维人员了解一段时间内主机或网络的运行状态和运行趋势,并作为运维人员排查问题或解决问题的依据。

数据提取层:位于第三层,主要是对从数据收集层获取到的数据进行规格化和过滤处理,提取需要的数据到监控报警模块,这个部分是监控和报警两个模块的衔接点。

报警规则配置层:位于第四层,主要是根据第三层获取到的数据进行报警规则设置、报警阀值设置、报警联系人设置和报警方式设置等。

报警事件生成层:位于第五层,主要是对报警事件进行实时记录,将报警结果存入数据库以备调用,并将报警结果形成分析报表,以统计一段时间内的故障率和故障发生趋势。

用户展示管理层:位于最顶层,是一个Web展示界面,主要是将监控统计结果、报警故障结果进行统一展示,并实现多用户、多权限管理,实现统一用户和统一权限控制。

在这6层中,从功能实现划分,又分为三个模块,分别是数据收集模块、数据提取模块和监控报警模块,每个模块完成的功能如下:

数据收集模块:此模块主要完成基础数据的收集与图形展示。数据收集的方式有很多种,可以通过SNMP实现,也可以通过代理模块实现,还可以通过自定义脚本实现。常用的数据收集工具有Cacti、Ganglia等。

数据提取模块:此模板主要完成数据的筛选过滤和采集,将需要的数据从数据收集模块提取到监控报警模块中。可以通过数据收集模块提供的接口或自定义脚本实现数据的提取。

监控报警模块:此模块主要完成监控脚本的设置、报警规则设置,报警阀值设置、报警联系人设置等,并将报警结果进行集中展现和历史记录。常见的监控报警工具有Nagios、Centreon等。

在了解了运维监控平台的一般设计思路之后,接下来详细介绍下如何通过软件实现这样一个智能运维监控系统。

下图是根据上图的设计思路形成的一个运维监控平台实现拓扑图,从图中可以看出,主要有三大部分组成,分别是数据收集模块、监控报警模块和数据提取模块。

其中,数据提取模块用于其他两个模块之间的数据通信,而数据收集模块可以有一台或多台数据收集服务器组成,每个数据收集服务器可以直接从服务器群组收集各种数据指标,经过规范数据格式,最终将数据存储到数据收集服务器中。

监控报警模块通过数据抽取模块从数据收集服务器获取需要的数据,然后设置报警阀值、报警联系人等,最终实现实时报警。报警方式支持手机短信报警、邮件报警等,另外,也可以通过插件或者自定义脚本来扩展报警方式。这样一整套监控报警平台就基本实现了。
在这里插入图片描述

三、企业运维监控平台选型

1、中小企业监控平台选择Zabbix

Zabbix是一款综合了数据收集、数据展示、数据提取、监控报警配置、用户展示等方面的一款综合运维监控平台。

Zabbix学习入门较快,功能也很强大,是一个可以迅速用起来的监控软件,能够满足中小企业的监控报警需求,因此是中小型企业运维监控的首选平台。但是,Zabbix当监控服务器数量较多时,会产生很多问题,如监控数据不准确、报警超时等等问题,这是因为Zabbix对服务器性能要求较高,当监控的服务器数量超过500台后,监控性能急剧下降,此时需要进行分布式监控部署,并且需要提升监控服务器的性能。

安全性方面,Zabbix客户端的agent如果故障,收集到的数据将丢失,同时Zabbix Server也是单点,可能还需要对Zabbix Server做HA保证数据的安全和监控的高可用。

2、互联网大企业监控平台选择 Ganglia+Centreon

开源监控软件组合应用+二次开发是大型互联网企业构建监控平台的一个基本策略,对于有海量服务器、多业务系统的复杂监控,没有哪个软件能独立完成企业的所有监控需求,因此,多种开源监控软件组合应用+二次开发才是监控平台的最终方向。

推荐ganglia是因为ganglia客户端软件对服务资源占用非常低,并且扩展插件非常多,监控扩展也非常容易,同时结合专业的web监控平台centreon,可以实现在数据收集、数据展示、数据提取、监控报警配置、用户展示等方面的完美配合,因此这里对海量服务器进行监控我们推荐ganglia+centreon组合。

四、说说我们运维监控平台的演变历程

这是一个经验和总结,我结合这么多年我们监控平台的演变,总结了一下不同阶段、不同机器数量,监控平台需要的构建思路和策略。

1、机器数量小于100台的阶段

这个时期由于机器数量较少,因此,对监控的需求也很简单,监控的用途可能主要用于通知问题、快速定位与解决问题,大致总结一下,此阶段监控平台的特点如下:

(1)、部署简单,上手易用(2)、稳定运行,不出故障(3)、可进行报警,以邮件、短信等形式

基于以上特点和需求,可以使用比较流行开源的监控软件Nagios,Cacti,Zabbix,Ganglia等等。流行的开源产品文档很多,可快速上手,并且有大量的前人使用经验,遇到问题也很容易解决。

最初我们选择了nagios,因为这款软件是最早流行的,后来因为主机和服务添加不方便,切换到了zabbix上了,此阶段,zabbix应该是最好的选择。

2、机器数量200到1000的阶段

这个阶段,由于机器数量变多,监控需求也开始变得复杂,不过主要还是用于通知、告警,发现问题,并避免同样的问题再次发生,根据这个阶段的特点,我们在这个时期主要对监控平台做了以下工作:

1)监控内容分类:由于要监控的机器很多,监控内容也随之增多,于是我们将监控根据用途不同,进行了分类,主要分为系统基础监控数据、网络监控数据和业务监控数据。

2)全覆盖式监控:将所有机器均纳入监控中,主要包含软件监控和硬件监控,硬件监控主要是监控硬件性能和故障,软件监控除了第一步提到的各种基础监控数据外,还增加了业务逻辑监控,尽可能的覆盖业务流程,通过大量自定义监控减少和去除重复的问题,保障业务稳定运行。

3)多种告警方式,确保无漏报:将所有监控根据重要程度、紧急程度进行分类,分别用邮件,微信,短信,电话等不同级别的方式进行通知,每个监控对应到不同的人,确保每个监控都有人处理,并且对于重要的业务采用持续通知的方式,不处理就一直通知。

这个阶段的难点是对告警信息的处理,由于机器越来越多,需要监控的服务也越来越多,告警信息就出现了爆发式增长,每天收到上千封报警邮件是经常的事情。过多的邮件出现,其实就失去了告警的意义,因为我们不可能去查看每一封邮件,而这么多告警邮件中,很多都是非必要的告警,例如系统负载偶尔增高一下,就发了告警邮件,这完全是不需要的。

因此,这个阶段,主要是对监控告警策略进行配置和优化,尽量减少不必要的告警邮件,例如,对系统负载的监控,可以选择连续几次负载超过阀值,然后持续多久之后才进行告警操作,通过对告警策略的优化,告警信息大大减少,每天最多几十封,这样的话,就不会错过任何告警信息了。

(1)告警不及时

当我们服务器超过1000台以后,我们的zabbix就经常罢工,有时候监控数据不能及时显示,有时候告警迟迟不来,特别是告警延时,这个是最恐怖的事情,线上业务7*24小时不能出现故障,虽然监控到了异常,但是通过监控系统发出来已经是1个或者几个小时之后了,那监控还有什么意义呢,及时性是监控系统的第一要求,这个是必须要解决的问题。

如何解决这个问题呢,除了对监控进行优化,例如分布式proxy方式部署,开启zabbix主动模式,还对数据收集进行了扩展和优化,我们对基础数据的收集,抛弃了zabbix来实现,而采用ganglia,而对业务数据部分实现仍然采用zabbix完成,通过将收集数据的负载进行分担,大大减低了zabbix的负载,数据收集的准确性,及时性又恢复正常了。

(2)告警系统出现了单点故障

由于服务器众多,收集的数据也飞速增长,曾经有一次,监控服务器突然意外宕机了,等系统恢复启动起来,已经是一个小时以后了,这一个小时运维就变成了睁眼瞎了,多可怕的事情。

自从发生监控系统宕机事故后,我们对监控服务器进行了分布式高可用部署,以避免单点故障,同时对监控到的数据进行远程异地备份,当监控服务器故障后,会自动切换到备用监控系统上,并且监控数据自动保存同步。

(3)告警需求监控系统无法满足

业务的增加,客户对业务稳定性要求变得更加苛刻,为了保证业务系统稳定运行,业务逻辑监控需求被提出来了,业务逻辑监控就是对业务系统的运行逻辑进行监控,当业务运行逻辑故障时候,也需要进行告警,很显然,对业务逻辑的监控,没有现成的工具和代码,只能根据业务逻辑自行开发,通过提高业务逻辑接口,汇报数据等方式,我们对zabbix进行了多项二次开发,以满足对业务逻辑的监控。

最后,运维监控平台是运维工作中不可或缺的一部分,如何构建适合自己的运维监控平台,每个公司的需求不一样,每个运维面对的痛点也不尽相同,但,不管有什么需求,多少需求,万变不离其宗,有了机器上的各种监控数据,运维就能做很多事情。运维监控的路上,我们一起前行。

作者:南非蚂蚁来源:http://blog.51cto.com/ixdba/2310782

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1073103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】网络安全的最后一道防线——“密码”

网络安全的最后一道防线——“密码” 前言超星学习通泄露1.7亿条信息事件武汉市地震监测中心遭境外网络攻击事件 一、密码起源1、 古代密码2、近代密码3、现代密码4、量子密码 二、商密专栏推荐三、如何利用密码保护账号安全?1、账号安全的三大危险?&…

LLaMA Adapter和LLaMA Adapter V2

LLaMA Adapter论文地址: https://arxiv.org/pdf/2303.16199.pdf LLaMA Adapter V2论文地址: https://arxiv.org/pdf/2304.15010.pdf LLaMA Adapter效果展示地址: LLaMA Adapter 双语多模态通用模型 为你写诗 - 知乎 LLaMA Adapter GitH…

PSN 两步验证解除2023.10.9经验贴

背景 本人10月1号收到Sony邮件,说是不规律登录,需修改密码后登录,然后我10月8日登录PS4的时候,提示两步验证。当时就想坏了,然后找B站相关经验贴,10月9号电话香港客服,解除了两步验证&#xff0…

IOT 围炉札记

文章目录 一、蓝牙二、PAN1080三、IOT OS四、通讯 一、蓝牙 树莓派上的蓝牙协议 BlueZ 官网 BlueZ 官方 Linux Bluetooth 栈 oschina 二、PAN1080 pan1080 文档 三、IOT OS Zephyr 官网 Zephyr oschina Zephyr github 第1章 Zephyr简介 第2章 Zephyr 编译环境搭建&#…

云管理平台基本功能有哪些?适配国产化平台吗?

随着云计算的大力发展,越来越多的企业需要云管理平台了。但很多其他对于云管理平台不是很了解,有小伙伴问,云管理平台基本功能有哪些?适配国产化平台吗?这里我们小编就给大家解答一下。 云管理平台基本功能有哪些&am…

【Java】中小学智慧校园管理系统源码 SaaS模式+电子班牌系统

智慧校园电子班牌系统,主要针对中小学校园研发,为校园管理提供智慧管理方案,提供校园智慧管理平台,在大数据平台下,对应用系统进行统一、集中管理,囊括校园管理全方面,实现对校园、班级、教师、…

商城系统选型:Java商城系统还是PHP商城系统好?

电子商务的不断发展,商城系统成为了企业建设在线销售平台的重要组成部分。 可是在选择合适的商城系统时,许多企业面临着一个重要的决策:是选择Java商城系统还是PHP商城系统呢?下面就对这两种常见的商城系统进行比较,并…

jump server是什么

Jump Server(跳板服务器)是一种安全的中间服务器,用于管理和控制对其他服务器的访问。它提供了一种安全的方式,允许管理员通过跳板服务器来管理和连接其他服务器,而无需直接从外部网络访问内部服务器。 跳板服务器的主…

seata分布式事务理论概述

分布式事务产生的原因: 数据库分库分表 应用的SOA化。就是业务的服务化(面向服务架构) 分布式事务的解决方案: 1、两阶段提交协议2PC 这里的两阶段提交和redolog binlog的两阶段提交不是一个东西,redo log和bin log的两阶段提交保证的是…

vulnhub靶场 Kioptrix-level-1

简介: vulnhub是一个提供靶场环境的平台。而Kioptrix-level-1就是一个对新手比较友好的靶场。初学渗透的同学可以做做试试看,项目地址如下。 项目地址:Kioptrix: Level 1 (#1) ~ VulnHub 信息收集 查看本机IP,靶机跟kali都是使用…

sqli-lab靶场通关

文章目录 less-1less-2less-3less-4less-5less-6less-7less-8less-9less-10 less-1 1、提示输入参数id,且值为数字; 2、判断是否存在注入点 id1报错,说明存在 SQL注入漏洞。 3、判断字符型还是数字型 id1 and 11 --id1 and 12 --id1&quo…

C++中的对象切割(Object slicing)问题

在C中&#xff0c;当我们把派生类对象向上强制转型为基类对象时&#xff0c;会造成对象切割&#xff08;Object slicing&#xff09;问题。  请看下面示例代码&#xff1a; #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…

nginx交叉编译移植-基于nuc980开发板的笔记

目录 一、nginx的介绍 二、开发环境 三、交叉编译开发过程 四、开发板测试 五、问题 一、nginx的介绍 nginx是一个高性能的Web服务器软件&#xff0c;它可以作为反向代理服务器、负载均衡器、HTTP缓存和安全策略等多种用途。nginx的设计目标是高并发、高性能、高可靠性和低内存…

postgresql中的近一周,近一月,近三月,近一年日期段拆分

统计中经常会遇到,近一周,近一月,近三月,近一年数据统计,下面提供了postgresql拆分日期段的sql -- 近一周,每一天起止时间 select generate_series startDate,generate_series interval 1 day endDate from generate_series( NOW()::date interval -6 day, now()::timest…

揭秘 Go 中的 new() 和 make() 函数

Go&#xff08;或 Golang&#xff09;是一种现代、静态类型、编译型的编程语言&#xff0c;专为构建可扩展、并发和高效的软件而设计。它提供了各种内置的函数和特性&#xff0c;帮助开发人员编写简洁高效的代码。其中包括 new() 和 make() 函数&#xff0c;这两个函数乍看起来…

财务明细一目了然,颜色标记记录轻松掌握个人账目!

无论您是想更好地理清个人收支&#xff0c;还是希望在财务管理中更加高效&#xff0c;我们为您推荐一款绝佳的财政管理神器&#xff1a;颜色标记记录&#xff01; 第一步&#xff0c;首先&#xff0c;我们要先进入【晨曦记账本】主页面&#xff0c;并点击上方功能栏里的“添加…

开发日志:企业微信实现扫码登录(WEB)

一&#xff1a;获取扫码登陆所需的参数&#xff1a;appid,secret,agentid 登录企业微信&#xff1a;https://work.weixin.qq.com/ 扫码登录文档&#xff1a;https://work.weixin.qq.com/api/doc/90000/90135/90988 1&#xff1a;获取appid 点击我的企业就可以看到企业ID信息&am…

【AIGC】如何在使用stable-diffusion-webui生成图片时看到完整请求参数

文章目录 背景开搞使用遇到的问题 背景 通过代码调用Stable Diffusion的txt2img、img2img接口时&#xff0c;很多时候都不知道应该怎么传参&#xff0c;比如如何指定模型、如何开启并使用Controlnet、如何开启面部修复等等&#xff0c;在sd-webui上F12看到的请求也不是正式调用…

java生成验证码返回前端图片,后端通过redis存储和校验

目录 1.导入maven 2.编写config类 3.编写controller 4.验证 1.导入maven <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency> 2.编写config类 …

Mac 文件设置默认展示和排列方式

点击 现在默认展示方式是分栏方式&#xff0c;因我我勾选了 点击这里就可以修改 始终以xx打开&#xff0c;这里我选择了图标视图。 有快捷键 commandJ 修改默认配置。