第 9 章 监控和日志记录
您可以将指标发送到 Google Cloud Platform 监控系统,以便在 Google Cloud Platform UI 中视觉化。默认情况下,来自 GCP Marketplace 指标和日志记录的 Ansible Automation Platform 会被禁用,因为将这些指标发送到 GCP 的成本。如需更多信息,请参阅云监控和云日志记录。
您可以设置 GCP 监控和日志记录:
- 在部署时,在部署时读取设置监控和日志记录,或者
- 部署后
9.1. 部署后设置监控和日志记录
您可以使用 registry.redhat.com 提供的 gcp_setup_logging_monitoring playbook 在部署后启动或停止日志和监控。
9.1.1. 所需权限
您必须具有以下 GCP IAM 权限来设置日志记录和监控:
required-roles: Service Account User Compute Instance Admin (v1) required-permissions: cloudsql.instances.connect cloudsql.instances.get cloudsql.instances.login cloudsql.users.update compute.addresses.get compute.addresses.list compute.instances.delete compute.instances.get compute.instances.list compute.instances.setLabels compute.zoneOperations.get deploymentmanager.deployments.list deploymentmanager.manifests.get deploymentmanager.manifests.list file.instances.get file.instances.list file.instances.update file.operations.get iap.tunnelInstances.accessViaIAP logging.logEntries.create monitoring.timeSeries.create resourcemanager.projects.get runtimeconfig.variables.create runtimeconfig.variables.get runtimeconfig.variables.list runtimeconfig.variables.update secretmanager.secrets.create secretmanager.secrets.delete secretmanager.secrets.get secretmanager.versions.add secretmanager.versions.get secretmanager.versions.list servicenetworking.operations.get servicenetworking.services.addPeering serviceusage.services.list
9.1.2. 拉取 ansible-on-clouds-ops 容器镜像
在云操作容器上拉取 Ansible 的 Docker 镜像,与基础部署的版本保持一致。
在拉取 docker 镜像前,请确保使用 docker 登录到 registry.redhat.io。使用以下命令登录到 registry.redhat.io。
$ docker login registry.redhat.io
有关 registry 登录的更多信息,请参阅 Registry 身份验证
例如,如果您的基础部署版本是 2.4.20230630-00,则必须使用标签 2.4.20230630 拉取操作镜像。
使用以下命令:
$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630 $ docker pull $IMAGE --platform=linux/amd64
9.1.3. 运行 ansible-on-clouds-ops 容器来生成数据文件
以下命令生成所需的数据文件。这些命令会创建一个目录,并使用填充时的空数据模板来生成 playbook。
流程
创建用于存放配置文件的文件夹。
$ mkdir command_generator_data
使用配置文件模板填充
command_generator_data文件夹。注意在 Linux 上,命令生成器创建的任何文件或目录默认归
root:root所有。要更改文件和目录的所有权,您可以在创建文件后运行sudo chmod命令。如需更多信息,请阅读 命令生成器 - 由 root 拥有的 Linux 文件。$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \ command_generator_vars gcp_setup_logging_monitoring \ --output-data-file /data/logging-monitoring.yml
运行这些命令时,会创建一个
command_generator_data/logging-monitoring.yml模板文件。注意在以下示例中,
ansible_config_path是可选的。此模板文件类似于以下内容:-
gcp_setup_logging_monitoring: ansible_config_path: cloud_credentials_path: deployment_name: extra_vars: components: default_collector_interval: logging_enabled: monitoring_enabled:
9.1.4. 更新数据文件
如果不需要参数,请从配置文件中删除该参数。
流程
-
编辑
command_generator_data/logging-monitoring.yml文件并设置以下参数: -
ansible_config_path默认用作ansible-on-cloud 产品的标准配置,但如果您的环境中有额外的要求,则可以自行指定。 -
cloud_credentials_path是您的凭证的绝对路径。这必须是绝对路径。 -
deployment_name是部署的名称。 -
组件(可选)您要在其上执行设置的组件类型。默认为 [ "controller", "hub" ],这意味着在自动化控制器和自动化中心上都启用了日志记录监控。 -
monitoring_enabled(可选)设置为true以启用监控,否则为false。默认为false。 -
logging_enabled(可选)设置为true以启用日志记录,否则为false。默认为false。 default_collector_interval(可选)是监控数据必须发送到 Google Cloud 的频率。默认为 59s。注意此服务的 Google 成本取决于该定期性,因此收集器间隔的值越高,其成本越低。
不要设置小于 59 秒的值。
注意如果禁用了监控和日志记录,则 'default_collector_interval' 的值会自动设置为
0。
填充数据文件后,它应类似于以下内容:
以下示例提供了以下值:
本节中描述的可选参数在下面的数据文件示例中被忽略。playbook 使用从数据文件忽略的任何可选参数的默认值。如果要覆盖可选参数的默认值,则必须将其包含在数据文件中并分配一个值。
gcp_setup_logging_monitoring: cloud_credentials_path: ~/secrets/GCP-secrets.json deployment_name: AnsibleAutomationPlatform extra_vars:
9.1.5. 生成 playbook
若要生成 playbook,请运行命令生成器来生成 CLI 命令。
docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator gcp_setup_logging_monitoring \ --data-file /data/logging-monitoring.yml
提供以下命令:
docker run --rm --env PLATFORM=GCP -v </path/to/gcp/service-account.json>:/home/runner/.gcp/credentials:ro \ --env ANSIBLE_CONFIG=../gcp-ansible.cfg --env DEPLOYMENT_NAME=<deployment_name> --env GENERATE_INVENTORY=true \ $IMAGE redhat.ansible_on_clouds.gcp_setup_logging_monitoring -e 'gcp_deployment_name=<deployment_name> \ gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials monitoring_enabled=<monitoring_enabled> \ logging_enabled=<logging_enabled> default_collector_interval=<interval>'
运行提供的命令以运行 playbook。
$ docker run --rm --env PLATFORM=GCP -v /path/to/credentials:/home/runner/.gcp/credentials:ro \ --env ANSIBLE_CONFIG=../gcp-ansible.cfg --env DEPLOYMENT_NAME=mu-deployment \ --env GENERATE_INVENTORY=true $IMAGE redhat.ansible_on_clouds.gcp_setup_logging_monitoring \ -e 'gcp_deployment_name=mu-deployment \ gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials components=["hubs","controllers"]\ monitoring_enabled=True logging_enabled=True default_collector_interval=60s'
此过程可能需要一些时间,并提供类似如下的输出:
TASK [redhat.ansible_on_clouds.setup_logging_monitoring : Update runtime variable logging_enabled] *** changed: [<user_name> -> localhost] TASK [redhat.ansible_on_clouds.setup_logging_monitoring : Update runtime variable monitoring_enabled] *** changed: [<user_name> -> localhost] PLAY RECAP ********************************************************************* <user_name> : ok=20 changed=6 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0