原文: https://dzone.com/articles/to...
翻译: 祝坤荣
构建可伸缩与高可靠的软件系统是所有SRE的终极目标。跟着我们最近提供的博客给出的在监控,部署和运维领域的开源项目来进行持续学习。
想成为成功的SRE需要持续学习。现在有许多SRE/DevOps可使用的开源项目,每一种都是新的而让人兴奋的实现,其经常应对特定领域的挑战。这些开源项目帮你承担的重量让你可以干的更轻松些。除了这些开源项目,这里还有一个可以免费体验的持续学习平台。
1.CLoudprober
Cloudprober是一个聚焦于在你的客户发现前定位故障的主动追踪与监控的应用。它使用一种‘主动’的监控模型来对你运行的组件是否符合预期来进行检查。它主动运行探针,比如,确保你的前端可以访问你的后端。同样的,探针也可以用来确保你的系统可以到达你云上的虚机VM。这种追踪方式更简单,并与实现独立,跟踪你应用的配置来让你简单的发现系统中哪里出问题了。
特性:
- 与开源监控栈Prometheus和Grafana原生集成。Cloudprober也可以导出探针结果。
- 对于云上的目标,自动发现目标。对于GCE与Kubernetes可开箱即用;其他云服务也可以通过简单的配置来完成。
- 在部署上极简单。Cloudprober用Go编写并编译成一个可执行的二进制包。它可以快速通过Docker容器部署。对于更新,由于其自动发现基本上不需要重新部署和重配置Cloudprober。
- Cloudprober Docker镜像很小,只包含了一个静态编译后的二进制文件,它只需要很小的CPU和RAM来运行大数量的探针。
2. Cloud Operations Sandbox(Alpha)
Cloud Operations Sandbox(https://github.com/GoogleClou...)是一个让专家学习Google的SRE实践并通过Ops Management(之前的Stackdriver)来将其适配到他们自己云系统上的开源平台。它基于Hipster Shop,一个原生微服务的云上平台。记住:它需要一个Google云服务的账号。
特性:
- Demo Service - 设计上基于现代,云原生,微服务架构的一个应用。
- 一键部署 - 一个处理将服务部署到Google云平台的脚本。
- Load Generator - 在Demo Service上制造模拟流量的部分。
3.Kubernetes版本检查
一个让你观察目前运行集群中镜像版本的Kubernetes工具(https://github.com/jetstack/v...,This%20tool%20is%20currently%20experimental.)。这个工具可以让你在Grafana仪表盘上看到表格形式的当前镜像版本。
特性:
- 多个自部署的registries可以一次配好。
- 工具让你可以看到类似Prometheus指标的版本信息。
- 支持如ACR,DockerHub,ECR的registries。
4. Istio
Istio(https://istio.io/)是一个监控微服务间活动流量的开源框架,实现了策略,并使用标准方式聚合了遥测数据。Istio的控制面板提供了一个在管理底层集群Kubernetes之上的抽象层。
特性:
- 对于HTTP,gRPC,WebSocket,TCP流量的自动负载均衡。
- 有丰富的规则路由,重试,故障转移,失败注入等控制。
- 有可拔插的策略层与配置API来支持访问控制,限流与配额。
- 对于集群内的所有流量都能自动度量,日志和追踪,这也包括了在进入集群和出集群的流量。
- 通过强壮的识别验证与授权保证了在集群中有安全的服务到服务的通信。
5. Checkov
Checkov(https://www.checkov.io/)是一个基础设施即代码的静态代码review工具。它扫描Terraform,Cloud Details,Cubanet,Serverless,或者ARM模型的云基础设施,检查安全与错误配置。
特性:
- 超过400条内置的规则覆盖了AWS,Azure,Google云的最佳保护与安全实践。
- Terraform供应商配置可监控Terraform管理的IaaS,PaaS,或SaaS部署,维护和更新。
- 检测EC2 用户数据,Lambda上下文变量,Terraform供应商中的AWS身份信息。
6. Litmus
云原生的混沌工程(https://github.com/litmuschao...)
Limus是一个云原生的混沌工程工具箱。Litmus提供了在Kubernetes上编排混沌的工具,帮助SRE发现他们部署上的脆弱点。SRE先在预发环境进行混沌测试,并最终在部署环境发现故障和脆弱点。修复这些问题可改进系统的可用性。
特性:
- 开发者可以在应用部署时将其像运行单元测试或集成测试时一样来进行混沌测试。
- 对于CI流水线构建者:在流水线阶段运行滚吨测试来发现bug。
7. Locust
Locust(https://github.com/locustio/l...)是一个使用简单,可脚本化和灵活的性能测试应用。你的可以通过标准Python代码来定义你用户的行为,不需要用clunky UI或者领域特定语言。这让Locust在扩展性上很不错且开发者友好。
特性:
- Locust是分布式和可伸缩的 - 可以很容易的支持成百上千的用户。
- 其基于Web的UI可以展示实时的进度。
- 只要一点改动就可以测试任何系统。
8. Prometheus
Prometheus(https://github.com/prometheus...,一个云原生基金会项目,是系统和服务的监控系统。它从配置好的目标位置抽取度量信息并显示结果。如果查询信息冲突了,它会触发通知。
特性:
- 一种多维度的数据模型(通过指标名称定义的时间序列和键值对集合的维度)
- 目标是通过服务发现或静态配置来发现的。
- 对于分布式存储没有依赖;单服务节点也可以。
- PromQL,一个强大和灵活的查询语言
9. Kube-monkey
Kube-monkey(https://github.com/asobti/kub...是Netflix‘s Chaos Monkey的Kubernetes集群实现。随机删除Kubernetes pods来检测防失败资源并同时进行检测和验证。
特性:
- Kube-monkey使用opt-in模型操作并只会在特定已经接受kube-monkey可以终止集群pod的Kubernetes上运行。
- 基于你的需求高度定制运行日程。
10. PowerfulSeal
PowerfulSeal(https://github.com/powerfulse...向Kubernetes集群注入故障,帮你尽快的识别问题。它解决混沌实验创建的场景。
特性:
- 与Kubernetes,OpenStack,AWS,Azure,GCP和本地机器兼容。
- 与Prometheus与Datadog集成收集度量指标。
- 支持自定义用例等多种模式。
结论
通过开源技术的可扩展能力提供的便利,你可以加入适合你自定义架构的特性。这些开源项目有文档与开源社区的支持。由于微服务体系结构将主导云计算领域,监控和定位这些实例问题的可靠工具肯定会成为每个开发人员库的一部分。
本文来自祝坤荣(时序)的微信公众号「麦芽面包」,公众号id「darkjune_think」
开发者/科幻爱好者/硬核主机玩家/业余翻译
转载请注明。
微博:祝坤荣
B站: https://space.bilibili.com/23...
交流Email: zhukunrong@yeah.net
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。