首页 文章 精选 留言 我的

精选列表

搜索[HTTP/2],共10000篇文章
优秀的个人博客,低调大师

Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

本文介绍两个可行的K8s监控方案:Prometheus和Sensu。两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能、定位故障、接收预警。 拓展阅读:Kubernetes监控实践(1):K8s的工作原理与监控实践 一、K8s监控之Prometheus 1.1 简介 Prometheus是针对容器和微服务的开源监控预警工具,功能稳健,适用于开发流程中的云端管理员和开发人员等各个相关方。Prometheus定时聚合配置对象中的指标数据,评估规则表达式,展示结果,发送预警。 Prometheus不仅能够监控预定义指标,还能实现多维数据模型,进行深度分析,并针对多个指标建立关联,从多个角度为开发人员和管理员提供数据支持。 1.2 工作原理 Prometheus是K8s环境的附加层。首次安装时应定义数据采集参数和数据采集时间间隔。Prometheus既能实时监控K8s节点,也能对监控数据进行定时分析。Prometheus也可以针对节点失效等故障发送预警。 1.3 Prometheus Operator 很多用户会混淆controller和operator。K8s Operator是指Controller向K8s API中添加新的对象、配置管理Prometheus等应用的模式。简而言之,operator是针对特定领域的controller。 PrometheusOperator简化了Prometheus在K8s中的运行,不需要改变K8s的配置。使用Prometheus Operator可以轻松监控K8s的服务。可以通过预定义的.yml文件运行Prometheus。Prometheus Operator能够创建、配置并管理K8s上的所有监控实例。部署新应用时,K8s会创建新的pod(容器)。创建完毕后,原有pod会被销毁。Prometheus持续监控API,如发现不一致,则基于服务或pod变化创建新的Prometheus配置。 1.4 核心组件 作为一款稳健的监控工具,Prometheus从服务上拉取数据,不需要服务主动推送数据。不过Prometheus提供推送入口,但无法拉取数据时可以接受服务推送上来的数据。 此外,Prometheus支持将时间序列与指标名称和键值对关联起来,简化了对多云端的监控。Prometheus不仅监控应用全局,还能钻取到微服务层面。用户可通过查询功能管理数据,了解应用状况;也可以使用PromQL创建图表和表格,实现数据可视化,并根据具体参数生成预警。 Prometheus的Web控制台展示了所有功能和工具。用户可通过正则表达式和高级PromQL检索条件创建数据集和预警。Prometheus还支持外网访问。 1.5 优势 Prometheus最大的优势在于简单灵活,可以实现监控的多维数据模型。用户可以轻松搭建容器集群的监控框架,还可以结合Grafana,进一步提高监控数据的可视化水平。 Prometheus可以通过K8s的本地服务发现配置采集node、pod和服务指标。用户可直接定义表达式,创建预警,不需要在不同的监控系统中来回切换。 Prometheus的抓取能力能够集成到K8s、Docker和StatsD等工具中。用户还可以通过Web GUI配置预警、管理图表。 不过Prometheus也存在不足:数据模型受限。Prometheus默认的时序数据采集模型有利有弊:一方面,这种模型有助于按照标准格式采集数据;另一方面,标准化数据格式导致数据模型受限。Prometheus通过discovery机制与K8s保持通信,因此存在延迟。 二、K8s监控之Sensu 2.1 简介 Sensu是多云端容器基础设施监控工具。Sensu agent是跨平台事件生成器,用户可通过执行service check监控系统和服务的健康状况,同时采集分析metrics,不仅提供预警或事件管理功能、监控API、客户端库以及多脚本或编程语言插件,还支持自定义工作流,丰富了Sensu能力。 Prometheus通过拉取的方式主动抓取数据,而Sensu则采用消息总线的通信机制,通过发布/订阅(Pub/Sub)的方式推送或拉取数据。 2.2 工作原理 Sensu使用本地插件从StatsD库、Prometheus exporter、Nagios插件、SNMP陷阱等主流程序中采集数据。不同于Prometheus等其他监控工具,Sensu开箱即用,支持多云端环境,用户配置框架后即可提供高可用性。 Sensu提供event filter、mutator和operator handler,支持创建并自动化模型工作量。这样,外部监控工具的数据便可与Sensu的监控数据整合,形成基于事件的监控路径。 2.3 核心组件 Sensu针对K8s容器优化了自动发现能力。用户可针对K8s和Docker等容器环境轻松配置监控check和collector,也可以针对K8s所有组件和运行在K8s上的应用配置多个check。 Sensu也支持本地集成和插件,可以与日志工具和Prometheus同时使用。用户可同时运行Sensu和Prometheus,处理不同的数据集。Sensu可以采集StatsD metrics,并将采集结果写入Prometheus。 Sensu还能在K8s环境中运行。假设一开始将Sensu部署在某个容器中,后来决定将整个应用迁移到其他容器环境中。迁移完成后,Sensu agent依然能够在新的环境中正常运行,也能被Sensu发现,因为Sensu具备自动发现机制。 2.4 在K8s中的应用 Sensu可扩展性强,可随着部署应用和云环境的增加不断扩展,提供具体的功能监控服务。Sensu监控对象的数量没有上限,也不会因为监控对象的增加变得更加复杂。 三、K8s监控之Sensu+Prometheus 同时运行Sensu和Prometheus能够提高监控的可见性,实现各自功能的优势互补。 3.1 工作原理 SensuPrometheus Collector是Sensu Check插件,聚合从Prometheus exporter或Prometheus query API抓取的数据。采集的数据以Influx(默认)、Graphite、JSON格式存储在STDOUT中。 SensuPrometheus Collector集成了Sensu的工作量自动化能力和Prometheus的数据抓取能力。用户可根据需求自行设计实现代码和预警接收时间。Sensu还可以将采集到的metrics数据存储到InfluxDB、Graphite和Prometheus等外部时序数据集中。 3.2 安装Sensu PrometheusCollector 用户可以通过Sensu的资产索引库Bonsai发现、下载、共享资产。点击Bonsai信息页面的下载按钮,下载Sensu后端平台和架构的资产定义。收到check、filter、mutator或handler请求时,Sensu会根据资产定义下载验证资产。 下载资产定义后,可以通过Sensu的资源管理命令行工具sensuctl进行资产注册,然后创建监控工作流。 下方是Prometheus collector的资产定义及相应的Linux sensuctl命令: 下方为Prometheus Collector的check实例: 3.3 优势 同时运行Sensu和Prometheus具有下列优势: 既能监控K8s集群的健康状况又能动态监控周边基础设施的健康状况,并采集相关指标。 既能实现问题自动发现,又能通过自动化工作流简化监控流程。 同时运行Prometheus和Sensu能够获得更多上下文信息,实现更细粒度的数据抓取分析。 Sensu采用标准通信密码,可通过单个agent安全采集传输数据。 便于管理配置监控设置。 能够监控整个基础设施。 四、结论 Sensu能够监控整个基础设施,且定制化水平高,上下文更丰富。Prometheus模型稳健,能够实现深度数据钻取;Sensu则采用行业标准技术和格式(如Nagios和StatsD),监控整个基础设施。Sensu能够与Prometheus相互补充,提供更加丰富的上下文信息。 随着我们对软件依赖程度的加深,软件的可用性和故障修复时间对企业的存活非常重要。因此,只有充分了解系统才能克服这些挑战,基础设施和应用监控正是关键的一环。要想充分利用K8s的能力,必须实施统一的监控解决方案,实现新老技术的有效衔接。 本篇为译文,原文作者:STEFAN THORPE 原文链接:https://dzone.com/refcardz/monitoring-kubernetes 译文首发于UAVStack智能运维

优秀的个人博客,低调大师

(2) 基于领域分析设计的架构规范-领域分析基础

本系列目录: 改变与优势 领域分析基础 读写隔离 充血模型之实体 充血模型之Service 关于重构与落地 由于整个架构规范很大程度上是基于领域驱动设计(Domain Driven Design,DDD)的思维,所以,有必要在这里和大家先介绍一下DDD的一些概念。 领域聚合 让我们用一个相对简单的小电商系统来举例,来说明几个概念,这个电商系统的大概需求如下 我们主营的商品是甜品,计划让用户能过通过微信小程序来完成下单到支付的整个流程 用户能够在我们的小程序主页选择甜品主食,然后选择详细的一些辅料搭配,最终下单,(为了简化,暂不考虑购物车,也就是一单只有一个甜品) 目前只允许堂食,不考虑配送 对了,我们偶尔还会需要派发一些优惠券,用户能在支付的时候输入优惠券进行抵扣(一次最多用一张) 我们想能够记录好每个用户从下单,支付,到制作完成的整个流程记录 然后,我们能够很快得出这样一个模型图 简单来说就是: 一个用户可以创建多个订单,当然也可以不下单 一个订单会产生至少一条订单变更记录(从创建开始) 一个订单只对应一种商品,假定商品的“辅料搭配”只作为一个“备注”属性存储到商品 一个订单最多使用一张优惠券,而优惠券,当时可以一直不被使用 如果这个时候问你 你觉得那两个模型类的相互关系是最紧密的呢? 相信几乎大家对这个答案没有异议 可能你这时说不上来原因,但至少从直觉来看,大家都会这么选择,而且确实也是如此 因为这是一个聚合——订单聚合。 他们的关系很紧密,有多紧密?如果一定要挑一个最重要的因素来说,就是:订单变更记录不能离开订单而单独存在。对,他们必须在一起,而且订单是中心,变更记录是它的旁支。如果订单不存在了,或者不指定某一个订单,那么这个变更记录则毫无意义。 其中,Order被称之为聚合根(Aggregate Root),或者根实体(Root Entity)。所有的行为都从订单出发,而类似订单变更记录这种非根实体,则不直接与外界打交道。 那优惠券呢?优惠券不也只能用于订单吗?它不应该属于"订单的优惠券”吗? 并不会,因为优惠券可以停留在不被使用的状态,在那时,它是脱离订单而存在的,而且我们可以在不需要外界任何其他领域的情况下,直接对优惠券进行一些设置修改,这也说明了,它是一个独立的领域,或者说独立的聚合存在 至于分析出来的目的,在充血模型一章我们再详细说明。 分层模型 下图为《领域驱动设计》中所提到的分层架构 关于原书对四层的介绍,我在这里先不原文复述了,我以我的理解(或疑问),分别挑选重点进行介绍: 用户界面层 其实这里有些困惑,我不知道作者是否将前端应用也包含进来。如果没有,那么这里可能就类似我们说的网关,或者路由配置层之类。不过总之,这里并不是领域分析的重点。 应用层 这是一个和领域层的界限相对模糊的一层。在原书中,这一层的描述是这样: 定义软件可以完成的工作....它不包含处理业务规则或知识,只是给下一层中相互协作的领域对象协调任务、委托工作。 “定义软件可以完成的工作”,我们可以理解这是一个应用服务的入口,一个功能单元,一个API,那么,以SpringMVC为例,那么我们开发时入口是什么?自然是@Controller,如果需要事务支持,就在这里加上@Transactional也没问题,千万不要认为事务不加在@Service上就感觉怪怪的,没什么好奇怪的,要摆脱这种思维惯性。 “它不包含处理业务规则或知识”,并非完全“和业务无关”。广义上来说,连一个商业项目的整个架构都是为业务来服务,就算是遵循了“开闭原则”,保证了“扩展性”,依旧是以业务方向做主导。所以,应用层也会涉及业务,但是却非“核心逻辑”。那如何界定?我目前也没有想到一个可以简单描述出来的说法,只是做了一些相对简单粗暴的规定:如果这个功能要求用到一些公共的组件,诸如文件上传下载,EXCEL/WORD等文件解析等明显是工具型做法,一般来说都能放在这一层。 领域层 核心业务逻辑,之后我们讨论的主要内容都在这一层。 基础设施层 持久化读写,公共组件如上面提到的文件下载工具等,还有比如RPC的框架组件等等,都属于此层。这一层可以被上面的任何一层直接调用 所有层允许调用下方层,反之则不然 下一篇:读写隔离

优秀的个人博客,低调大师

Spring Boot 2.x基础教程:工程结构推荐

Spring Boot框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减少可能会遇见的坑,尤其是Spring包扫描机制的存在,如果您使用最佳实践的工程结构,可以免去不少特殊的配置工作。 典型示例 以下结构是比较推荐的package组织方式: com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web | +- C

优秀的个人博客,低调大师

书籍:Learning Python for Forensics 2nd Edition - 2019.pdf

简介 使用Python设计,开发和部署创新的取证解决方案 参考资料 下载:https://itbooks.pipipan.com/fs/18113597-356668006 python测试开发项目实战-目录 本文涉及的python测试开发库 谢谢点赞! 本文相关海量书籍下载 2018最佳人工智能机器学习工具书及下载(持续更新) Format Pdf Page Count 661 Pages https://github.com/PacktPublishing/Learning-Python-for-Forensics-Second-Edition 主要特点 了解如何开发Python脚本以进行有效的数字取证分析 掌握使用Python库解析复杂数据结构的技能 通过开发实用的Python脚本解决取证挑战 图书说明 数字取证在解决复杂的网络犯罪和帮助组织理解网络安全

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册