面向多告警源,如何构建统一告警管理体系?
本文介绍告警统一管理的最佳实践,以帮助企业更好地处理异构监控系统所带来的挑战和问题。
背景信息
在云原生时代,企业IT基础设施的规模越来越大,越来越多的系统和服务被部署在云环境中。为了监控这些复杂的IT环境,企业通常会选择使用异构监控系统,例如Prometheus、Grafana、Zabbix等,以获取更全面的监控数据,以便更好地了解其IT基础设施的运行状况和性能表现。
然而,这种异构监控系统也带来了一些问题,其中最显着的是告警信息的分散。由于不同的监控系统可能会产生不同的告警信息,这些信息可能会分散在各个系统中,导致企业很难全面了解其IT系统的告警状况。这使得响应告警变得更加困难,同时也增加了人工管理的复杂性和工作量。
为了解决这些问题,企业需要一种更加统一和集中的告警管理方案,以确保告警信息能够及时到达正确的人员,以便他们能够快速采取必要的措施来应对潜在的问题。
告警管理的痛点
场景一:企业迁移上云后,云上产品的告警不统一
在一个典型的云原生业务应用部署架构中,通常会使用到如下产品 ACK、ECS、RDS,应用通过Kubernetes部署在阿里云的ECS上并访问云上的RDS。在这个架构中通常会用到如下监控产品来对系统进行监控。
- 通过CloudMonitor对阿里云基础设施ECS和RDS进行监控,当资源出现异常时进行告警。
- 通过Prometheus对Kubernetes以及部署在kubernetes上的Pod进行监控,当Kubernetes出现异常时进行告警。
- 通过ARMS对部署在Kubernetes上的应用进行监控,包括应用直接的调用链。当应用异常时进行告警。
- 通过SLS对应用产生的日志进行监控,当日志出现异常时进行告警。
在这样一个场景下由于用到了多个云产品对整个系统进行监控会导致使用者需要在多个产品上重复配置联系人、通知方式、值班等运维配置。且不同系统之间的告警无法产生有机结合,当一个问题出现时不能快速关联不同告警系统中的相关告警。
场景二:多云、混合云架构下,异构监控系统告警不统一
当企业的应用部署在多云环境或混合云环境下时,监控系统产生的告警可能会更加分散和复杂,给企业的运维工作带来很大的挑战。由于不同的云平台和私有云架构之间的差异,监控数据的采集和处理方式也可能不同,因此,不同监控系统产生的告警信息也可能表现出差异化,这会带来一系列的问题。
首先,不同监控系统产生的告警信息分散在不同的地方,运维人员需要耗费更多的时间和精力去处理这些信息。其次,不同系统产生的告警信息难以统一进行管理和分析,使得问题的诊断和解决更加困难。此外,因为不同系统的告警信息可能存在重复或冲突,管理和处理这些信息也会变得更加复杂。
场景三:自研监控系统、自定义事件告警接入
在应用开发运维过程中,随着系统规模的扩大和复杂度的提高,各个角落中的胶水代码逐渐增多。这些代码虽然是连接不同模块和系统的重要纽带,但一旦出现问题,由于分散在不同的地方,很难立即发现和处理。这就使得企业难以保证系统的高可用性和稳定性。如何灵活的低成本的接入这部分代码产生的告警也成为企业应用运维的痛点之一。
统一告警管理
在构建统一告警管理平台过程中,不同的监控系统对告警定义、处理流程都不一样,往往会存在下面问题:
- 不同系统产生的告警格式不同,接入成本高。
- 不同系统间的告警接入后由于格式不统一,难以统一处理逻辑。
- 不同告警系统对于告警等级的定义不同。
- 不同告警系统对于告警自动恢复的处理方式不同。有的告警系统支持自动恢复,有的不支持。
ARMS告警管理 [ 1] 设计的集成、事件处理流、通知策略等功能专门针对告警统一管理的场景,解决了统一管理过程中遇到的诸多问题。
ARMS告警管理如何接入不同格式的告警?
传统告警通常包括如下一些内容,这种结构化的告警通常只适用于单一告警源。当多个告警源的数据汇总到一起后通常会导致数据结构的冲突。因此ARMS使用了半结构化的数据来存储告警。
阿里云监控告警数据格式:
Zabbix告警数据格式:
Nagios告警数据格式:
半结构化的告警数据结构
[{"labels": {"alertname": "<requiredAlertNames>","<labelnames>": "<labelvalues>",...}, "annotations": {"<labelnames>": "<labelvalues>",}, "startsAt": "<rfc3339>","endsAt": "<rfc3339>","generatorURL": "<generator_url>"},...
]
- labels(标签):告警元数据,一组标签唯一标识一个事件,所有标签均相同的事件为同一个事件,重复上报会进行合并,例如:alertname: 告警名称。
- annotations(注释):注释是告警事件的附加描述,注释不属于元数据。例如:message: 告警内容。不同时间点发生的同一个事件他们的标签是相同的,但是注释可以是不同的。比如告警内容的注释可能不同,例如:“主机i-12b3ac3*** CPU使用率持续三分钟大于75%,当前值82%”。
- startsAt(告警开始时间):告警事件开始时间。
- endsAt(告警结束时间):告警事件结束时间。
- generatorUrl(事件URL地址):告警事件URL地址。
如上述代码所示,ARMS参考开源Prometheus告警定义 [ 2] ,使用一个半结构化的数据结构来描述告警。通过高度可扩展的键值对来描述告警,这样就可以非常灵活的对告警内容进行扩展从而接入不同的数据源产生的告警。
任意JSON格式的自定义告警接入能力
ARMS告警提供了任意一种JSON格式接入的能力(自定义集成 [ 3] )。只要告警数据结构满足JSON格式就能接入。如下图所示,自定义告警接入需要先将告警内的JSON数据上传到ARMS告警中心后,通过页面编辑字段映射的方式将告警内容中的关键信息映射到ARMS告警数据结构中。
ARMS定义了如alertname等关键字段,对于更多的扩展字段,用户可以在集成中通过新增扩展字段的方式进行配置。所有的扩展字段都可以运用到后面的告警处理逻辑中。以下图为例将原始告警报文中的hostname字段映射到扩展的hostname字段,hostip字段映射到扩展的hostip字段。
常用监控工具告警快捷接入能力
ARMS默认提供了云上云下多种监控系统的告警接入能力,可以参考集成概述 [ 4] 进行快速接入。
ARMS告警管理如何统一告警等级?
ARMS中将告警分为P1、P2、P3、P4四个等级。通过配置映射表,将多个不同类型的等级归一到P1-P4四个等级。如下图所示,将L1、Critical、严重告警这三种不同描述的告警等级都映射为P1告警,这样就可以统一不同系统中对于告警等级的不同定义。
ARMS告警管理对于不同格式的告警如何统一处理逻辑?
由于ARMS告警采用了半结构化的数据结构,可以通过标签来统一告警的处理逻辑。通常我们需要至少2个标签来统一告警的处理逻辑。一个标签用来决定这个告警应该通知给哪些人,比如业务标签(service,biz)。另一个标签用来决定这个告警应用通过什么样的方式进行通知和升级。如下表所示,通常使用告警等级(severity)来定义告警处理的SLA。
ARMS设计了通知策略和升级策略两种策略来满足不同等级的告警的处理要求,您可以参考通知策略最佳实践 [ 5] 来进行配置。
标签设计原则
当我们在设计用于告警处理的业务标签时需要满足如下原则:
- 互斥原则:指避免对同一个资源使用两个或以上的标签键。例如:如果已经使用了标签键service来标识业务,就不要再使用biz或业务等类似的标签键。
- 集体详尽原则:指所有资源都必须绑定已规划的标签键及其对应的标签值。例如:某公司有3个业务,标签键是service,则应至少有3个标签值分别代表这3个业务。
- 有限值原则:指为资源只保留核心标签值,删除多余的标签值。例如:某公司共有5个业务,那么应该有且仅有这5个业务的标签,方便管理。
除了业务标签也可以定义其他的标签来进行告警的管理,比如使用环境标签来区分开发和测试环境的告警。这些标签应该满足上述设计原则,这样可以简化告警管理配置的复杂度。
通过事件处理流给告警打标签(富化告警)
当我们设计好标签后如何对不同告警源的告警打标呢。在ARMS告警管理中设计了低代码方式的事件处理流 [ 6] ,通过拖拉拽的配置方式可以实现给告警打标签的能力(富化告警)。
场景一:匹配特定条件后给告警打标签
某xx业务使用了自研监控系统,通过自定义集成将自研的告警接入到ARMS告警管理中后,需要对这部分告警统一打上业务标签xx。事件处理流的配置如下:
a. 登录ARMS控制台 [ 7] ,在左侧导航栏选择告警管理,然后单击新建处理流。
b. 在弹出的面板创建事件处理流,编辑触发条件匹配自定义集成的名称为“xx自研监控系统”。
c. 添加设置业务标签动作,将"xx"设置为业务(service)标签值。
场景二:切割字符串,提取标签
某自研告警系统中所有的主机都使用固定格式进行命名,命名格式为env−env−{env}-{biz}-app−app−{app}-{group}-${index} ,需要提取其中的biz字段做为业务标签。配置正确的触发条件后,使用分割内容操作,将hostname根据字符’-'进行分割,分割后的内容依次填充到env、service、 app、group字段。
场景三:通过查询Excel表格富化告警
某应用监控平台,在发生告警时仅通知了应用ID,需要根据Excel表格关联到应用名称、应用责任人等信息。
a. 创建Excel数据源,并上传app_cmdb.xlsx文件。
b. 配置事件处理流,添加字段丰富操作,选择数据源为第一步创建的数据源。编辑匹配字段为appId,将Excel表中其他字段分别填充到appName、owner、ownerPhone扩展字段中。
场景四:通过Serverless(FunctionCompute)调用外部服务富化告警
同上述场景三,当告警中缺失的数据需要从CMDB等外部系统获取时,可以通过API类型的数据源来进行告警富化。
a. 创建函数计算应用 [ 8] ,开发一个HTTP服务,接收入参为appId,返回出参为appName、owner、ownerPhone等参数。如下截图仅为示例代码。
b. 创建API类型的数据源,URL地址为第一步中开发的函数。
c. 配置事件处理流,添加字段丰富操作,选择数据源为上一步创建的数据源。编辑匹配字段为appId,将Excel表中其他字段分别填充到appName、owner、ownerPhone扩展字段中。
ARMS告警管理如何配置告警自动恢复?
不同的监控系统对告警自动恢复的处理逻辑大不相同。如Prometheus告警不会发送特定格式的恢复告警,仅通过告警时间来标识告警是否结束。阿里云云监控 [ 9] 中告警是否恢复的状态合并到了告警等级中,如下所示。
- 参数:triggerLevel
- 数据类型:String
- 本次触发报警的级别。取值:
-
- CRITICAL:严重
- WARN:警告
- INFO:信息
- OK:正常
不同场景下的告警在处理是否恢复的逻辑可能也会有所区别。如阈值类型的告警,当监控值不满足阈值条件时期望立即恢复告警。但是对于事件类型的重要告警,告警发生只在一瞬间,并没有恢复的过程。需要运维人员人工确认事件产生的影响已经消除后才能恢复告警。
场景一:针对不会恢复的告警,配置自动恢复时长,告警按照时间自动恢复
针对事件类型的告警,通常需要人工确认事件的影响范围后再处理告警。这时告警自动恢复可能会导致需要被处理的事件没有被人工处理。针对这种情况需要在接收到告警后不进行自动恢复或者至少在一个长周期内不自动恢复,给处理人员一定的时间来确认该告警的影响。
ARMS自定义集成配置告警自动恢复时间截图:
场景二:配置恢复告警字段,接收到恢复事件后恢复告警
在ARMS的告警集成中,可以通过配置告警恢复字段,当告警内容中某个字段的值满足条件时,视为恢复告警。根据该告警的其他字段的内容寻找对应的告警进行恢复。告警主动恢复的示意图如下所示:
ARMS控制台配置方式截图:
告警恢复需要满足如下2点,才能正确的恢复对应的告警。
- 如果没有定义去重字段,那么告警和恢复告警的标签需要完全一致才能正确恢复告警。
- 如果定义了去重字段,那么告警和恢复告警的去重字段需要完全一致才能正确恢复告警。
说明:当配置了某个字段如(status)做完告警恢复字段时,请不要将这个字段添加到告警的映射规则中。通常会导致告警与恢复告警字段不匹配,从而恢复失败。
补充信息
FunctionCompute示例代码:
# -*- coding: utf-8 -*-import logging
import jsondef handler(environ, start_response):context = environ['fc.context']request_uri = environ['fc.request_uri']body_str = get_request_body(environ)id = json.loads(body_str).get('appId')# 这一行为伪代码,示例通过查询cmdb获取应用详细信息, 获取到的app格式如下# {"appId":"b38cdf95-2526-4d7a-9ea9-ffe7b32*****", "appName": "iot-iam", "owner":"王五", "ownerPhone": "130xxxx1236"}app = cmdb.getApp(id)ret = json.dumps(app)status = '200 OK'response_headers = [('Content-type', 'text/plain')]start_response(status, response_headers)return [ret.encode('utf-8')]def get_request_body(environ):try:request_body_size = int(environ.get('CONTENT_LENGTH', 0))except (ValueError):request_body_size = 0request_body = environ['wsgi.input'].read(request_body_size)return request_body
相关链接:
[1] ARMS告警管理
https://help.aliyun.com/document_detail/214753.htm?spm=a2c4g.2362717.0.0.1890245ddgeRkP#concept-2075853
[2] Prometheus告警定义
https://prometheus.io/docs/alerting/latest/clients/#sending-alerts
[3] 自定义集成
https://help.aliyun.com/document_detail/251850.htm?spm=a2c4g.2362717.0.0.18906bf4Pry1jD#task-2021669
[4] 集成概述
https://help.aliyun.com/document_detail/260831.htm?spm=a2c4g.2362717.0.0.1890d928BoEXFr#concept-2078267
[5] 通知策略最佳实践
https://help.aliyun.com/document_detail/456953.htm?spm=a2c4g.2362717.0.0.1890951awN1Sbk#task-2249792
[6] 事件处理流
https://help.aliyun.com/document_detail/311905.htm?spm=a2c4g.2362717.0.0.18901c8dwhrptl#task-2114624
[7] ARMS控制台
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Farms.console.aliyun.com%2F#/home
[8] 函数计算应用
https://help.aliyun.com/document_detail/51783.htm?spm=a2c4g.2362717.0.0.189070368lSswF#multiTask782
[9] 阿里云云监控
https://help.aliyun.com/document_detail/60714.htm?spm=a2c4g.2362717.0.0.18904bf99bofq7#task-2151109
目前应用实时监控服务ARMS 提供全功能15天试用,开发者可以全面体验告警能力。点击此处,即可获取。
相关文章:

面向多告警源,如何构建统一告警管理体系?
本文介绍告警统一管理的最佳实践,以帮助企业更好地处理异构监控系统所带来的挑战和问题。 背景信息 在云原生时代,企业IT基础设施的规模越来越大,越来越多的系统和服务被部署在云环境中。为了监控这些复杂的IT环境,企业通常会选…...
python 面向对象 -- 简单理解版
一、什么是面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。除了Python,Java也是一门面向对象的编程语言。 先来简单的了解下面向对象的一些基本特征。 类(Class): 用来描述具有相…...

SpringMVC 程序开发
✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 什么是 Spring MVCMVC 定义 怎么学 Spring MVCSpring MVC 创建和连接创建 Spring MVC 项目RequestMapping 注解介绍PostMappi…...

使用单片机遇到的几个问题及解决方案1
1.为什么我跟着视频学习的过程中,我没有找到“端口"的选项呢?我甚至没有出现“其他插口”。 想要找到设备管理器最快的方法就是: 首先如果把输入法调为大写形式,然后按下“WINX”,再按“M”就会出现一个设备管理…...

vue项目中el-upload 组件添加token的方法
在使用el-upload的时候,上传文件到服务器,有时候后台要求上传token,怎么处理呢?以下是一个示例。 效果图 template中片段 <el-dialog :modal-append-to-body"false" title"上传文件" :visible.sync"…...

独立按键检测短按、长按,松手后响应操作
背景 有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点&…...

BurpSuite2023测试越权漏洞
BurpSuite2023测试越权漏洞 BurpSuite安装创建项目 - 打开内置浏览器越权漏洞测试问题处理 BurpSuite安装 官网下载社区版并安装,下载地址:链接: https://portswigger.net/burp 安装成功后图标 创建项目 - 打开内置浏览器 打开BurpSuite,…...

申请国家标准项目管理专业人员能力评级(CSPM)报名条件有哪些?
2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…...

代码随想录算法训练营第五十二天|300.最长递增子序列|674. 最长连续递增序列|718. 最长重复子数组
LeetCode300.最长递增子序列 动态规划五部曲: 1,dp[i]的定义:本题中,正确定义dp数组的含义十分重要。dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。为什么一定表示 “以nums[i]结尾的最长递增子序” ,…...

完全卸载mysql教程
引言 很多人因为第一次安装mysql导致安装错误,或者安装的数据库版本太高,比如mysql8.0版本,出现了很多问题,导致数据库无法使用,或者一些图形界面无法操作,想要卸载,重装稳定的mysql数据库&…...

4G开发板-安卓手机开发套件-MTK主板开发板定制
开发板是一种用于嵌入式系统开发的电路板,它包含了各种硬件组件,如中央处理器、存储器、输入设备、输出设备、数据通路/总线以及外部资源接口等。为了满足特定的开发需求,嵌入式系统开发者通常会根据项目要求来定制开发板,当然用户…...

人工智能十大新星揭晓,华人学者占90%
人工智能领域著名杂志 IEEE Intelligent Systems发布了 2022 年度“人工智能十大新星”(AIs 10 to Watch)名单 ,其中有九位都是华人研究者。知识人网小编推荐给大家。 近日,人工智能领域著名杂志 IEEE Intelligent Systems公布了 …...

ROS学习——通信机制(话题通信①—发布方实现)
2.1 话题通信 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 040话题通信(C)1_发布方框架_Chapter2-ROS通信机制_哔哩哔哩_bilibili 一、ROS 中的基本通信机制主要有如下三种实现策略 话题通信(发布订阅模式服务通信(请求响应模式)参数服务器(参数共享模式) 二、…...
【运筹优化】最短路算法之SPFA算法 + Java代码实现
文章目录 一、SPFA算法简介二、SPFA算法思想三、Java代码实现四、测试 一、SPFA算法简介 SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同…...

linuxOPS基础_linux权限管理
权限概述 什么是权限 在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利。 在Linux 中分别有读、写、执行权限 \权限针对文件权限针对目录读r(read)表示可以查看文件内容;cat、less…表示可以(ls)查看目录中存在的文…...

linux安装homeassistant(智能设备远程控制开源框架)
1、安装docker 先切换到root 用户,先安装一些基本环境: yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云软件源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo然后安装 D…...
TensorRT Triton Inference Server: 版本 error魔术标记不匹配 , NGC使用
魔术标记不匹配错误Serialization assertion magicTagRead kMAGIC_TAG failed.Magic tag does not match 原因: 转换和推理使用的镜像的标签是相同的,但是转换的镜像中pip list得到trt版本为8.6.0,但是推理环境中 rootf2c810ba3976:/# /usr/…...
Elasticsearch 文本分析器(下)
字符过滤器 注意:字符过滤器用于在将字符流传递给分词器之前对其进行预处理 html_strip HTML元素替换过滤器 此过滤器会替换掉HTML标签,且会转换HTML实体 如:& 会被替换为 &。 {"tokenizer": "keyword","…...

Git操作方法
目录 Git是什么 Git特点 Git作用 Git原理 集中式 分布式 Git安装 修改语言 Git操作 1.初始化Git仓库 2.提交工作区的内容到版本库 3.查看版本记录 4.版本回退 5.版本前进 Git 命令 通用操作 工作状态 版本回退 版本前进 远程仓 1.GitHub 2.GitLab 3.码云…...

CorelDRAW矢量绘图2023中文版下载
市面上的矢量绘图工具虽然很多,但权威又专业的却不多,选到不好用的工具,会极大的影响自己创作,CorelDRAW简称cdr,是一款功能强大的矢量图制作软件,一说到矢量图制作,大家都会不由自主地想到cdr。…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
Cursor AI 账号纯净度维护与高效注册指南
Cursor AI 账号纯净度维护与高效注册指南:解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后,许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
经过前面几期的内容我们学习了很多网络安全的知识,而这期内容就涉及到了前面的第六期-RCE模块,第七期-File inclusion模块,第八期-Unsafe Filedownload模块。 什么是"遍历"呢:对学过一些开发语言的朋友来说应该知道&…...