本文档提供的信息可帮助您诊断和解决 Ops Agent 安装和启动过程中的问题。如果代理正在运行但无法注入日志或指标,请参阅排查数据注入问题。
准备工作
在尝试解决问题之前,请检查代理的健康检查状态。
代理无法安装
您在运行安装脚本时可能会遇到以下错误。
操作系统不受支持
如果操作系统不受支持,Ops Agent 安装将失败。错误消息可能类似于以下内容:
Linux
https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el6-x86_64-all/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" Trying other mirror. To address this issue please refer to the below wiki article https://wiki.centos.org/yum-errors If above article doesn't help to resolve this issue please use https://bugs.centos.org/. Error: Cannot retrieve repository metadata (repomd.xml) for repository: google-cloud-ops-agent. Please verify its path and try again
安装了与 Ops Agent 冲突的旧版代理
如果虚拟机已安装 Cloud Logging 代理或 Cloud Monitoring 代理,则它们会与新代理冲突。错误消息可能类似于以下内容:
Linux
Error: Problem: problem with installed package stackdriver-agent-6.0.5-1.el8.x86_64 - package google-cloud-ops-agent-0.1.0-1.el8.x86_64 conflicts with stackdriver-agent provided by stackdriver-agent-6.0.5-1.el8.x86_64
Ops Agent 会使用与旧代理不兼容的新配置文件。如需了解详情,请参阅配置 Ops Agent 指南。
要消除此错误,请执行以下操作:
保存 Cloud Monitoring 代理和 Cloud Logging 代理的自定义配置文件。
卸载旧的 Cloud Monitoring 代理和 Cloud Logging 代理。
卸载代理后,Google Cloud 控制台最多可能需要一小时才能报告此更改。
Monitoring 代理安装失败后,Ops Agent 安装也失败了
在尝试安装 Monitoring 代理失败后,Ops Agent 的安装也失败了。在 Debian 操作系统上,Ops Agent 安装失败时的错误消息类似于以下内容:
Linux
... E: The repository 'https://packages.cloud.google.com/apt google-cloud-monitoring-jammy-all Release' does not have a Release file. ... Could not refresh the google-cloud-ops-agent apt repositories.
如果您尝试在 Monitoring 代理不支持的操作系统上安装该代理,则安装将失败。将 Monitoring 代理代码库添加到系统后,安装会失败。由于 Monitoring 代理代码库无效,因此在 Monitoring 代理安装失败后安装 Ops Agent 也会失败。
并非 Ops Agent 支持的所有操作系统也受 Monitoring 代理支持。如需了解受支持的操作系统,请参阅“Ops Agent:Linux 操作系统”和“Monitoring 代理:Linux 操作系统”。
如需安装 Ops Agent,请执行以下操作:
移除 Monitoring 代理的代码库:
如果您的系统上存在脚本
add-monitoring-agent-repo.sh
,请运行以下命令:sudo bash add-monitoring-agent-repo.sh --remove-repo
否则,请手动移除代码库:
Debian
sudo rm /etc/apt/sources.list.d/google-cloud-monitoring.list
RHEL
sudo rm /etc/yum.repos.d/google-cloud-monitoring.repo
Suse
sudo rm /etc/zypp/repos.d/google-cloud-monitoring.repo
运行 Ops Agent 安装脚本。
Ops Agent 安装失败,因为代码库刷新失败
Ops Agent 安装失败,因为已安装的代码库刷新失败。
Linux
如需查看 Debian 操作系统(其中由于调用 apt-get update
而刷新代码库)失败消息的示例,请参阅 Monitoring 代理安装失败后 Ops Agent 安装也失败了这一问题排查条目。
如果在刷新代码库时遇到故障,则必须先解决这些故障,然后才能安装 Ops Agent。您可以通过删除或停用不需要的代码库来解决这些故障。
在能够刷新代码库后,您可以通过运行 Ops Agent 安装脚本来安装 Ops Agent。
代码库刷新失败,因为公钥不可用
Linux
通过调用 apt-get update
来进行的代码库刷新失败,因为公钥不可用。在安装或升级 Ops Agent 时,也可能会出现这种情况。您可能会看到以下失败情况:
W: GPG error: http://packages.cloud.google.com/apt google-cloud-ops-agent-focal-all InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
E: The repository 'http://packages.cloud.google.com/apt google-cloud-ops-agent-focal-all InRelease' is not signed.
如需修复此错误,请运行以下命令来将缺少的密钥添加到您的系统:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \
| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/google-cloud-ops-agent.gpg
代理已安装,但无法运行
如果您已安装代理,但代理未运行,则问题可能属于以下某一种:
- 主要组件之一(“指标代理”或“Logging 代理”)无法启动;请参阅代理服务未运行。
- 虚拟机上还安装了其中一个旧版代理;请参阅与当前安装的代理冲突。
- 某个组件所需的端口正在被另一个进程使用;请参阅不可用的端口。
- Ops Agent 的配置无效;请参阅无效配置。
代理服务未在运行
如果代理服务按预期运行,那么当您查询状态时,Metrics Agent 和 Logging 代理会列为正在运行:
适用于 Linux
sudo systemctl status google-cloud-ops-agent"*"
为简单起见,输出中的一些行已删除。
● google-cloud-ops-agent.service - Google Cloud Ops Agent Loaded: loaded (/lib/systemd/system/google-cloud-ops-agent.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2023-05-03 21:22:28 UTC; 4 weeks 0 days ago Process: 3353828 ExecStartPre=/opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_engine -in /etc/go> Process: 3353837 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 3353837 (code=exited, status=0/SUCCESS) CPU: 195ms [...] ● google-cloud-ops-agent-opentelemetry-collector.service - Google Cloud Ops Agent - Metrics Agent Loaded: loaded (/lib/systemd/system/google-cloud-ops-agent-opentelemetry-collector.service; static) Active: active (running) since Wed 2023-05-03 21:22:29 UTC; 4 weeks 0 days ago Process: 3353840 ExecStartPre=/opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_engine -service=ot> Main PID: 3353855 (otelopscol) Tasks: 9 (limit: 2355) Memory: 65.3M CPU: 40min 31.555s CGroup: /system.slice/google-cloud-ops-agent-opentelemetry-collector.service └─3353855 /opt/google-cloud-ops-agent/subagents/opentelemetry-collector/otelopscol --config=/run/g> [...] ● google-cloud-ops-agent-fluent-bit.service - Google Cloud Ops Agent - Logging Agent Loaded: loaded (/lib/systemd/system/google-cloud-ops-agent-fluent-bit.service; static) Active: active (running) since Wed 2023-05-03 21:22:29 UTC; 4 weeks 0 days ago Process: 3353838 ExecStartPre=/opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_engine -service=fl> Main PID: 3353856 (google_cloud_op) Tasks: 31 (limit: 2355) Memory: 58.3M CPU: 29min 6.771s CGroup: /system.slice/google-cloud-ops-agent-fluent-bit.service ├─3353856 /opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_wrapper -config_path /etc/goo> └─3353872 /opt/google-cloud-ops-agent/subagents/fluent-bit/bin/fluent-bit --config /run/google-clo> [...] ● google-cloud-ops-agent-diagnostics.service - Google Cloud Ops Agent - Diagnostics Loaded: loaded (/lib/systemd/system/google-cloud-ops-agent-diagnostics.service; disabled; vendor preset: e> Active: active (running) since Wed 2023-05-03 21:22:26 UTC; 4 weeks 0 days ago Main PID: 3353819 (google_cloud_op) Tasks: 8 (limit: 2355) Memory: 36.0M CPU: 3min 19.488s CGroup: /system.slice/google-cloud-ops-agent-diagnostics.service └─3353819 /opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_diagnostics -config /etc/goog> [...]
适用于 Windows
Get-Service google-cloud-ops-agent* Status Name DisplayName ------ ---- ----------- Running google-cloud-op... Google Cloud Ops Agent Running google-cloud-op... Google Cloud Ops Agent - Logging Agent Running google-cloud-op... Google Cloud Ops Agent - Metrics Agent Running google-cloud-op... Google Cloud Ops Agent - Diagnostics
如果代理服务无法运行,您可能会看到以下状态:
Linux
$ sudo service google-cloud-ops-agent status ● google-cloud-ops-agent.service - Google Cloud Ops Agent Loaded: loaded (/lib/systemd/system/google-cloud-ops-agent.service; enabled; vendor preset: enabled) Active: inactive (dead) since Wed 2021-06-30 21:20:43 UTC; 6s ago
Windows
Get-Service google-cloud-ops-agent Status Name DisplayName ------ ---- ----------- Stopped google-cloud-ops-agent Google Cloud Ops Agent
如需消除此错误,请运行以下命令来启动服务:
Linux
sudo service google-cloud-ops-agent start
Windows
Start-Service google-cloud-ops-agent
如果服务无法启动,则说明配置可能无效。
与当前已安装的代理冲突
虚拟机已安装 Cloud Logging 代理或 Cloud Monitoring 代理,并且其配置与新代理的配置冲突。错误消息可能类似于以下内容:
Windows
We detected an existing Windows service for the StackdriverLogging agent, which is not compatible with the Ops Agent when the Ops Agent configuration has a non-empty logging section. Please either remove the logging section from the Ops Agent configuration, or disable the StackdriverLogging agent, and then retry enabling the Ops Agent.
如需修复此错误,您有以下两种选择:
停用 Ops Agent 配置文件的冲突部分。如需了解详情,请参阅配置 Ops Agent 指南。
停用有冲突的 Cloud Logging 代理或 Cloud Monitoring 代理。
- 保存 Cloud Logging 代理的所有自定义配置文件。
- 卸载旧的 Cloud Monitoring 代理和 Cloud Logging 代理。
卸载代理后,Google Cloud 控制台最多可能需要一小时才能报告此更改。
所需端口不可用
当 Ops Agent 的某个组件所需的端口正在被另一个进程使用时,Ops Agent 或该组件可能无法启动。Ops Agent 使用以下端口:
- 端口 20201,用于“指标代理”组件
- 端口 20202,用于“Logging 代理”组件
如果 Ops Agent 组件以外的其他进程正在使用端口 20201 或端口 20202,则停止该进程并重启 Ops Agent。请按照以下步骤确定哪个进程正在使用这些端口:
Linux
指标代理组件:要查看哪个进程正在使用端口 20201,请使用以下命令:
sudo netstat -ns -p | grep '20201'
以下输出显示了预期结果:Ops Agent 指标收集器 otelopscol
正在使用相应端口:
tcp 0 0 127.0.0.1:50138 127.0.0.1:20201 ESTABLISHED 16850/otelopscol tcp6 0 0 :::20201 :::* LISTEN 16850/otelopscol tcp6 0 0 127.0.0.1:20201 127.0.0.1:50138 ESTABLISHED 16850/otelopscol
Logging 代理组件:如需查看哪个进程正在使用端口 20202,请使用以下命令:
sudo netstat -ns -p | grep '20202'
以下输出显示了预期结果:Ops Agent 日志收集器 fluent-bit
正在使用相应端口:
tcp 0 0 0.0.0.0:20202 0.0.0.0:* LISTEN 16640/fluent-bit tcp 0 0 127.0.0.1:20202 127.0.0.1:52998 TIME_WAIT -
Windows
指标代理组件:要查看哪个进程正在使用端口 20201,请使用以下命令:
netstat -na -b | Select-String "20201" -Context 0,1
以下输出显示了预期结果:Ops Agent 指标收集器 google-cloud-metrics-agent_windows_amd64.exe
正在使用相应端口:
> TCP 0.0.0.0:20201 0.0.0.0:0 LISTENING [google-cloud-metrics-agent_windows_amd64.exe] > TCP 127.0.0.1:20201 127.0.0.1:50090 ESTABLISHED [google-cloud-metrics-agent_windows_amd64.exe] > TCP 127.0.0.1:50090 127.0.0.1:20201 ESTABLISHED [google-cloud-metrics-agent_windows_amd64.exe] > TCP [::]:20201 [::]:0 LISTENING [google-cloud-metrics-agent_windows_amd64.exe]
Logging 代理组件:如需查看哪个进程正在使用端口 20202,请使用以下命令:
netstat -na -b | Select-String "20202" -Context 0,1
以下输出显示了预期结果:Ops Agent 日志收集器 fluent-bit.exe
正在使用相应端口:
> TCP 0.0.0.0:20202 0.0.0.0:0 LISTENING [fluent-bit.exe] > TCP 127.0.0.1:20202 127.0.0.1:57535 TIME_WAIT > TCP 127.0.0.1:20202 127.0.0.1:57539 TIME_WAIT TCP 127.0.0.1:49807 127.0.0.1:49808 ESTABLISHED
Ops Agent 运行的健康检查可以检测端口可用性错误。
代理缺少 API 权限
如果代理无法启动或无法注入数据,则问题可能是“指标代理”或“Logging 代理”组件缺少访问 API 所需的权限。
Ops Agent 使用的服务账号需要以下 Identity and Access Management 角色:
- 对于“Logging 代理”组件:Logs Writer (
roles/logging.logWriter
) - 对于“指标代理”组件:Monitoring Metric Writer (
roles/monitoring.metricWriter
)。
这些角色包含写入日志记录或指标数据所需的权限,必须授予给与虚拟机关联的服务账号。您使用的服务账号取决于您如何配置虚拟机以及向代理授权。您可能正在使用以下各项之一:
如需确定与虚拟机关联的服务账号,请执行以下操作:
-
在 Google Cloud 控制台中,转到虚拟机实例页面:
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
如有必要,点击 Google Cloud 项目的下拉列表,然后选择您项目的名称。
如有必要,选择实例标签页。
在虚拟机实例列表中,点击虚拟机的名称以查看该虚拟机的详细信息页面。
找到页面的 API 和身份管理部分。服务账号会作为服务账号字段的值列出。
如需了解如何设置向服务账号授予的角色,请参阅验证并修改现有服务账号的角色。
Ops Agent 运行的健康检查可以检测 API 权限错误。
配置无效
如果配置无效,您可能会在尝试重启代理服务时看到以下错误:
Linux
$ sudo service google-cloud-ops-agent restart \ && sudo service google-cloud-ops-agent status ● google-cloud-ops-agent-fluent-bit.service - Google Cloud Ops Agent - Logging Agent Loaded: loaded (/usr/lib/systemd/system/google-cloud-ops-agent-fluent-bit.service; static; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/google-cloud-ops-agent-fluent-bit.service.d └─directories.conf Active: failed (Result: exit-code) since Wed 2021-06-30 22:21:08 UTC; 2s ago Process: 1141421 ExecStart=/opt/google-cloud-ops-agent/subagents/fluent-bit/bin/fluent-bit --config ${RUNTIME_DIRECTORY}/fluent_bit_main.conf --parser ${RUNTIME_DIRECTORY}/fluent_bit_parser.conf --log_> Process: 1141847 ExecStartPre=/opt/google-cloud-ops-agent/libexec/google_cloud_ops_agent_engine -service=fluentbit -in /etc/google-cloud-ops-agent/config.yaml -logs ${LOGS_DIRECTORY} -state ${STATE_DIR> Main PID: 1141421 (code=exited, status=0/SUCCESS) Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Control process exited, code=exited status=1 Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Failed with result 'exit-code'. Jun 30 22:21:08 centos8-2 systemd[1]: Failed to start Google Cloud Ops Agent - Logging Agent. Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Service RestartSec=100ms expired, scheduling restart. Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Scheduled restart job, restart counter is at 5. Jun 30 22:21:08 centos8-2 systemd[1]: Stopped Google Cloud Ops Agent - Logging Agent. Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Start request repeated too quickly. Jun 30 22:21:08 centos8-2 systemd[1]: google-cloud-ops-agent-fluent-bit.service: Failed with result 'exit-code'. Jun 30 22:21:08 centos8-2 systemd[1]: Failed to start Google Cloud Ops Agent - Logging Agent.
使用 journalctl
获取确切的错误消息:
sudo journalctl -xe | grep "google_cloud_ops_agent_engine"
您可能会看到类似如下内容的消息:
Jun 30 22:00:26 centos8-2 google_cloud_ops_agent_engine[1141491]: 2021/06/30 22:00:26 the agent config file is not valid YAML. detailed error: yaml: line 21: did not find expected key
Windows
failed to generate config files: can't parse configuration: yaml: line 20: could not find expected ':'
如需修复该错误,请更正无效配置并重启代理。如需了解参考信息,请参阅配置 Ops Agent 指南。
代理崩溃,报告中提及 NVIDIA
您尝试在挂接了 GPU 的 Compute Engine 虚拟机上运行 Ops Agent。代理崩溃,输出中提及 NVIDIA。
这是 Ops Agent 2.39.0 和 2.40.0 版的已知问题。如需缓解此问题,请安装 Ops Agent 2.38.0 版、2.41.0 版或更高版本。Google Cloud 控制台中的状态信息有误
Google Cloud 控制台会在各种信息中心(例如 Cloud Monitoring 中的虚拟机实例信息中心)中报告 Compute Engine 虚拟机上的代理状态的相关信息。如果这些信息与您的预期不符,原因可能只是延迟而已,因为配置更改在系统中传播需要一点时间。但是,意外信息也可能表明代理未按预期运行。
安装了由 Google Cloud 控制台报告为未检测到的代理
代理必须正在运行并注入数据,Google Cloud 控制台才能识别代理是否存在。如果您已安装代理,但控制台状态仍为“未检测到”,则表示代理未运行或正在运行但未注入数据。详情请参阅以下内容:
移除了由 Google Cloud 控制台报告为已安装的代理
卸载代理后,Google Cloud 控制台最多可能需要一小时才能报告此更改。