其他
当容器应用越发广泛,我们又该如何监测容器?
1
为什么我们需要容器监测
主机服务器; 容器运行时; Orchestrator 控制平面; 中间件依赖; 在容器内运行的应用程序。
及早发现问题,以避免系统中断; 跨云环境分析容器健康状况; 识别分配过多/不足的可用资源的集群,调整应用程序以获得更好性能; 创建智能警报,提高报警精准率,避免误报; 借助监测数据进行优化,获得最佳系统性能,降低运营成本。
无侵入性:监测SDK或者探针集成到业务代码是否存在侵入性,影响业务稳定下;
整体性:是否可以观测整个应用程序在业务和技术平台方面的表现;
多源性:是否可以从不同数据源获取相关指标和日志集进行汇总显示、分析和警报;
便捷性:是否可以关联事件和日志,发现异常并主被动地排除故障并降低损失,相关告警策略配置是否便捷。
存在影响业务稳定性的未知风险,监测服务是否可以做到“无痕”。监测过程本身是否影响系统正常运作。
开源或自研的人力/时间投入难以预计,关联组件或资源需要自行配置或搭建,缺乏相应支持与服务,随着业务不断变化,是否可能耗费更多人力及时间成本。且面对大规模场景下性能问题,开源或企业自有团队是否可以快速应对。
2
阿里云 Kubernetes 监测:让容器集群监测更直观、更简单
代码无侵入:通过旁路技术,无需代码埋点,即可获取到网络性能数据。 多语言支持:通过内核层进行网络协议解析,支持任意语言及框架。 低耗高性能:基于 eBPF 技术,以极低消耗获取网络性能数据。 资源自动拓扑:通过网络拓扑,资源拓扑展示相关资源的关联情况。 数据多维展现:支持可观测的各种类型数据(监测指标、链路、日志和事件)。 打造关联闭环:完整关联架构层、应用层、容器运行层、容器管控层、基础资源层相关可观测数据。
数据量无上限:指标、链路、日志等数据独立存储,借助云存储能力确保低成本大容量存储。
资源高效关联交互:通过监测网络请求,完整构建网络拓扑,便于查看服务依赖状态,提升运维效率。除了网络拓扑之外,3D 拓扑功能支持同时查看网络拓扑和资源拓扑,提升问题定位速度。
多样化数据组合:指标、链路、日志等数据可视化展示并自由组合,挖掘运维优化点。
构建完整监测体系:与应用实时监测服务的其他子产品,共同构建完整监测体系。应用监测关注应用语言运行时、应用框架与业务代码;Kubernetes 监测关注容器化应用的容器运行时、容器管控层与系统调用,两个监测均服务于应用,关注应用的不同层次,两个产品互为补充。Prometheus 是指标采集,存储,查询的基础设施,应用监测与 Kubernetes 监测的指标类数据均依赖 Prometheus。
通过 Kubernetes 监测的系统默认或者自定义巡检规则,发现节点,服务与工作负载的异常。Kubernetes 监测从性能、资源、管控三个维度对节点、服务与工作负载进行异常巡检,将分析结果直观地通过正常、警告、严重等状态配合特定颜色进行展示,帮助运维人员直观感知用户节点,服务与工作负载运行状态。
使用 Kubernetes 监测定位服务与工作负载响应失败根因,Kubernetes 监测通过分析网络协议对失败请求进行明细存储,利用失败请求指标关联的失败请求明细定位失败原因。
使用 Kubernetes 监测定位服务与工作负载响应慢根因,Kubernetes 监测通过抓取网络链路关键路径的指标,查看 DNS 解析性能,TCP 重传率,网络包 rtt 等指标。利用网络链路关键路径的指标定位响应慢的原因,进而优化相关服务。
使用 Kubernetes 监测探索应用架构,发现预期外的网络流量。Kubernetes 监测支持查看全局流量构建起来的拓扑大图,支持配置静态端口标识特定服务。利用拓扑图直观强大的交互进行应用架构探索,验证流量是否符合预期,架构形态是否合理。
使用 Kubernetes 监测发现节点资源使用不均匀的问题,提前进行节点资源调配,降低业务运行风险。