This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第 7 章 Red Hat Developer Hub 与 Amazon Web Services (AWS)集成
您可以将 Red Hat Developer Hub 应用程序与 Amazon Web Services (AWS)集成,这有助于简化 AWS 生态系统中的工作流。将 Developer Hub 资源与 AWS 集成,可访问全面的工具、服务和解决方案。
与 AWS 集成需要使用以下方法之一在 Elastic Kubernetes Service (EKS)中部署 Developer Hub:
- Helm chart
- Red Hat Developer Hub Operator
7.1. 在 Red Hat Developer Hub 中使用 Amazon Web Services (AWS)监控和登录
在 Red Hat Developer Hub 中,通过 Amazon Web Services (AWS)集成促进监控和日志记录。借助 Amazon CloudWatch 用于实时监控和 Amazon Prometheus 等功能,您可以确保 AWS 基础架构上托管的 Developer Hub 应用程序的可靠性、可扩展性和合规性。
通过此集成,您可以监督、诊断和优化红帽生态系统中的应用程序,从而改进的开发和操作过程。
7.1.1. 使用 Amazon Prometheus 监控
Red Hat Developer Hub 提供与正在运行的应用程序相关的 Prometheus 指标。有关为 EKS 集群启用或部署 Prometheus 的更多信息,请参阅 Amazon 文档中的 Prometheus 指标。
要使用 Amazon Prometheus 监控 Developer Hub,您需要为 Prometheus 工作区创建一个 Amazon 受管服务,并配置 Developer Hub Prometheus 指标的 ingestion。如需更多信息,请参阅 Amazon 文档中的创建工作区 和 Ingest Prometheus metrics 部分。
将 Prometheus 指标放入创建的工作区后,您可以将指标提取配置为根据特定 pod 注解从 pod 中提取数据。
7.1.1.1. 为监控配置注解
您可以在 Helm 部署和 Operator 支持的部署中配置注解来监控。
- Helm 部署
要注解用于监控的 backstage pod,请更新您的
values.yaml
文件,如下所示:upstream: backstage: # --- TRUNCATED --- podAnnotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http'
upstream: backstage: # --- TRUNCATED --- podAnnotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http'
Copy to Clipboard Copied! - Operator 支持的部署
流程
作为 Operator 的管理员,编辑默认配置以添加 Prometheus 注解,如下所示:
Update OPERATOR_NS accordingly
# Update OPERATOR_NS accordingly OPERATOR_NS=rhdh-operator kubectl edit configmap backstage-default-config -n "${OPERATOR_NS}"
Copy to Clipboard Copied! 在 ConfigMap 中找到
deployment.yaml
键,并将注解添加到spec.template.metadata.annotations
字段中,如下所示:deployment.yaml: |- apiVersion: apps/v1 kind: Deployment # --- truncated --- spec: template: # --- truncated --- metadata: labels: rhdh.redhat.com/app: # placeholder for 'backstage-<cr-name>' # --- truncated --- annotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http' # --- truncated ---
deployment.yaml: |- apiVersion: apps/v1 kind: Deployment # --- truncated --- spec: template: # --- truncated --- metadata: labels: rhdh.redhat.com/app: # placeholder for 'backstage-<cr-name>' # --- truncated --- annotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http' # --- truncated ---
Copy to Clipboard Copied! - 保存您的更改。
验证
验证提取是否正常工作:
使用
kubectl
将 Prometheus 控制台转发到本地机器,如下所示:kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
Copy to Clipboard Copied! -
打开 Web 浏览器,再进入到
http://localhost:9090
以访问 Prometheus 控制台。 -
监控相关指标,如
process_cpu_user_seconds_total
。
7.1.2. 使用 Amazon CloudWatch 日志进行日志记录
Red Hat Developer Hub 中的日志记录依赖于 winston 库。默认情况下,debug 级别的日志不会被记录。要激活调试日志,您必须在 Red Hat Developer Hub 实例中将环境变量 LOG_LEVEL
设置为 debug。
7.1.2.1. 配置应用程序日志级别
您可以在 Helm 部署和 Operator 支持的部署中配置应用程序日志级别。
- Helm 部署
要更新日志记录级别,请将环境变量
LOG_LEVEL
添加到 Helm Chart 的values.yaml
文件中:upstream: backstage: # --- Truncated --- extraEnvVars: - name: LOG_LEVEL value: debug
upstream: backstage: # --- Truncated --- extraEnvVars: - name: LOG_LEVEL value: debug
Copy to Clipboard Copied! - Operator 支持的部署
您可以通过在自定义资源中包含环境变量
LOG_LEVEL
来修改日志记录级别,如下所示:spec: # Other fields omitted application: extraEnvs: envs: - name: LOG_LEVEL value: debug
spec: # Other fields omitted application: extraEnvs: envs: - name: LOG_LEVEL value: debug
Copy to Clipboard Copied!
7.1.2.2. 从 Amazon CloudWatch 检索日志
CloudWatch Container Insights 用于捕获 Amazon EKS 的日志和指标。如需更多信息,请参阅 Amazon EKS 文档的日志记录。
要捕获日志和指标,请 在集群中安装 Amazon CloudWatch Observability EKS 附加组件。在 Container Insights 设置后,您可以使用 Logs Insights 或 Live Tail 视图访问容器日志。
CloudWatch 使用以下方法命名日志组,其中整合了所有容器日志:
/aws/containerinsights/<ClusterName>/application
以下是从 Developer Hub 实例检索日志的示例查询:
fields @timestamp, @message, kubernetes.container_name | filter kubernetes.container_name in ["install-dynamic-plugins", "backstage-backend"]
fields @timestamp, @message, kubernetes.container_name
| filter kubernetes.container_name in ["install-dynamic-plugins", "backstage-backend"]