如何做好运维监控

如何做好运维监控,第1张

统一监控平台,说到底本质上也是一个监控系统,监控的基本能力是必不可少的,回归到监控的本质,先梳理下整个监控体系:

① 监控系统的本质是通过发现故障、解决故障、预防故障来为了保障业务的稳定。

② 监控体系一般来说包括数据采集、数据检测、告警管理、故障管理、视图管理和监控管理6大模块。而数据采集、数据检测和告警处理是监控的最小闭环,但如果想要真正把监控系统做好,那故障管理闭环、视图管理、监控管理的模块也缺一不可。

一、数据采集

1、采集方式

数据采集方式一般分为Agent模式和非Agent模式;

Agent模式包括插件采集、脚本采集、日志采集、进程采集、APM探针等

非Agent模式包括通用协议采集、Web拨测、API接口等

2、数据类型

监控的数据类型有指标、日志、跟踪数据三种类型。

指标数据是数值型的监控项,主要是通过维度来做标识。

日志数据是字符型的数据,主要是从中找一些关键字信息来做监控。

跟踪型数据反馈的是跟踪链路一个数据流转的过程,观察过程中的耗时性能是否正常。

3、采集频率

采集频率分秒级、分钟级、随机三种类型。常用的采集频率为分钟级。

4、采集传输

采集传输可按传输发起分类,也可按传输链路分类。

按传输发起分类有主动采集Pull(拉)、被动接收Push(推)

按传输链路分类有直连模式、Proxy传输。

其中Proxy传输不仅能解决监控数据跨网传输的问题,还可以缓解监控节点数量过多导致出现的数据传输的瓶颈,用Proxy实现数据分流。

5、数据存储

对于监控系统来说,主要有以下三种存储供选择

① 关系型数据库

例如MySQL、MSSQL、DB2;典型监控系统代表:Zabbix、SCOM、Tivoli;

由于数据库本身的限制,很难搞定海量监控的场景,有性能瓶颈,只在传统监控系统常用

② 时序数据库

为监控这种场景设计的数据库,擅长于指标数据存储和计算;例如InfluxDB、OpenTSDB(基于Hbase)、Prometheus等;典型监控系统代表:TICK监控框架、 Open-falcon、Prometheus

③ 全文检索数据库

这类型数据库主要用于日志型存储,对数据检索非常友好,例如Elasticsearch。

二、数据检测

1 数据加工

① 数据清洗

数据清洗比如日志数据的清洗,因为日志数据是非结构化的数据,信息密度较低,因此需要从中提取有用的数据。

② 数据计算

很多原始性能数据不能直接用来判断数据是否产生异常。比如采集的数据是磁盘总量和磁盘使用量,如果要检测磁盘使用率,就需要对现有指标进行一个简单的四则运算,才能得到磁盘使用率。

③ 数据丰富

数据丰富就是给数据打上一些tags标签,比如打上主机、机房的标签,方便进行聚合计算。

④ 指标派生

指标派生指的是通过已有的指标,通过计算得出新的指标。

2 检测算法

有固定规则和机器学习算法。固定算法是较为常见的算法,静态阈值、同比环比、自定义规则,而机器学习主要有动态基线、毛刺检测、指标预测、多指标关联检测等算法。

无论是固定规则还是机器学习,都会有相应的判断规则,即常见的< > >=和and/or的组合判断等。

三、告警管理

1 告警丰富

告警丰富是为了后续告警事件分析做准备,需要辅助信息去判断该怎么处理、分析和通知。

告警丰富一般是通过规则,联动CMDB、知识库、作业历史记录等数据源,实现告警字段、关联信息的丰富;通过人工打Tags也是一种丰富方式,不过实际场景下由于人工成本高导致难以落地。

2 告警收敛

告警收敛有三种思路:抑制、屏蔽和聚合

① 抑制

即抑制同样的问题,避免重复告警。常见的抑制方案有防抖抑制、依赖抑制、时间抑制、组合条件抑制、高可用抑制等。

② 屏蔽

屏蔽可预知的情况,比如变更维护期、固定的周期任务这些已经知道会发生的事件,心里已经有预期。

③ 聚合

聚合是把类似或相同的告警进行合并,因为可能反馈的是同一个现象。比如业务访问量升高,那承载业务的主机的CPU、内存、磁盘IO、网络IO等各项性能都会飙升,这样把这些性能指标都聚合到一块,更加便于告警的分析处理。

3 告警通知

① 通知到人

通过一些常规的通知渠道,能够触达到人。

这样在没有人盯屏的时候,可以通过微信、短信、邮件触发到工作人员。

② 通知到系统

一般通过API推送给第三方系统,便于进行后续的事件处理

另外还需要支持自定义渠道扩展(比如企业里有自己的IM系统,可以自行接入)

四、故障管理

告警事件必须要处理有闭环,否则监控是没有意义的。

最常见还是人工处理:值班、工单、故障升级等。

经验积累可以把人工处理的故障积累到知识库里面,用于后续故障处理的参考。

自动处理,通过提取一些特定告警的固化的处理流程,实现特定场景的故障自愈;比如磁盘空间告警时把一些无用日志清掉。

智能分析主要是通过故障的关联分析、定位、预测等AI算法,进一步提升故障定位和处理的效率;

1 视图管理

视图管理也属于增值性功能,主要是满足人的心理述求,做到心中有底,面向的角色很多(领导、管理员、值班员等)。

大屏:面向领导,提供全局概览

拓扑:面向运维人员,提供告警关联关系和影响面视图

仪表盘:面向运维人员,提供自定义的关注指标的视图

报表:面向运维人员、领导,提供一些统计汇总报表信息,例如周报、日报等

检索:面向运维人员,用于故障分析场景下的各类数据检索

2 监控管理

监控管理是企业监控落地过程中的最大挑战。前5个模块都是监控系统对外提供的服务功能,而监控管理才是面向监控系统自身的管理和控制,关注真正落地的过程的功能呈现。主要有以下几个方面:

配置:简单、批量、自动

覆盖率:监控水平的衡量指标

指标库:监控指标的规范

移动端:随时随地处理问题

权限:使用控制

审计:管理合规

API:运维数据最大的来源,用于数据消费

自监控:自身稳定的保障

为了实现上述监控六大基础能力模块,我们可以按如下架构设计我们的统一监控平台。

主要分三层,接入层,能力层,功能层。

接入层主要考虑各种数据的接入,除了本身Agent和插件的采集接入,还需要支持第三方监控源的数据接入,才能算一个完整的统一监控平台。

能力层主要考虑监控的基础通用能力,包含数据采集模块、数据存储模块、数据加工模块、数据检测模块、AI分析模块。

功能层需要贴近用户使用场景,主要有管理、展示两类功能,在建设的过程中可以不断丰富功能场景。

另外,考虑到数据的关联关系,为未来的数据分析打下基础,监控和CMDB也需要紧密联动,所有的监控对象都应该用CMDB进行管理,另外,还可以配置驱动监控为指导理念,实现监控的自动上下线,告警通知自动识别负责人等场景,简化监控的维护管理。

为了统一监控平台能够在企业更好的落地,我们需要配备对应的管理体系,其中最重要的是指标管理体系。

指标管理体系的核心理念:

监控的指标体系是以CMDB为骨架,以监控指标为经脉,将整个统一监控平台的数据有机整合起来。

贯穿指标的生命周期管理,辅以指标的管理规范,保障监控平台长久有序的运行。

从企业业务应用的视角出发,一般将企业监控的对象分为6层,也可以根据企业自己的情况进行调整:

基础设施层

硬件设备层

*** 作系统层

组件服务层

应用性能层

业务运营层

利用UCache灾备云平台,可作为一个工具,在window服务器现有架构不变的情况下,针对Mysql数据库每天自动备份定时备份。

(1)新建备份任务

UCACHE灾备云控制台登录账号后:点击服务器定时数据保护--数据备份点击新建按钮,然后选要保护的对象(您的生产服务器节点),选中对应的客户端,选择文件系统然后点击 下一步

(2)设置备份策略

选择要进行备份的文件

(3)永久增量备份与数据保留设置

选择完要过滤的数据之后点击下一步,可进行下一步备份的高级功能选择,各个选项说明如下:

永久增量备份开启了永久增量备份每一次增量备份都会进行一次时间点合成形成新的一个永久增量时间点等效于完备时间点。

数据保留策略开启数据保留策略一共有三种保留策略分别为数据保留期限、保留副本数、按备份策略的备份周期设置副本保留策略默认选中数据保留期限一年。可以设置保留完全副本的个数最大可设置1024个副本按备份策略的备份周期设置副本保留策略最大可设置99999个副本。

传输和存储加密开启传输加密与存储加密选项开启此功能的任务的数据在传输和存储上都经过加密处理。一共有两种加密方式AES256加密算法、SM4加密算法。

数据压缩默认不开启开启该选项后默认启用快速压缩可选择启用强力压缩

重复数据删除勾选该选项可以启动源端重复数据删除的功能该选项在建立任务后不能通过修改任务的方式更改此属性。指纹库需要提前创建才能成功开启重删功能

最后新建完成

目录和文件内容,可以全选和分选,还可以利用UCACHE灾备云控制台的“文件过滤”“目录过滤”“时间过滤”功能进行不必要的数据不进行备份策略添加。为了备份效率不建议两个任务包含同一文件。

(4)设置邮件告警

备份执行完毕,会得到系统的执行反馈,也可以设定告警监控策略,进行邮件监控

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\x0d\ VIEW view_name [(column_list)]\x0d\ AS select_statement\x0d\ [WITH [CASCADED | LOCAL] CHECK OPTION]\x0d\\x0d\该语句能创建新的视图,如果给定了OR REPLACE子句,该语句还能替换已有的视图。select_statement是一种SELECT语句,它给出了视图的定义。该语句可从基表或其他视图进行选择。\x0d\该语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。如果还有OR REPLACE子句,必须在视图上具有DROP权限。\x0d\视图属于数据库。在默认情况下,将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时,应将名称指定为db_nameview_name。\x0d\mysql> CREATE VIEW testv AS SELECT FROM t;\x0d\\x0d\表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图。\x0d\视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由SELECT语句检索的列名将用作视图列名。要想为视图列定义明确的名称,可使用可选的column_list子句,列出由逗号隔开的ID。column_list中的名称数目必须等于SELECT语句检索的列数。\x0d\SELECT语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、 *** 作符等的表达式。\x0d\对于SELECT语句中不合格的表或视图,将根据默认的数据库进行解释。通过用恰当的数据库名称限定表或视图名,视图能够引用表或其他数据库中的视图。\x0d\能够使用多种SELECT语句创建视图。视图能够引用基表或其他视图。它能使用联合、UNION和子查询。SELECT甚至不需引用任何表。在下面的示例中,定义了从另一表选择两列的视图,并给出了根据这些列计算的表达式:\x0d\mysql> CREATE TABLE t (qty INT, price INT);\x0d\mysql> INSERT INTO t VALUES(3, 50);\x0d\mysql> CREATE VIEW v AS SELECT qty, price, qtyprice AS value FROM t;\x0d\mysql> SELECT FROM v;\x0d\+------+-------+-------+\x0d\| qty | price | value |\x0d\+------+-------+-------+\x0d\| 3 | 50 | 150 |\x0d\+------+-------+-------+\x0d\\x0d\视图定义服从下述限制:\x0d\· SELECT语句不能包含FROM子句中的子查询。\x0d\· SELECT语句不能引用系统或用户变量。\x0d\· SELECT语句不能引用预处理语句参数。\x0d\· 在存储子程序内,定义不能引用子程序参数或局部变量。\x0d\· 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。\x0d\· 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。\x0d\· 在视图定义中命名的表必须已存在。\x0d\· 不能将触发程序与视图关联在一起。\x0d\在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,它将被忽略。\x0d\对于定义中的其他选项或子句,它们将被增加到引用视图的语句的选项或子句中,但效果未定义。例如,如果在视图定义中包含LIMIT子句,而且从特定视图进行了选择,而该视图使用了具有自己LIMIT子句的语句,那么对使用哪个LIMIT未作定义。相同的原理也适用于其他选项,如跟在SELECT关键字后的ALL、DISTINCT或SQL_SMALL_RESULT,并适用于其他子句,如INTO、FOR UPDATE、LOCK IN SHARE MODE、以及PROCEDURE。\x0d\如果创建了视图,并通过更改系统变量更改了查询处理环境,会影响从视图获得的结果:\x0d\mysql> CREATE VIEW v AS SELECT CHARSET(CHAR(65)), COLLATION(CHAR(65));\x0d\Query OK, 0 rows affected (000 sec)\x0d\ \x0d\mysql> SET NAMES 'latin1';\x0d\Query OK, 0 rows affected (000 sec)\x0d\ \x0d\mysql> SELECT FROM v;\x0d\+-------------------+---------------------+\x0d\| CHARSET(CHAR(65)) | COLLATION(CHAR(65)) |\x0d\+-------------------+---------------------+\x0d\| latin1 | latin1_swedish_ci |\x0d\+-------------------+---------------------+\x0d\1 row in set (000 sec)\x0d\ \x0d\mysql> SET NAMES 'utf8';\x0d\Query OK, 0 rows affected (000 sec)\x0d\ \x0d\mysql> SELECT FROM v;\x0d\+-------------------+---------------------+\x0d\| CHARSET(CHAR(65)) | COLLATION(CHAR(65)) |\x0d\+-------------------+---------------------+\x0d\| utf8 | utf8_general_ci |\x0d\+-------------------+---------------------+\x0d\1 row in set (000 sec)\x0d\\x0d\可选的ALGORITHM子句是对标准SQL的MySQL扩展。ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。\x0d\对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。\x0d\对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。\x0d\对于UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。\x0d\明确选择TEMPTABLE的1个原因在于,创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定。与MERGE算法相比,锁定释放的速度更快,这样,使用视图的其他客户端不会被屏蔽过长时间。\x0d\视图算法可以是UNDEFINED,有三种方式:\x0d\· 在CREATE VIEW语句中没有ALGORITHM子句。\x0d\· CREATE VIEW语句有1个显式ALGORITHM = UNDEFINED子句。\x0d\· 为仅能用临时表处理的视图指定ALGORITHM = MERGE。在这种情况下,MySQL将生成告警,并将算法设置为UNDEFINED。\x0d\正如前面所介绍的那样,通过将视图定义中的对应部分合并到引用视图的语句中,对MERGE进行处理。在下面的示例中,简要介绍了MERGE的工作方式。在该示例中,假定有1个具有下述定义的视图v_merge:\x0d\CREATE ALGORITHM = MERGE VIEW v_merge (vc1, vc2) AS\x0d\SELECT c1, c2 FROM t WHERE c3 > 100;\x0d\\x0d\示例1:假定发出了下述语句:\x0d\SELECT FROM v_merge;\x0d\\x0d\MySQL以下述方式处理语句:\x0d\· v_merge成为t\x0d\· 成为vc1、vc2,与c1、c2对应\x0d\· 增加视图WHERE子句\x0d\所产生的将执行的语句为:\x0d\SELECT c1, c2 FROM t WHERE c3 > 100;\x0d\\x0d\示例2:假定发出了下述语句:\x0d\SELECT FROM v_merge WHERE vc1 100) AND (c1 回答于 2022-11-16

以上就是关于如何做好运维监控全部的内容,包括:如何做好运维监控、如何实现Mysql数据库每天自动备份定时备份、如何在MySQL中创建视图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9629589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存