监控 Google Cloud Platform (GCP)
编辑监控 Google Cloud Platform (GCP)
编辑本指南将介绍如何使用 Elastic 可观测性:日志和基础设施指标来监控您的 Google Cloud Platform (GCP) 部署。
如果您不想由于流程和管理开销而配置虚拟机并安装数据发送器,您可以跳过此步骤,并使用 GCP Dataflow 模板 将 Google Cloud Console 中的日志直接导入到 Elastic 中。
您将学到什么
编辑您将学习如何
- 设置 GCP 服务帐号。
- 使用 Metricbeat Google Cloud Platform 模块 摄取指标,并在 Kibana 中查看这些指标。
- 通过 Pub/Sub 主题导出 GCP 审计日志。
- 使用 Filebeat Google Cloud 模块 摄取日志,并在 Kibana 中查看这些日志。
开始之前
编辑在 Elastic Cloud 上使用我们的托管 Elasticsearch 服务创建一个部署。该部署包括一个用于存储和搜索数据的 Elasticsearch 集群,以及一个用于可视化和管理数据的 Kibana。
步骤 1:设置服务帐号
编辑Google Cloud Platform 使用 服务帐号 作为安全访问 API 的一种方式。要使用 Elastic 监控 GCP,您将需要一个服务帐号。最简单的方法是使用 GCP 自动创建 的预定义服务帐号。或者,您可以创建一个新的服务帐号。本教程将创建一个新的服务帐号。
首先,要访问服务帐号菜单,请点击 菜单 → IAM 和管理员 → 服务帐号。
接下来,点击 创建服务帐号。定义新的服务帐号名称(例如,“gcp-monitor”)和描述(例如,“使用 Elastic Stack 监控 GCP 服务的服务帐号”)。
确保选择了正确的角色。
要监控 GCP 服务,您需要将以下角色添加到服务帐号
Compute 查看器:
监控查看器:
Pub/Sub 订阅者:
最终结果应如下所示
点击 继续,然后跳过授予用户对此服务帐户的访问权限。最后,点击 完成。服务帐号现在已准备就绪,可以使用了。
接下来,要使用服务帐号,请点击 管理密钥。
然后,通过选择 创建新密钥 添加新的 JSON 密钥类型。
之后,凭据文件将被下载。请将此文件保存在可访问的位置,以便以后使用。
步骤 2:安装和配置 Metricbeat
编辑本教程假设 Elastic 集群已在运行。请确保您已准备好 云 ID 和 凭据。
要使用 Elastic Stack 监控 GCP,您需要两个主要组件:一个用于存储和分析数据的 Elastic 部署和一个用于收集和发送数据的代理。
可以使用两个代理来监控 GCP:Metricbeat 用于监控指标,Filebeat 用于监控日志。您可以在任何机器上运行这些代理。本教程使用一个小型 GCP 实例 e2-small(2 个 vCPU,2 GB 内存),并使用 Ubuntu 发行版。
安装 Metricbeat
编辑下载并安装 Metricbeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-amd64.deb sudo dpkg -i metricbeat-8.16.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-x86_64.rpm sudo rpm -vi metricbeat-8.16.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-darwin-x86_64.tar.gz tar xzvf metricbeat-8.16.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-linux-x86_64.tar.gz tar xzvf metricbeat-8.16.0-linux-x86_64.tar.gz
- 从 下载页面 下载 Metricbeat Windows zip 文件。
- 将 zip 文件的内容解压缩到
C:\Program Files
中。 - 将
metricbeat-<version>-windows
目录重命名为Metricbeat
。 - 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标并选择 以管理员身份运行)。
-
在 PowerShell 提示符下,运行以下命令以将 Metricbeat 安装为 Windows 服务
PS > cd 'C:\Program Files\Metricbeat' PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
如果您的系统上禁用了脚本执行,则需要将当前会话的执行策略设置为允许脚本运行。例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1
。
设置资产
编辑Metricbeat 附带用于解析、索引和可视化您的数据的预定义资产。运行以下命令加载这些资产。这可能需要几分钟。
./metricbeat setup -e -E 'cloud.id=YOUR_DEPLOYMENT_CLOUD_ID' -E 'cloud.auth=elastic:YOUR_SUPER_SECRET_PASS'
在此命令中替换您的云 ID 和管理员的 |
设置 Metricbeat 是一项管理员级任务,需要额外的权限。最佳实践是 使用管理员角色进行设置,并使用更严格的角色进行事件发布(您将在下一步中执行此操作)。
配置 Metricbeat 输出
编辑接下来,您将配置 Metricbeat 输出到 Elasticsearch Service。
-
使用 Metricbeat 密钥存储库来存储 安全设置。在密钥存储库中存储云 ID。
./metricbeat keystore create echo -n "<Your Deployment Cloud ID>" | ./metricbeat keystore add CLOUD_ID --stdin
-
要以最少的权限将指标存储在 Elasticsearch 中,请创建一个 API 密钥以将数据从 Metricbeat 发送到 Elasticsearch Service。登录 Kibana(您可以从 Cloud Console 中执行此操作,无需输入任何权限)并在 全局搜索字段 中找到
Dev Tools
。从 控制台 发送以下请求POST /_security/api_key { "name": "metricbeat-monitor", "role_descriptors": { "metricbeat_writer": { "cluster": ["monitor", "read_ilm"], "index": [ { "names": ["metricbeat-*"], "privileges": ["view_index_metadata", "create_doc"] } ] } } }
-
响应包含一个
api_key
字段和一个id
字段,可以以下列格式存储在 Metricbeat 密钥存储库中:id:api_key
。echo -n "IhrJJHMB4JmIUAPLuM35:1GbfxhkMT8COBB4JWY3pvQ" | ./metricbeat keystore add ES_API_KEY --stdin
确保指定了
-n
参数;否则,由于在 API 密钥末尾添加了换行符,您将遇到痛苦的调试会话。 -
要查看是否已存储这两个设置,请运行以下命令
./metricbeat keystore list
-
要配置 Metricbeat 输出到 Elasticsearch Service,请编辑
metricbeat.yml
配置文件。将以下几行添加到文件的末尾。cloud.id: ${CLOUD_ID} output.elasticsearch: api_key: ${ES_API_KEY}
-
最后,测试配置是否正常工作。如果无法正常工作,请验证您是否使用了正确的凭据,并再次添加它们。
./metricbeat test output
现在输出已正常工作,您将设置输入(GCP)。
步骤 3:配置 Metricbeat Google Cloud Platform 模块
编辑要从 Google Cloud Platform 收集指标,请使用 Google Cloud Platform 模块。此模块定期使用 Stackdriver Monitoring API 从 Google Cloud Platform 服务中获取监控指标。
此模块可能会生成 Stackdriver Monitoring API 请求的额外 GCP 费用。请参阅 API 调用次数的大致估计 以了解更多详细信息。
-
启用 GCP 模块。
./metricbeat modules enable gcp
-
编辑
modules.d/gcp.yml
文件以配置要收集的指标。 -
要检查 Metricbeat 是否可以收集数据,请通过运行以下命令测试输入
./metricbeat test modules gcp
如果设置正确,Metricbeat 将会打印 GCP 指标到终端。
-
当输入和输出准备就绪后,启动 Metricbeat 以收集数据。
./metricbeat -e
-
最后,登录 Kibana 并打开 [Metricbeat GCP] 计算概览 仪表板。
步骤 4:安装和配置 Filebeat
编辑现在 Metricbeat 已经启动并运行,请配置 Filebeat 以收集 Google Cloud 日志。
安装 Filebeat
编辑下载并安装 Filebeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.16.0-amd64.deb sudo dpkg -i filebeat-8.16.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.16.0-x86_64.rpm sudo rpm -vi filebeat-8.16.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.16.0-darwin-x86_64.tar.gz tar xzvf filebeat-8.16.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.16.0-linux-x86_64.tar.gz tar xzvf filebeat-8.16.0-linux-x86_64.tar.gz
- 从 下载页面 下载 Filebeat Windows zip 文件。
- 将 zip 文件的内容解压缩到
C:\Program Files
中。 - 将
filebeat-<version>-windows
目录重命名为Filebeat
。 - 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标并选择 以管理员身份运行)。
-
在 PowerShell 提示符下,运行以下命令以将 Filebeat 安装为 Windows 服务
PS > cd 'C:\Program Files\Filebeat' PS C:\Program Files\Filebeat> .\install-service-filebeat.ps1
如果您的系统上禁用了脚本执行,则需要将当前会话的执行策略设置为允许脚本运行。例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1
。
设置资产
编辑Filebeat 附带用于解析、索引和可视化您的数据的预定义资产。运行以下命令加载这些资产。这可能需要几分钟。
./filebeat setup -e -E 'cloud.id=YOUR_DEPLOYMENT_CLOUD_ID' -E 'cloud.auth=elastic:YOUR_SUPER_SECRET_PASS'
在此命令中替换您的云 ID 和管理员的 |
设置 Filebeat 是一项管理员级任务,需要额外的权限。最佳实践是 使用管理员角色进行设置,并使用更严格的角色进行事件发布(您将在下一步中执行此操作)。
配置 Filebeat 输出
编辑接下来,您将配置 Filebeat 输出到 Elasticsearch Service。
-
使用 Filebeat 密钥存储库来存储 安全设置。在密钥存储库中存储云 ID。
./filebeat keystore create echo -n "<Your Deployment Cloud ID>" | ./filebeat keystore add CLOUD_ID --stdin
-
要以最少的权限将日志存储在 Elasticsearch 中,请创建一个 API 密钥以将数据从 Filebeat 发送到 Elasticsearch Service。登录 Kibana(您可以从 Cloud Console 中执行此操作,无需输入任何权限)并在 全局搜索字段 中找到
Dev Tools
。发送以下请求POST /_security/api_key { "name": "filebeat-monitor-gcp", "role_descriptors": { "filebeat_writer": { "cluster": [ "monitor", "read_ilm", "cluster:admin/ingest/pipeline/get", "cluster:admin/ingest/pipeline/put" ], "index": [ { "names": ["filebeat-*"], "privileges": ["view_index_metadata", "create_doc"] } ] } } }
Filebeat 需要额外的集群权限来发布日志,这与 Metricbeat 配置不同。您可以在 此处 找到更多详细信息。
-
响应包含一个
api_key
和一个id
字段,可以按照以下格式存储在 Filebeat 密钥存储中:id:api_key
。echo -n "IhrJJHMB4JmIUAPLuM35:1GbfxhkMT8COBB4JWY3pvQ" | ./filebeat keystore add ES_API_KEY --stdin
确保指定了
-n
参数;否则,由于在 API 密钥末尾添加了换行符,您将遇到痛苦的调试会话。 -
要查看是否已存储这两个设置,请运行以下命令
./filebeat keystore list
-
要配置 Filebeat 输出到 Elasticsearch Service,请编辑
filebeat.yml
配置文件。将以下行添加到文件末尾。cloud.id: ${CLOUD_ID} output.elasticsearch: api_key: ${ES_API_KEY}
-
最后,测试配置是否有效。如果无效,请验证您是否使用了正确的凭据,并在必要时重新添加它们。
./filebeat test output
现在输出已正常工作,您将设置输入(GCP)。
步骤 5:配置 Filebeat Google Cloud 模块
编辑要从 Google Cloud Platform 收集日志,请使用 Google Cloud Platform 模块。此模块定期获取已从 Stackdriver 导出到 Google Pub/Sub 主题接收器的日志。有三个可用的文件集:audit
、vpcflow
、firewall
。本教程涵盖 audit
文件集。
-
转到 日志路由器 页面以配置 GCP 将日志导出到 Pub/Sub 主题。使用搜索栏查找页面
要设置日志路由接收器,请点击 创建接收器。将 接收器名称 设置为
monitor-gcp-audit-sink
。选择 Cloud Pub/Sub 主题 作为 接收器服务 并 创建新的 Cloud Pub/Sub 主题,命名为monitor-gcp-audit
最后,在 选择要包含在接收器中的日志 下,添加
logName:"cloudaudit.googleapis.com"
(它包含所有审计日志)。点击 创建接收器。它看起来类似于以下内容 -
现在转到 Pub/Sub 页面以向您刚刚创建的主题添加订阅。使用搜索栏查找页面
要向
monitor-gcp-audit
主题添加订阅,请点击 创建订阅将
monitor-gcp-audit-sub
设置为 订阅 ID 并将 传递类型 保留为拉取最后,向下滚动并点击 创建。
-
现在 GCP 已配置为导出审计日志,请启用 Filebeat Google Cloud 模块。
./filebeat modules enable gcp
-
使用以下配置编辑
modules.d/gcp.yml
文件。 -
启动 Filebeat 以收集日志。
./filebeat -e
-
最后,登录 Kibana 并打开 [Filebeat GCP] Audit 仪表板。