关于构建工具:面向多告警源如何构建统一告警管理体系

本文介绍告警对立治理的最佳实际,以帮忙企业更好地解决异构监控零碎所带来的挑战和问题。 背景信息在云原生时代,企业IT基础设施的规模越来越大,越来越多的零碎和服务被部署在云环境中。为了监控这些简单的IT环境,企业通常会抉择应用异构监控零碎,例如Prometheus、Grafana、Zabbix等,以获取更全面的监控数据,以便更好地理解其IT基础设施的运行状况和性能体现。 然而,这种异构监控零碎也带来了一些问题,其中最显着的是告警信息的扩散。因为不同的监控零碎可能会产生不同的告警信息,这些信息可能会扩散在各个系统中,导致企业很难全面理解其IT零碎的告警情况。这使得响应告警变得更加艰难,同时也减少了人工治理的复杂性和工作量。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1243892?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

July 4, 2023 · 1 min · jiezi

关于构建工具:B-站构建实时数据湖的探索和实践

一、背景和痛点在大数据场景利用中,业务不仅要计算数据后果,而且要保障时效性。目前,我司演化出两条链路。时效性高的数据走 Kafka、Flink 实时链路;时效性要求低的数据走 Spark 离线链路。上图简略形容了 B 站数据上报、解决和应用的链路。数据采集次要通过 APP 端上报的行为事件数据。服务端上报的日志数据会通过网关以及散发层,流式散发到大数据数仓体系内。 MySQL 中存储的业务数据,通过 Datax 周期性的批式同步到数仓内。时效性高的数据会通过 Flink+Kafka 进行流式计算。时效性低的数据通过 Spark+HDFS 进行批计算最初出仓到 MySQL Redis Kafka 的介质中,为 AI、BI 的模型训练、报表剖析场景应用。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1211753?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

May 29, 2023 · 1 min · jiezi

关于构建工具:构建集群runner并发数在哪里设置呢

在云效中,构建集群的 Runner 并发数能够在构建集群的设置中进行配置。具体操作步骤如下: 登录云效控制台,进入构建集群页面。 找到须要配置的构建集群,点击其对应的“治理”按钮。 在构建集群的设置页面中,能够看到“Runner 并发数”设置项。 在“Runner 并发数”设置项中,能够设置该构建集群中 Runner 的最大并发数。默认状况下,该值为 1,即每次只能执行一个构建工作。 残缺内容请点击下方链接查看: https://developer.aliyun.com/ask/499531?utm_content=g_1000371149 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

April 28, 2023 · 1 min · jiezi

关于构建工具:构建制品不一致后续工作都是白费

专栏策动|雅纯 意愿编辑|冯朝凯、橙蜂 之前咱们举了《集装箱扭转世界》(作者:马克.莱文森)中的一个例子,书中提到上世纪五六十年代,集装箱的应用,使得整体货运老本升高了95%,大部分的码头工人都面临着就业。 这件事件看起来很简略,但却给经济全球化带来了十分大的影响。前面美国企业的订单能够下到中国、以及中国成为“世界工厂”,都与之有很大的关系。集装箱的背地是标准化和基于统一标准的产业链,这里有两点比拟重要的,一个是标准化,另外一个是不可变。 那么,在软件开发的过程中,咱们怎样才能享受产业生态的红利,实现软件交付过程的标准化呢?软件交付当中的集装箱应该是什么样的? 如何保障软件交付过程的标准化近十几年,软件交付状态产生了很大的变动,从最开始买物理机、建机房到虚拟机再到当初的容器。这两头为什么会产生这样的变动呢? 容器自身的底层技术是namespace和cgroup,然而这两个货色在十几二十年前就呈现了。最早利用这些技术的是对资源利用率和隔离有明确诉求的云厂商,比如说阿里云不心愿跑在机器上不同用户的货色相互串,最好的方法就是能限度每个用户的资源,如CPU、内存等。有了这个诉求,就会用LXC等形式去隔离,去限度资源。然而这还是没有产生容器。为什么呢?问题是各个云厂商只能在本人外部做,然而不能对外散发。所以Docker的平凡之处并不是在底层做了多大地翻新,而是提供了一个能够对外散发的容器镜像。 容器镜像是一个散发的模式,咱们能够把容器镜像分发给他人,或者是让他人继承咱们的镜像。同时Docker又提供了Dockerfile。Dockerfile容许咱们通过一个文件的模式去形容镜像。一旦可能定义镜像就能够合作了。有了这样的能力当前,容器就很快被大家所承受了。所以容器的承受看起来如同是技术倒退的过程,其实是随着云原生、云市场的倒退必然带来的后果。 咱们很多人认为的“集装箱”就是容器,这个容器很多时候咱们都认为是docker容器。在K8s外面反对很多个容器运行,大部分的状况都是用docker容器。docker容器的劣势就是方才说的两点:镜像和Dockerfile。这两点使得docker镜像能够像集装箱一样做散发。 此外,容器还提供了很好的资源隔离,能够在比拟小的粒度上进行隔离。虚拟机尽管也做了隔离,然而它的粒度比拟大。不仅如此,容器还提供了十分弹性的资源管理形式,这点比虚拟机和物理机都有十分大的改善。实质上它就是物理机上的一个过程,这是它和虚拟机的实质的差异。 理解了软件集装箱是什么后,而后咱们再来理解下容器镜像的组成。 如上图所示,这张图十分形象地展现了容器镜像的内部结构。当咱们本人执行dockerbuild构建镜像的时候,你会发现它进去的日志有很多hash值,一层一层的。实际上它是由很多层组成的,咱们通过LXC或者其余的技术,把容器的过程创立进去,这个过程通过namespace和cqroup做了资源隔离和限度。容器镜像都有一个BaseImage,咱们晓得运行一个程序,对操作系统的环境是要求的,比方依赖的library等。这个程序如果轻易在一台物理机和虚拟机部署,会随着机器的环境不同而不同,有可能导致危险。所以容器镜像给了一个根本镜像,把这个货色放外面了。再往上是Addemacs和Addapache,这两层咱们会在Dockerfile中去写。而后最下面的是Writable,就是咱们在容器Container运行的时候真正能够去写的货色。 那么容器镜像的特点是什么呢?它是分层的,每一层都是能够复用的,咱们在某个机器上有很多个容器,如果Base镜像一样,只有下一次就行了。能够看到镜像的大小是所有的层堆起来的,堆的货色越少,这个镜像就会越小。容器镜像有一个最小的镜像叫scratch,就是一个最原始的根底镜像。这外面简直什么都没有,基于它构建一个十分十分小的容器的话,可能就是几兆的大小。然而如果你基于CentOS根底镜像可能就是上G的大小。 容器镜像有一个十分重要的概念叫“One process per container”(容器生命周期=过程生命周期)。咱们能够认为容器就是K8s上的一个过程,如果把K8s比作操作系统,那么容器就是它下面运行的一个过程。过程的生命周期是能够被治理的。尽管容器有这么多的长处,但理论在用的时候也会遇到很多的问题。 上面咱们聊一聊容器镜像的一些常见的问题和倡议。 容器镜像常见问题及实际倡议容器镜像常见的问题: 把所有的货色都装到一个容器外面,把容器当虚拟机来用。把ENTRYPOINT设置为systemd:systemd治理的过程运行的后果和状态和的容器状态是不统一的,有可能外面的过程曾经僵死了,或者Crash了,然而systemd还活着,从内部看起来这个容器没问题。私有化部署的时候带一堆导出的镜像tar包。tar包是不分层的,它不晓得外面是有很多层。每次把根底镜像下发到整个集群,导致网络变得特地拥挤咱们的实际倡议是: 尽量采纳轻量的根底镜像和确定的镜像版本。通过分层来复用镜像内容,防止反复拉取。防止采纳systemd,包含supervisord和相似这样的daemon治理服务来做ENTRYPOINT。采纳本地的dockerregistry等以层为粒度来离线拷贝镜像。防止同时要做大量的pull,可采纳P2P的形式(如应用dragonfly)晋升镜像散发效率。容器镜像能够实现软件交付过程的标准化。标准化是伎俩不是目标,标准化是帮忙咱们更高效的复用的技术。 回到软件交付的终态,咱们的目标是心愿提供一个稳固可预期的零碎。 而达成这个指标的前提是,要有确定的运行环境和软件制品。确定的环境是指代码(及其依赖)、构建环境、构建脚本与预期统一的产出软件制品,这一点如何做到咱们前面再作分享。咱们先看如何保障软件制品的一致性。 如何保障软件制品的一致性要保障软件制品的一致性,软件制品应该有确定的格局、惟一的版本、可能追溯到源码、可能追溯到生产和生产过程,这样能力使继续交付更好地服务于企业的制品治理与开发。 在制品构建过程中,常常会遇到一些问题。例如利用的代码库里没有Makefile,package.json,go.mod而没法确定依赖,或者制品能构建胜利但缺失几个依赖,又或是在本人的开发环境运行失常而在生产环境呈现了开发环境没有的bug。导致这些问题呈现的起因是因为构建自身是可变的,当你构建可变时,就会带来一系列的问题。为此,咱们须要通过不可变构建来使制品与预期统一。 要实现不可变构建,咱们须要保障有: 雷同的代码雷同的构建环境雷同的构建脚本雷同的代码 例如程序员开发时,不在依赖形容文件(如go.mod,package-lock.json,pom.xml,requirements.txt等)中指定依赖的版本,则会默认应用最新的版本作为依赖,这样产出的制品会随着依赖的更新而不能保持一致,这将带来齐全不在预期内的危险。 雷同的构建环境 对于构建环境来说,Dockerfile能够用来在容器平台下形容环境,通过Dockerfile咱们能为制品应用统一的环境。很多时候咱们并不需要在运行中应用构建环境的很多依赖,而构建镜像的体积往往比拟惊人,这个时候咱们就须要将构建环境与运行环境离开,以失去尽可能轻量的镜像制品。 雷同的构建脚本 对应的,应用雷同的,与代码实现无关的构建脚本也是十分重要的,在Dockerfile的环境中必须指定确定的环境依赖版本。 只有在同一份代码(及同一个依赖)、同样构建环境的形容、和同样构建脚本的环境下,所产生的软件制品才是雷同的。这里强调的是说所有的货色都要保障一致性,如果说三者是一样的话,那产生进去的制品也是一样的,即便构建工夫不同,产出的制品也是雷同的。 做好不可变基础设施,首先要标准化最终交付制品的状态,并且明确此交付状态的运维治理形式。而要保障不可变,那首先要做好不可变的构建,而后能力有统一的软件制品。 NOTE:构建准确性,永远比构建更快重要。制品的构建信息不精确,导致构建制品不统一、版本不可控,所有后续的工作都是节约。 如何晋升构建效率在构建这块,一个须要关注的点的是如何晋升构建效率。咱们先看一个简略的计算问题: 这是一个十分大的数据,也是十分大的损耗。很多时候一个我的项目的工程效率太低的起因就是因为构建太慢。构建耗时过长使得制品迭代十分慢,性能更新和bug修复也会受到影响。 那咱们如何晋升构建的效率呢?上面是咱们的一些实际倡议: 1个根本准则: 保障构建的准确性,构建的准确性永远优于构建的效率。只有在保障准确性的前提下晋升效率才有意义。 5点倡议: 利用瘦身:查看利用的依赖状况,利用包体积是否过大,依赖项是否过多,是否去除不必要的依赖,是否构建更小的镜像。分层构建:底层的货色先构建进去当前被下层所复用,而后就能够做增量式的了。构建缓存:构建过程中拉取依赖是很耗时的,要防止反复拉取。网络优化:次要是保障代码、构建机器和制品库之间的低网络延时。代码和构建机器是否是在同一个低时延链路中。例如代码在Github上而应用云效构建,此时的延时绝对于内网会高出许多。仓库镜像:仓库镜像能够极大地缩小拉取依赖项的工夫。在国内的网络环境下,如果从源仓库获取依赖,可能延时会十分长,这时能够应用镜像网络升高延时。例如nodejs开发者常应用淘宝的npm镜像源,而Python开发者应用清华的镜像源。对于企业来说也能够构建本人的镜像仓库以晋升可靠性与升高延时。云效也应用了镜像仓库,来缩小拉取的工夫。(小编举荐:云效流水线Flow 是一款云原生时代的流水线工具,通过容器技术让企业解脱对虚拟机构建环境的依赖。您甚至能够依据您的应用需要,在同一条流水线上应用不同的构建环境。此外,云效流水线Flow 还提供了各种语言的容器环境,满足不同的构建应用场景。点击文末浏览原文,理解详情)总结本篇文章,咱们从软件交付的终态登程,提出了不可变构建的概念。心愿通过:雷同的源码+雷同的环境+雷同的构建脚本=>带来统一的软件制品。而这些货色都是保留在源代码里的,所以源代码的治理十分重要。 下篇文章,咱们将分享如何对源代码进行无效治理。 浏览上篇:做到这4点,才是真正的继续交付 点击下方链接立刻体验云效继续交付流水线Flow。 https://www.aliyun.com/product/yunxiao/flow?channel=yy_rccb_36

February 9, 2022 · 1 min · jiezi

关于构建工具:如何通过云效Flow完成自动化构建构建集群

如何通过云效Flow实现自动化构建—构建集群,云效流水线Flow是继续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,实现从开发到上线过程的继续交付。通过继续向团队提供及时反馈,让交付过程高效顺畅,云效Flow为了反对用户个性化的自动化构建。 云效构建集群,云效Flow 反对用户个性化的构建场景,提供三种类型的构建集群的能力反对。用户在流水线编排时,能够为工作设置不同的构建集群。北京和香港构建集群 北京和香港构建集群为解决用户下载海内构建依赖或者连贯海内服务的场景需要,Flow 别离提供了北京构建集群和香港构建集群。 应用构建集群 在工作节点抉择构建集群,默认应用北京构建集群。 自有构建集群如果有非凡的构建环境需要,用户也可在 Flow 中创立并应用公有的构建集群。 云效流水线 Flow 反对应用用户阿里云 ECS 或者自有主机作为构建集群。 对于上述的主机类型,须要确认以下配置: 反对的 OS 类型:Linux举荐配置:4 核 8G 或以上装置并启动 Docker Daemon:https://docs.docker.com/engine/install/验证 Docker 运行状态:在主机上执行命令 sudo docker ps; echo $?,输入应该为 0对于应用阿里云ECS主机作为构建集群的状况,须要确保云助手处于运行状态。创立自有构建集群 通过 构建集群治理 -> 新建构建集群,开始创立自有构建集群。 你能够创立两种类型的主机组:阿里云 ECS 构建集群自有主机构建集群 应用自有构建集群 在工作节点抉择构建集群,切换为自有构建集群。 图2.应用构建集群 构建语言反对云效流水线 Flow 通过多种构建步骤,反对不同语言的构建能力。上面形容构建环境中装置的软件清单,及不同语言场景下的应用办法。 公共软件所有构建环境都蕴含的软件: gcc/g++ 4.8.4make 3.8.1curl 7.35.0wget 1.15unzip 6.00git 1.9.1python 3.5(不在PATH中,须要应用/usr/alibaba/install/python-3.5.0/bin/python3来援用)各语言构建环境中的软件及应用办法 对应的构建能力都是通过根底构建机反对,根底环境曾经反对了上述构建能力,如上述能力无奈反对你的构建需要,请你分割咱们的客服以获取更多的反对。 设置依赖下载拜访凭证环境变量 在构建过程中,须要设置仓库的拜访凭证并下载构建依赖,为爱护拜访凭证的安全性,Flow 反对通过环境变量设置拜访凭证,对于环境变量请查看:环境变量 当然,作为企业对立管控的仓库拜访凭证,咱们更建议您应用通用变量组进行治理,对于通用变量组请查看:通用变量组 以下,提供了如何应用环境变量配置 Java、NPM 和 GoLang 仓库拜访凭证的指南。 Java 1、在settings.xml中增加私库的地址和账号/明码(环境变量)。 ...

October 9, 2021 · 1 min · jiezi

关于构建工具:利用增量构建工具-Preset-打造自己的样板库

你是如何开始一个我的项目呢?是基于以后技术栈提供的脚手架还是从 npm init 开始呢? 以前我没得选,必须面向搜索引擎。基于 webpack 或 rollup 来一步步构建我的项目,在开发过程中还有可能产生很多谬误。但当初我只想专一于以后业务,筛选适合的脚手架之后迅速构建本人的我的项目,这样的话,就能够把大量维护性的工作交给开源作者。 当然,出名的脚手架工具(Vue CLI,Umi,Vite 等)自不必说,这里我举荐几个棘手的工具。 microbundle-crl 专一于 React 组件的构建tsdx 专一于 TypeScript 库的构建crateApp 依据以后选项配置生成我的项目包 (多个根底构建工具 Webpack,Parcel,Snowpack)但无论是哪一个样板库或者脚手架,都不会完全符合以后业务的需要,开发者须要基于以后的样板进行批改。比如说须要在我的项目中要增加开源协定,批改项目名称,以及为我的项目增加不同的依赖。 从构建来说,目前有两个问题: 大量重复性操作如果生成我的项目的工作频率很高的话,例如一周写一个业务性组件。尽管每次在我的项目中要增加开源协定,批改项目名称,增加特定依赖都是一些小活,但频率高起来也是一件麻烦的事件。 底层依赖无奈间接降级如果开发者批改了以后样板,那么脚手架呈现破坏性更新时候就无奈间接降级(这种问题当然也比拟少)。尽管开发过程中会记录一些批改。但随着工夫的偏移,开发者不会确切晓得须要编辑或删除哪些文件能力使降级后的我的项目失常工作。 话不多说,咱们来看一看工具 Preset 是如何解决这一系列的问题的。 应用 Preset首先建设一个我的项目,以 vite 为例子,package.json 如下所示 { "name": "vite-preset", "version": "0.0.1", "author": "jump-jump", "license": "MIT", "preset": "preset.ts", "prettier": { "printWidth": 80, "tabWidth": 2, "trailingComma": "all", "singleQuote": true, "arrowParens": "always", "useTabs": false, "semi": true }, "devDependencies": { "apply": "^0.2.15" }}执行上面的操作,咱们会的到 my-vue-app 文件。 # npm 6.xnpm init @vitejs/app my-vue-app --template vue拿到了以后命令生成的后果之后咱们把以后生成文件拷贝到 vite-preset 根目录下的 templates 中(即 templates/vite ) 文件夹下。 ...

May 21, 2021 · 3 min · jiezi

关于构建工具:vuecli-迁移-vite2-实践小结

两周前(202.02.17),vite2.0 公布了,作为应用了浏览器原生 ESM 为下一代前端工具,vite 2.0 相较于 1.0 更加成熟。在此之前笔者就开始关注这类「新型」的前端工具。这次趁着 vite 2.0 公布,也胜利将一个基于 vue-cli(-service) + vue2 的已有我的项目进行了迁徙。 迁徙工作比较顺利,花了不到半天工夫。但整个迁徙过程中也遇到了一些小问题,这里汇总一下,也不便遇到相似问题的敌人一起交换和参考。 我的项目背景在介绍具体迁徙工作前,先简略介绍下我的项目状况。目前该我的项目上线不到一年,不太有构建相干的历史遗留债权。我的项目蕴含 1897 个模块文件(包含 node\_modules 中模块),应用了 vue2 + vuex + typescript 的技术栈,构建工具应用的是 vue-cli(webpack)。算是一套比拟规范的 vue 技术栈。因为是外部零碎,我的项目对兼容性的要求较低,用户根本都应用较新的 Chrome 浏览器(少部分应用 Safari)。 迁徙工作上面具体来说下迁徙中都做了哪些解决。 1、配置文件首先须要装置 vite 并创立 vite 的配置文件。 npm i -D vitevue-cli-service 中应用 vue.config.js 作为配置文件;而 vite 则默认会须要创立一个 vite.config.ts 来作为配置文件。根底的配置文件很简略: import { defineConfig } from 'vite';export default defineConfig({ plugins: [ // ... ],})创立该配置文件,之前的 vue.config.js 就不再应用了。 2、入口与 HTML 文件在 vite 中也须要指定入口文件。但和 webpack 不同,在 vite 中不是指定 js/ts 作为入口,而是指定理论的 HTML 文件作为入口。 ...

March 9, 2021 · 4 min · jiezi