月度归档:2019年02月

FaaS选择标准:对多声道的小欲望

简单,快速的开发是人们对功能即服务(FaaS)的期望。根据我们的调查,71%使用无服务器架构的人表示,在考虑FaaS产品时,易于开发非常重要。

55%的受访者表示,在查看FaaS时,获得其主要云提供商的支持非常重要。相比之下,认为云不可知论的33%是非常重要的,并且您意识到在选择产品时,多声道几乎是事后的想法。在我们看来,这证明无服务器不会在多声道的祭坛上崇拜。

我们之前关于托管和可安装平台的文章显示了实际首选的解决方案。虽然AWS Lambda具有广泛的领先优势,但许多Azure和Google客户都渴望使用其主要云提供商的FaaS产品。我们认为,不必更换云提供商就可以让很多人无法轻松使用,因为人们可以开始使用FaaS。与用户的CI / CD管道集成同样重要。

无服务器不会在多声道的祭坛上崇拜。

不太重要的是与IDE集成,表明开发人员在创建无服务器应用程序时不需要全面的开发环境。此外,对预写功能的需求很少,因为只有16%的人表示在选择FaaS解决方案时非常重要。鉴于这些发现,我们认为云提供商不会根据专注于其FaaS产品的新产品开发工作获得许多新客户。

正如我们的“ 无服务器技术指南 ”电子书中所报告的那样,灵活扩展,节省资源成本和开发速度是人们在软件开发生命周期中看到无服务器的最积极的好处。在所有关于可移植性(跨云环境)的问题中,最不可能被引用。实际上,当用户被问及无服务器架构何时不足时,最常引用可移植性。

随着无服务器用户通过开发速度和扩展灵活性获得收益,正在牺牲可移植性和控制。

安防视频监控相关网站

行业网站
CPS中安网 慧聪安防网 安防知识网 a&s OFweek安防网
设计师安防行业 C114安防网 安防行业网 IHS Surveillance Technology
品牌
海康 大华 宇视 科达 天地伟业
人工智能 旷视 商汤 云从 依图 深醒
行业组织
ONVIF HDcctv Alliance Zigbee PSIA Z-Wave
国际标准化组织(ISO) 电气和电子工程师协会(IEEE)
国际电信联盟(ITU) 美国国家标准协会(ANSI)
美国电子工业协会(EIA) 互联网工程任务组(IETF)
电影电视工程师协会(SMPTE) 视频电子标准协会(VESA)
动态图像专家组(MPEG) 视频质量知觉评估(PEVQ)
视频质量专家组(VQEG) 美国安全工业协会(SIA)
职能部门
公安部检测中心 公安部一所 公安部三所
全国安全防范报警系统标准化技术委员会(TC100) 中国国家标准化管理委员会(SAC)
sensor
SONY OmniVision SmartSens(思特威)
格科 PIXART(原相) SOI(晶相)
Aptina Panasonic(松下)
DSP/SOC
海思 安霸 国科 Mstar(晨星)
智源(升迈) 安凯 君正 Fullhan(富瀚)
AHD(Nextchip) CVI(大华) TVI(Techpoint)
模组方案厂家
雄迈 中维(尚维) 天视通 安佳威视
巨龙 艾普视达 瀚晖 捷高
安舜视
消费类摄像机
技威(yoosee,有看头) 九安(VR cam) V380
雄迈(超级看看/iCsee) 普维(小末/IPC360)
萤石(海康) 乐橙(大华)
存储 存储在线

常见网络摄像机默认使用的端口,RTSP地址等

常见网络摄像机默认使用的端口




常见网络摄像机的rtsp地址及相关API


常见的视频分辨率



网络摄像机常见的智能功能

随着安防芯片技术提升,各种智能算法越来越多,也越来越普及。下面是常见的一些安防摄像机的智能功能。

音频异常侦测


支持音频异常侦测的摄像机,通过设置音频异常侦测,可在音频异常时进行报警。摄像机带有音频功能,接入拾音器。一般支持音频输入异常,或者声音陡降或者陡升。

虚焦侦测


虚焦侦测可侦测网络摄像机显示的图像是否清晰,并做相应的报警联动。比如在视频图像上显示镜头失焦。

场景变更侦测


场景变更侦测功能用于侦测监控场景是否发生变更,并做出相应报警联动。

人脸侦测


人脸侦测功能可用于侦测视频画面中出现的人脸,并标记出来,或者单独存储。

 

人脸比对


(拌线)区域入侵侦测


(拌线)区域入侵侦测功能可以侦测视频中是否有物体进入到设置的区域,根据判读结果联动报警。

越界侦测


越界侦测功能用于检测是否有物体跨越设置的警戒面,根据判断结果联动报警。

进入区域侦测


进入区域侦测功能用于侦测是否有物体进入设置的警戒区域,根据判断结果联动报警。

离开区域侦测


离开区域侦测功能用于侦测是否有物体离开设置的警戒区域,根据判断结果联动报警。

徘徊侦测


徘徊侦测功能可侦测目标在规则区域内徘徊并超过设定的时间阀值后,根据判断结果联动报警。

人员聚集侦测


人员聚集侦测功能可侦测在设定的区域内的人员的密度超过设定的阀值后,根据判断结果报警联动。

快速移动侦测


快速移动侦测功能对非法追跑,道路超速等现象进行事件监测,对快速移动的现象进行监测。当发生快速移动时设备发出报警,通知布防主机有快速移动现象产生,使相关人员可以提前预警。

停车侦测


停车侦测功能用于检测所设置区域的非法停车现象,该功能使用于高速,单行道等道路上的非法停车检测。

物品遗留侦测


物品遗留侦测功能用于检测所设置的特定区域内是否有物品遗留,当发现有物品遗留时,相关人员可快速对遗留的物品进行处理。

物品拿取侦测


物品拿取侦测功能用于检测所设置的特定区域内是否有物品被拿取,当发现有物品被拿取时,相关人员可快速对意外采取措施,降低损失。物品拿取侦测常用于博物馆等需要对物品进行监控的场景。

防破坏侦测


防破坏报警功能可实时检测设备自身运动时出现震动异常产生报警联动,或者受到外界晃动或破坏时,自动产生报警联动。

人数计数(热点图)


过线计数用于监控及统计指定区域内目标进入和离开的数据信息。过线计数功能可广泛应用于出口,入口等物体流动量较大的地方。

道路监控


道路监控功能可实现对城市道路上的机动车或非机动车与行人迅速排查和全方位监控。

移动侦测


移动侦测功能可实现对指定区域移动物体的检测,判断,实现联动报警功能。

视频遮挡侦测


视频遮挡侦测功能可监测视频画面是否被遮挡,实现报警联动。

自动追踪


当有物体触发追踪规则时,设备将自动追踪该目标。

安防视频监控P2P穿透原理及解决方案

近年来,随着网络带宽、计算机处理能力,芯片技术水平的提升以及存储容量的迅速提高,以及各种视频智能分析技术的出现,视频监控系统的优势愈发明显,其高度的开放性、集成性和灵活性为视频监控系统和设备的整体性能提升创造了必要的条件,同时为整个安防产业的发展提供了更加广阔的发展空间。然而,目前国内网络环境比较复杂,运营商众多,同时各单位内部网络结构较为复杂、公网静态IP地址有限等因素限制了采用IP直连方式来连接设备功能的实现,外网访问变得困难。同时采用传统动态域名解析(DDNS)方式,配置复杂,成功率低。随着消费类摄像机以及智能手机的普及,如何更好,更方便的远程访问摄像机视频成为行业重要的一个需求。摄像机能否支持远程访问,支持手机访问,P2P穿透的解决方案是其中最重要的一个要素。

P2P访问的工作原理


P2P穿透即点对点穿透(peer to peer),是指前端设备通过一定的处理方式后,主动与请求客户端直接建立连接发送媒体流。

当前安防视频监控系统中的P2P主要工作原理是在前端设备中移植进一个P2P穿透辅助程序,P2P穿透辅助程序将向服务器注册该设备,服务器也可以由此来识别设备是否在线。同时P2P穿透辅助程序将与服务器进行必要的信息交换来实现网络分析和连接建立功能。

摄像机P2P穿透的工作原理如下所示:

P2P访问的核心是NAT穿越


NAT的穿越并非安防监控领域的技术,是目前VOIP以及即时通信等产品的基础性技术,目前来讲已经比较成熟,且有完整的技术标准RFC,同时也有众多的实现方案,包括许多已经得到广泛应用的开源项目。

简单来讲,实现NAT的穿越是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接近100%,TCP则存在一些情况无法实现穿越,主要受限路由器的端口映射机制。

要实现NAT穿越,需要有穿越控制服务器部署在互联网(有固定的域名或者IP),由该服务器来协助网络摄像机和客户端来实现NAT穿越。有些服务器还能在TCP不能穿越的情况下,实现RELAY(数据中继转发)的功能,以确保二者之间能实现数据通信。

由于NAT穿越控制服务器不同于安防监控系统中的媒体转发服务器,主要进行信令交互,不转发媒体数据,在协助打通数据通道之后,对应的网络摄像机和客户端就不会再占用服务器带宽和处理能力了,因此一台穿越控制服务器可以接入数量庞大的网络摄像机和客户端(例如有P2P方案厂家宣传在全球部署超过50台服务器,接入了超过1000万台设备。)。

网络摄像机和客户端之间的访问机制

通常网络摄像机都有唯一ID,并通过该ID注册到穿越控制服务器。客户端要访问对应的网络摄像机时,也需要先注册到穿越控制服务器,并提交对应 网络摄像机的ID,由穿越控制服务器查找对应的网络摄像机,并协助网络摄像机和客户端之间进行NAT穿越,最后打通一个点对点的数据传输通道。之后,二者 即可进行正常的媒体和信令交互了。

为实现更加有效的管理,服务器可对设备接入进行认证。此外,如果设备ID过长,也可以为设备建立别名,客户端访问时用设备别名作为参数,服务器来查找对应设备。

数据传输机制

网络摄像机和客户端之间的数据传递包括有媒体流,信令流等。信令流数据量较小,媒体流数据量加大,而且需要有较好的实时性。

如果媒体流和信令流分开传输,需要打通多个通道,增加了复杂性和出错可能,同时增加了服务器的负担。

前面也讲过,UDP协议能有比较好的NAT穿透性,也比较适合媒体流的传输,但可靠性较差,不宜传输信令。为减轻服务器负担(避免TCP无法穿 透需要转发),提高穿透成功率,建议只打通一个UDP通道,利用该UDP通道封装媒体和信令流,在应用层加以区分,哪些是媒体流,那些是信令流。

由于UDP传输信令可靠性极差,即使是传输媒体数据,在互联网环境下肯定会出现丢包的情况,仍然会出现图像花屏或者解码出错的情况,因此必须要解决此问题。

好在利用UDP协议进行可靠的数据传输的需求早就存在,并有了比较好的解决方案,那就是通过UDP协议在应用层实现数据的缓冲,序列化,重传,可靠性控制和拥塞控制。

如果上述三个问题都已解决,则网络视频监控的P2P方案已经基本实现,剩下的就是产品化的问题。

目前P2P方式远程访问摄像机,有3种主要方式。电脑PC网页端访问,PC电脑客户端访问,手机app访问。

PC访问网络摄像机。

PC访问网络摄像机,可以先访问一个网页,传入网络摄像机的序列号。

网页加载一个控件,该控件通过NAT穿越控制服务器和该序列号对应的网络摄像机实现NAT穿透后,通过可靠的UDP传输信令和媒体数据。控件提供视频浏览,对讲,云台控制,参数查询设置等功能。

如果用PC客户端访问,则不需要加载控件,只需要输入网络摄像机对应的系列号。

手机访问网络摄像机。

手机由于平台的不同,需要单独开发对应的客户端或者插件以实现和PC访问类似功能。但原理是一样的,都需要通过NAT穿越控制服务器和该序列号对应的网络摄像机实现NAT穿透后,通过可靠的UDP传输信令和媒体数据。由于开源的NAT穿越库是可以移植的,在LINUX,WINCE,IOS,Android,Sbrian等都可以实现同样的NAT穿越功能。

P2P穿透限制


1.由于P2P穿透成功后是设备与客户端2者直接进行通信的,因此,访问设备的数量会影响用户的观看体验。不同的厂商对于设备的访问限制处理都不一致:有的厂商是做了访问数量限制,限制访问数为1-3个,那边前3个用户访问设备时可以进行实时预览操作。而超过这个数量的用户将无法进行实时预览,这样的操作是为了保护每个访问设备的用户都可以正常的观看到设备图像,保证图像质量。

2.P2P穿透的成功率。一般来说,P2P穿透不可能100%成功。有些厂家给出的是95%99%90%等等的穿透成功率。在穿透不成功的情况下,可以采用流媒体转发的方式来访问摄像机。这样对中间流媒体转发平台要求就比较高了,有些厂商为了节省服务器及带宽资源,对通过转发访问的方式做了些限制,例如通过转发只能访问摄像机的子码流。

P2P穿透访问应用


下图是某个P2P方案商的P2P平台运用



常见的P2P物联网平台


常见的智能摄像头P2P平台

HTTP / 3用UDP替换TCP以提高网络速度,可靠性

为站点和服务获得HTTP / 2的性能和安全性优势意味着进行体系结构更改,因为它颠覆了用于提高网站性能的分片等原则; 这可能就是为什么只有大约35%的网站目前使用HTTP / 2。

HTTP / 3加倍,提供非常相似的功能,但用UDP替换TCP。这一次可能需要对网络基础设施进行更根本的改变,以便利用比较差的连接和移动网络更好的性能,但对于大多数开发人员来说,这种改变将是透明的。

HTTP / 3是该协议的第三个主要版本,它包括TLS 1.3和一种称为QUIC(Quick UDP Internet Connection)的新传输协议; 根据最初由Google设计的2013协议,现在有多个贡献者和公司通过互联网工程任务组(IETF)参与其中

不可靠是一个机会

放弃HTTP一直用于UDP的TCP连接并不像看起来那么奇怪。U有时会扩展为“不可靠”而不是用户数据报协议,因为它不保证消息传递或数据包顺序。但是对于今天的网络,这实际上是一个提高HTTP / 2引入的多路复用连接性能的机会。“凭借HTTP / 3,我们将在同一个旧的不可靠互联网之上构建一个新的可靠协议,” Cloudflare首席技术官John Graham-Cumming告诉New Stack。

HTTP / 2通过在同一连接上发送多个HTTP请求,允许应用程序同时处理请求,从而更好地利用网络带宽。但只有在网络运行良好时才能实现这些收益。“你可以最大限度地提高吞吐量和带宽,因为TCP可以达到它可以达到的最大速度,并且所有并行连接都能以最快的速度运行,”Graham-Cumming说。

这很好,直到网络连接出现打嗝,例如网络拥塞或移动网络上从一个小区移动到另一个小区并且数据包丢失。“TCP保证发送数据包的顺序是应用程序接收的顺序 – 所以如果你错过了,那么一切都必须停止,直到特定数据包被重新传输。如果将多个请求复用到单个TCP连接上,则所有这些请求都必须停止并等待,即使丢失的数据包可能只影响其中一个。

Graham-Cumming解释说,这种“线路阻塞问题”是TCP固有的问题,使用UDP通过允许应用程序控制数据包的重传来修复它。“它可以说’数据包丢失,但它只影响这一个数据流,而其他数据流可以继续运行’。”这使得QUIC 在恶劣的网络条件下更加强大

HTTP / 3的连接迁移提议可以扩展在不同网络之间移动的稳健性,例如从Wi-Fi到移动宽带,这通常会因为IP地址的变化而破坏网络连接。“通过此提议,您和服务器之间的标识符将不是IP地址,而是协议本身内的标识符。这样您就可以在新网络上自动重启整个连接,这样您就可以无缝地从Wi-Fi转移到移动连接。原始互联网的一些假设是,存在相当固定的连接,我们现在正在进入一个非常移动的异构世界。“

Graham-Cumming解释说,HTTP / 3还直接集成了TLS,QUIC对数据包传输的额外控制也具有优势。“当事情通过互联网发送时,它们会被分解成数据包; 在TLS中,有一个传输数据缓冲区的概念。如果你想要真正有效率,你想要把所有这些事情排好; 这是一个请求,我将对它进行加密并通过互联网进行传输,以便一次性收到所有这些请求,并且不会分成较小的数据包,其中一些不会被延迟。如果您控制所有级别,如果您只是假设互联网是一种不可靠的发送数据包的方式,那么您可以控制发送内容的顺序,您可以控制加密它们的方式以及这些加密块如何传输。“

与HTTP服务器的初始连接将更快,因为HTTP / 3取出了通常需要建立连接的往返之一安全解释说,Mozilla首席工程师Martin Thomson是QUIC规范的编辑之一。

“使用TCP和TLS,连接设置以TCP握手开始:客户端发送SYN,服务器响应SYN + ACK,客户端使用ACK完成。然后在发送任何请求之前有一个TLS握手 – 它需要另一个类似的三个消息交换。QUIC在大多数情况下将其压缩到单个交换。一个关键特性是0-RTT,允许客户端立即发送请求; 这是TCP和TLS的一个选项,但你仍然需要等待TCP握手完成。“

默认安全

集成TLS还可以提高安全性,因为身份验证和加密是由网络协议提供的,而不是像TLS这样的高级协议提供的 – 而且在HTTP / 3中内置了TLS,使用它也不是可选的。Graham-Cumming指出:“业界正试图在默认情况下保证一切安全。” 当站点使用HTTPS时,浏览器现在会在站点没有加密连接时向您发出警告,而不是显示锁定HTTP / 3和QUIC是这个方向的另一个举措。

“更多的QUIC是加密的,”汤姆森解释道。这包括攻击者可能尝试使用的元数据。“除了一些有助于将数据包识别为QUIC数据包的比特之外,未加密的QUIC数据包的唯一部分是连接的不透明标识符。这包括TCP和TLS无法保护的内容,例如确认(’我从你那里得到5个字节’)。“

Thomson还认为加密实际上将简化部署QUIC。将新协议部署到需要更新的防火墙,路由器,NAT和其他网络设备上的复杂性阻碍了在浏览器中  创建新的,更有效的传输协议和延迟采用TLS 1.3的努力“这是部署QUIC的可能性的一部分。互联网往往会干扰新的协议,加密将保护QUIC免受干扰。“

他坚持认为,这是UDP是一个不错的选择的另一个原因。“新的协议不能直接部署在IP之上,如TCP或UDP,因为这需要更新的互联网。考虑更换或升级每个想要使用此新协议的房屋中的每个路由器的前景。UDP在这种情况下是理想的,因为它做得很少。它非常轻巧,因此我们可以在顶部构建所有必要的部件。UDP的主要缺点是已经显示阻止或降级UDP的少量网络。在极少数情况下,我们有HTTP / 2可以依靠。“

当用户访问站点时,他们的初始连接将通过HTTP或HTTP / 2,服务器将提供HTTP / 3作为替代; 了解提供该连接的标头的浏览器将记住它以供下次访问,但较旧的浏览器和设备将继续使用旧协议。格雷厄姆 – 卡明预测说:“我们预计HTTP / 2和1.1将会存在很长时间。”

网络变化

HTTP / 3可能有它的名字,但它仍在开发中; Graham-Cumming表示,情况稳定前几个月。尽管有一些HTTP / 3端点可用于测试Cloudflare等服务,但Facebook和Litespeed 已经证明了  2018年11月的HTTP / 3实现之间的互操作性,浏览器和Web服务器还没有支持HTTP / 3(Chrome的实验支持除外)对于谷歌的原始版本的QUIC)。

一旦他们这样做,服务提供商和托管公司将遵循,但可能需要更新旧的网络设备。“对于UDP的NAT遍历并不像TCP那样发达,一些家庭路由设备会假设UDP用于流媒体视频,而不是网络,”Graham-Cumming说。

Thomson说,如果你托管自己的网络服务器,你还有更多工作要做。“服务器管理员会发现QUIC需要的不仅仅是软件升级。启用UDP将需要网络和负载平衡基础架构的新支持。“网络运营商可能需要研究可以在软件中实现的更智能的第4层负载平衡解决方案,如Facebook的Katran项目

但由于HTTP / 3旨在解决HTTP / 2的问题,因此对HTTP / 2进行的优化(如域分片的更改)将在可用时自动应用。如果是这样的话,Graham-Cumming希望它能够推动网络的发展。“我们希望的是更快的网络下载和API。它应该使互联网更加可靠和快速,并且希望对于开发者来说,我们可以获得更丰富的API和Web应用程序,因为我们可以通过这种新协议更多地依赖互联网。

https://thenewstack.io/http-3-replaces-tcp-with-udp-to-boost-network-speed-reliability/

Jenkins与持续交付的诸多问题

如果您使用软件,您可能已经意识到软件交付的实践在今天远非完美。查看我们上个月关于自世纪之交以来软件开发演变的文章,原因有些。在那篇文章中,我们解释了导致我们进入当今软件世界的道路,以及为什么这个世界可能达不到我们的期望。

这篇文章是我们关于进入詹金斯后世界的系列文章的第二篇。在这里,我们更详细地看一下流行的工具和流程,包括但不限于Jenkins,它们阻碍了我们从软件的必杀技。

我们喜欢詹金斯!

需要明确的是,我们并未将Jenkins视为当今软件交付领域的唯一问题。我们实际上认为詹金斯是一个很棒的工具。但是,Jenkins和其他持续集成(CI)服务器并不总是正确使用。软件交付团队倾向于在如何部署Jenkins和类似工具时犯错误。结果,他们采用低效的做法,削弱了他们获得或保持敏捷性的能力,并失去了采用最新技术创新所需的灵活性。

詹金斯的问题

最终,这些问题的根源不是来自特定工具,而是来自文化错误。

问题1:詹金斯插件太多了

插件不一定是坏事。实际上,当它们被正确使用时(这意味着将功能扩展到软件平台所需的核心功能之外),它们就是很好的资源。它们为用户提供了为他们使用的工具添加额外功能的选择,而不需要他们在不希望使用这些功能的情况下将资源专用于这些功能。

但对于Jenkins而言,插件不提供对可选功能的访问,这些功能超出了使用该平台所需的核心功能。相反,Jenkins要求团队使用插件来实现在许多情况下非常基本的任务。

例如,如果你想为Docker环境构建 – 这是一个非常常见的用例 – 你需要一个插件如果你想从GitHub(另一个非常常见的任务)拉,那么你需要一个插件如果您需要PAM支持,则需要一个插件。

可以肯定的是,Jenkins的1,500个插件中的许多都提供了并非每个人都需要的功能。它通过插件提供完美的意义,例如,PagerDuty或Azure存储兼容性,因为许多用户可能不需要这些功能。

但是你需要在Jenkins中插件来做任何事情都是有问题的 – 而且这不仅仅是因为它意味着软件交付团队必须花时间安装和配置它们才能开始工作。这里更大的问题是Jenkins的大多数插件都是由第三方编写的,质量各异,可能会在没有通知的情况下失去支持。

构建基于第三方插件的软件交付链并不是确保可用性或稳定性的好方法。

问题2:Jenkins不是为Docker时代而设计的

虽然CI服务器通常是现代DevOps会话的一部分(并且确实是DevOps工程师的许多重要工具之一),但它们实际上是一种相对古老的技术,可以追溯到2000年代中期 – 早在任何人想象容器之前和微服务作为软件部署的首选基础设施。

因此,传统的CI服务器无法帮助团队充分利用Docker容器等下一代基础架构。他们通过多个插件很笨拙地与Docker集成。实际上,Jenkins 在其名称中使用Docker的插件不少于14个许多用于特定供应商的Docker相关平台,但其中六个用于核心Docker平台。

从许多方面来说,Jenkins与大多数其他CI服务器一样,是在裸机服务器和虚拟机时代构建的。事实上它支持Docker支持。在越来越多的Docker本地环境中,这不是CI服务器运行的好方法。

问题3:Jenkins不能很好地支持微服务

就像Jenkins和大多数其他CI服务器诞生于Docker之前的时代一样,它们也在微服务变得流行之前出现。

当然,有些人在2000年代使用面向服务的架构(SOA),同时Jenkins首次使用。自20世纪80年代以来,微内核等概念就已存在。但是直到Docker出现并使微服务易于实现,实际上已经部署了很少的微服务平台。

所以你可能不会期望Jenkins能够很好地支持微服务 – 事实上,它并没有。Jenkins缺乏对同时集成和测试多个服务的支持。这是微服务环境的基本功能。

除非您计划投资多个管道的开销(每个微服务一个),Jenkins在帮助您开发下一代微服务应用程序方面做得很差。

问题4:CI!= CD

Jenkins和CI服务器的最大问题很可能是软件交付团队有时会将持续集成与持续交付(CD)混为一谈。

事实上,CI和CD是不同的东西。CI是CD流程的一部分,但要实现完整的CD – 这应该是任何旨在优化其工作流程的软件交付团队的目标 – 您需要的不仅仅是CI服务器。

CD还需要将自动释放自动化到您正在使用的环境中,无论是什么。它需要可以自动执行不属于CI服务器范围的软件交付任务的工具,例如步骤CD需要通信工具和渠道,以使软件交付团队能够无缝协作。

当组织设置CI服务器并立即考虑他们的软件交付现代化工作完成时,他们犯了一个大错误。

改变詹金斯世界的文化

为什么熟练的软件工程团队会犯这样的错误?这并不是因为他们没有智能或无法跟上最新的创新。

相反,问题在于错误的尝试模仿最大,最有效的软件交付操作,如谷歌和Netflix。这些组织着名地利用开源工具链和大型基础架构,构建令人难以置信的敏捷软件交付管道。

是什么使这些公司能够构建这些管道不仅仅是他们部署的工具,还有他们的文化。仅使用与Google相同的工具,您无法像Google一样高效。

较小的组织并不总是意识到这一点。只有当他们拥有正确的文化理念和流程时,他们才能克服像Jenkins这样的工具的局限性,并优化他们的软件交付管道。

没有工具链是完美的,但是当您实施正确的文化时,您可以实现完美的软件交付(或至少接近它)。

如果您的软件交付方法仍然只围绕Jenkins构建,那么您无疑会错失更好的机会。实现这些机会需要文化变革。在本系列的下一篇文章中,我们将研究具有前瞻性思维的公司如何将新工具与新的软件交付文化相结合,以超越我们长期努力解决的以Jenkins为中心的世界的低效率。

https://thenewstack.io/many-problems-jenkins-continuous-delivery/

打击警报疲劳:如何唤醒警报策略

如今,工程团队面临着保持系统平稳运行的必要性。这是因为企业与数字客户体验之间的界限正在缩小 – 当应用程序成为企业时,任何缺乏完美用户体验的东西都意味着要达到顶线。

在这种背景下,声音警报策略现在几乎对每个工程团队都至关重要。根据最近的一项调查,58%的DevOps专业人员报告依靠五个或更多可观察性工具来确定性能问题的根本原因,这意味着他们会针对每个问题对多个位置的数千个警报进行排序以找到答案。由于无法始终监控系统健康状况的各个方面,因此智能警报策略可以帮助团队更有效地运营,并将注意力集中在最需要的地方,从而保持业务平稳运行。

但设置警报并不总是像看起来那么简单。为了做到这一点,团队不仅要应对表面下方存在的庞大复杂性,还要对抗“警报疲劳”,或者在过于频繁时忽略通知的倾向。两种情况下的关键是在节奏和紧迫性之间取得适当的平衡。为了帮助您的团队建立更好的警报策略(并在晚上睡得更好),这里介绍我们如何应对Scalyr的挑战

警报结构

首先,关于结构的一个词。在最高级别,警报围绕三个关键支柱设计:指标(您要监控的绩效指标),比较报表(即“大于”,“小于”,“等于”)和阈值(关键值为您)想要比较指标)。

例如,要监视CPU使用率的意外峰值,可以设置以下警报:如果过去15分钟内的平均CPU使用率大于过去的24小时平均值,则触发警报。

阈值

创建警报时,通常可以通过建立阈值来启动。可以将三种类型应用于警报:固定,基于状态和历史。

固定阈值,顾名思义,当性能水平超过某个静态预定级别时触发警报。在测量具有硬限制的性能指标(如CPU使用率或硬盘空间)时,这些是设置和最佳工作的最简单阈值。

基于状态的阈值也简单明了。它们识别系统状态的变化 – 例如,“运行”或“停止” – 并且主要用于监视应用程序进程以发生意外停机。

历史门槛稍微复杂一些。也被称为“滑动窗口”,这些阈值将度量的当前值与其过去的值进行比较。换句话说,监视一个特定的时间段(例如15分钟的窗口),随着时钟滴答而继续移动。例如,基于历史阈值的警报可能显示为:如果15分钟的平均CPU使用率大于24小时前15分钟平均CPU使用率的120%,则触发警报。这里的想法是在滤除噪声的同时识别给定度量中的突然尖峰。

在此主题上,在设置警报时包含“宽限期”也很有用。换句话说,添加一个规则,防止警报被触发,除非它被触发持续一段时间。这有助于滤除小的像差并识别长期活动。

度量

一旦确定了阈值,就需要确定支持警报的指标。每种警报策略都需要涵盖五个关键指标类别:容量,带宽,状态,速率和事件参数指标。

容量指标监视具有固定和已知容量的系统组件,例如磁盘空间和可用内存。如果某些东西可以“填满”或“耗尽”,通常用容量指标来衡量。达到容量时,系统会中断,这意味着阈值应设置在最大容量以下。当击中容量的后果具有严重破坏性时,应将阈值设置得特别低。

带宽指标衡量系统内的流量。例如,网络利用率,CPU使用率和磁盘吞吐量。这种类型的系统活动本质上通常是高度可变的,因此请考虑将警报基于移动平均线。例如,您可以将其设置为测量30分钟窗口的平均使用量,而不是通过查看最新测量来监控网络使用情况。

状态度量标准具有用于监视系统状态更改的不同值,例如“正在运行”或“已停止”。这些系统状态度量标准通常与基于状态的阈值挂钩。

费率指标用于衡量某些事件发生的比率。换句话说,在特定时间段内发生的事件的数量。例如,“每秒请求数”,“每秒错误数”,“每分钟登录尝试数”等。对于可预测的指标,历史阈值最好。对于不太可预测的那些,将阈值基于历史高点或低点通常是一种合理的方法。

事件参数度量基于事件的某些可测量属性,例如响应时间或请求大小。该指标通常用于监控和报告某段时间内所有相关事件的平均值。您为事件参数指标设置的阈值与速率指标的阈值类似 – 使用可预测指标的历史阈值,以及不可预测指标的固定阈值。

通知

有了正确的警报阈值和指标,下一步就是构建一个系统,用于在出现问题时接收通知。这一步至关重要。您可以拥有世界上最好的警报参数,但如果警报没有到达您,它们将无法发挥作用。

现代DevOps环境提供了多种选择。例如,现在可以将警报存储在数据库中并通过电子邮件以每日批次,立即通过电子邮件发送,通过SMS或电话发送或其某种组合来发送。诀窍在于确定哪种交互模型最适合您的团队。

一般来说,紧急警报应该是设计中断的。他们需要立即引起你的注意并传达问题的紧迫性。出于这个原因,在相同的度量标准,不同的阈值和不同的通知方法上“堆叠”警报通常也是有意义的。这里的想法是随着问题变得更加紧迫而升级警报。

警报远远超出了眼睛。设置声音警报策略需要考虑三个关键支柱:阈值,指标和通知。随着应用程序正常运行时间成为每个企业的关键任务,现在花时间为您的应用程序环境和团队找出正确的组合可以发挥重要作用。

https://thenewstack.io/fight-alert-fatigue-how-to-wake-up-your-alerts-strategy/