金融和医疗保健等受监管行业需要监控关键基础架构,同时严格将数据保留在区域边界内。
开源软件 (OSS) 可以补充和扩展目前在 Cloud de Confiance by S3NS中提供的 Cloud Monitoring 和 Cloud Logging 功能。此示例 向您展示了如何通过添加广泛使用的开源工具在 Cloud de Confiance by S3NS 上创建完整的自主可观测性解决方案。
该架构使用 OpenTelemetry、Grafana Mimir 和 Grafana Loki(由 Cloud Storage 提供支持)、Grafana 和 Fluent Bit 为 Google Kubernetes Engine (GKE) 和 Compute Engine 生成指标、日志、可视化图表和提醒。 所有数据都保留在自主区域内,避免了第三方 SaaS 费用。
我们建议您订阅相关版本说明 ,以便及时了解 Cloud de Confiance by S3NS 可观测性功能的未来更新。
您可以按照随附的 参考实现(使用 Terraform)部署此解决方案。
目标受众群体
此解决方案适用于需要在自主 Cloud de Confiance by S3NS 环境中监控工作负载的公司。它面向以下利益相关者:
- 站点可靠性工程师 (SRE) 和 DevOps 负责人 :他们提供自动化的可伸缩指标存储和日志流水线,以监控应用运行状况并跟踪系统服务等级协议 (SLA),无需手动维护导出器。
- 合规性和安全官员 :他们确保敏感应用日志、指标和运营信号保留在自主边界内,避免非自主 SaaS 数据流出。
- 企业云架构师 :他们建立标准化的 OpenTelemetry 基础,以解除对即时云迁移的限制,并为第一方云监控提供平稳的过渡路径。
核心功能
- 自主可观测性和本地数据保留:使用 Cloud Storage 存储桶在本地自主基础架构中收集、处理、 和存储 Compute Engine 和 GKE 日志的应用指标。
- OpenTelemetry 标准注入:使用 OpenTelemetry 收集器进行 基于拉取的 Prometheus 抓取和基于推送的 OpenTelemetry 协议 (OTLP) 指标注入。此方法支持未来与第一方 Cloud Monitoring 的兼容性。
- 可扩缩的 Cloud Storage 支持的指标存储:将 Grafana Mimir 和 Grafana Loki 配置为使用 Cloud Storage 作为高可用性、 经济高效的 Prometheus 指标块后端。
- 统一遥测可视化图表:查看预配置的 Grafana 信息中心 ,这些信息中心显示实时应用指标、Grafana Loki 日志流 、Compute Engine 虚拟机 stdout 日志,并集成 Cloud Logging 数据源。
- Compute Engine 虚拟机日志记录流水线:在 Compute Engine 虚拟机上自动安装 Fluent Bit 和
OpenTelemetry Collector Contrib
,以将
systemd-journald和 stdout 日志流式传输到 Grafana Loki、 Cloud Logging 或两者。您还可以收集虚拟机主机指标和合成 OTLP 应用指标,以通过 mTLS 转发到 Mimir。 - 灵活的部署自动化:使用 Terraform 和 Kubernetes 软件包管理(使用 Helm)的基础架构即代码 (IaC) 方法,实现一致的环境设置和拆除。
架构
此架构使用 OpenTelemetry 收集器、Grafana Mimir、Grafana Loki、kube-state-metrics、Fluent Bit、cert-manager 和 Grafana 来监控 Compute Engine 和 GKE 工作负载,并使用 Cloud Storage 存储指标,使用 Cloud Logging 存储日志。虚拟私有云 (VPC) 内的 Mimir 和 Loki 使用基于 mTLS 的内部应用负载均衡器,以便 Compute Engine 虚拟机可以推送指标和日志。Grafana 通过区域级 GKE 网关在外部通过 HTTPS 公开。
组件
| 组件 | 技术 | 用途 |
|---|---|---|
| 遥测收集器 | OpenTelemetry 收集器 | 用于处理 OpenTelemetry 协议 (OTLP) HTTP/gRPC 指标、抓取 Prometheus 端点并转发到 Mimir 的中心遥测流水线。 |
| 指标数据库 | Grafana Mimir | 高可用性、长期 Prometheus 指标存储数据库,在 Cloud Storage 中具有持久性块。 |
| 日志数据库 | Grafana Loki | 横向伸缩、多租户日志聚合数据库,在 Cloud Storage 中保留块和 TSDB 索引。 |
| 对象存储 | Cloud Storage | 为 Mimir 指标、Loki 日志和共享监控工件预配专用存储桶。 |
| 集群状态指标 | kube-state-metrics
|
侦听 Kubernetes API 服务器并生成有关集群对象(例如 Deployment、节点或 Pod)状态的指标。由 OpenTelemetry 收集器使用 ServiceMonitor 抓取。 |
| PKI 和证书 | cert-manager 和 PKI 签发者
|
引导内部根 CA 和 ClusterIssuer,以便为集群内组件和独立 Compute Engine 虚拟机签发 TLS/mTLS 证书。 |
| Google Kubernetes Engine 日志收集器 | Fluent Bit (DaemonSet) | 跨 GKE 节点收集容器 stdout 日志,使用 Kubernetes 元数据进行扩充,并使用 OTLP mTLS 转发到 GKE OTel 收集器。 |
| 虚拟机日志收集器 | Fluent Bit 和 OpenTelemetry Contrib | 使用 systemd-journald 在独立 Compute Engine 虚拟机上收集操作系统和应用 stdout 日志,并流式传输到 Cloud Logging。 |
| 集中式日志记录 | Cloud Logging | Compute Engine 虚拟机和平台日志的中心化日志接收器。 |
| 可视化图表和提醒 | Grafana | 信息中心可视化图层,预配置了 Mimir、Grafana Loki、Cloud Monitoring 和 Cloud Logging 的数据源。 |
| 推送演示应用 | Python(信标应用) | 演示微服务,每 5 秒发出一次合成 OTLP 指标并推送到 OpenTelemetry 收集器。 |
| 拉取演示应用 | Python(传感器应用) | 演示微服务,用于公开由 OpenTelemetry 收集器抓取的标准 /metrics Prometheus 端点。 |
| 演示应用 | Python | 在 Compute Engine 虚拟机上运行的演示应用,用于将结构化 JSON 日志生成到 stdout。 |
| 部署 | Terraform 和 Helm | 自动执行虚拟私有云、GKE 集群、Cloud Storage 存储桶、Identity and Access Management (IAM) 角色、Compute Engine 虚拟机和 Helm 图表部署。 |
参考实现
GitHub 中提供了此解决方案的参考实现(使用 Terraform)。请注意,这是一个为演示目的而构建的概念验证原型,该实现未经审核或保护,不适用于生产用例。
如需了解前提条件和部署说明,请参阅 使用 Grafana 和 OpenTelemetry 实现自主可观测性和监控。