监控 Google Cloud Platform (GCP)
编辑监控 Google Cloud Platform (GCP)
编辑在本指南中,您将学习如何使用 Elastic 可观测性:日志和基础设施指标,来监控您的 Google Cloud Platform (GCP) 部署。
如果您不想因为流程和管理开销而配置虚拟机并安装数据发送器,您可以跳过此步骤,直接使用 GCP Dataflow 模板,从 Google Cloud Console 中的 Pub/Sub 将日志摄取到 Elastic。
您将学习的内容
编辑您将学习如何
- 设置 GCP 服务帐户。
- 使用 Metricbeat Google Cloud Platform 模块 摄取指标,并在 Kibana 中查看这些指标。
- 通过 Pub/Sub 主题导出 GCP 审计日志。
- 使用 Filebeat Google Cloud 模块 摄取日志,并在 Kibana 中查看这些日志。
开始之前
编辑在 Elastic Cloud 上使用我们托管的 Elasticsearch Service 创建一个部署。该部署包括一个用于存储和搜索数据的 Elasticsearch 集群,以及用于可视化和管理数据的 Kibana。
步骤 1:设置服务帐户
编辑Google Cloud Platform 将 服务帐户 作为一种安全访问 API 的方式。要使用 Elastic 监控 GCP,您需要一个服务帐户。最简单的方法是使用 GCP 自动创建 的预定义服务帐户。或者,您可以创建一个新的服务帐户。本教程将创建一个新的服务帐户。
首先,要访问服务帐户菜单,请点击 菜单 → IAM & 管理 → 服务帐户。
接下来,点击 创建服务帐户。定义新的服务帐户名称(例如,“gcp-monitor”)和描述(例如,“使用 Elastic Stack 监控 GCP 服务”) 。
请确保选择正确的角色。
要监控 GCP 服务,您需要向服务帐户添加以下角色
Compute Viewer:
Monitoring Viewer:
Pub/Sub Subscriber:
最终结果应如下所示
点击 继续,然后跳过授予用户访问此服务的权限。最后,点击 完成。服务帐户现在可以使用了。
接下来,要使用服务帐户,请点击 管理密钥。
然后,通过选择 创建新密钥 添加新的 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.17.0-amd64.deb sudo dpkg -i metricbeat-8.17.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-x86_64.rpm sudo rpm -vi metricbeat-8.17.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-darwin-x86_64.tar.gz tar xzvf metricbeat-8.17.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-linux-x86_64.tar.gz tar xzvf metricbeat-8.17.0-linux-x86_64.tar.gz
- 从 下载页面 下载 Metricbeat Windows zip 文件。
- 将 zip 文件的内容解压到
C:\Program Files
。 - 将
metricbeat-<版本>-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(您可以从云控制台执行此操作,无需输入任何权限),然后在 全局搜索字段 中找到
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.17.0-amd64.deb sudo dpkg -i filebeat-8.17.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-x86_64.rpm sudo rpm -vi filebeat-8.17.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-darwin-x86_64.tar.gz tar xzvf filebeat-8.17.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-linux-x86_64.tar.gz tar xzvf filebeat-8.17.0-linux-x86_64.tar.gz
- 从 下载页面 下载 Filebeat Windows zip 文件。
- 将 zip 文件的内容解压到
C:\Program Files
。 - 将
filebeat-<版本>-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(您可以从云控制台执行此操作,无需输入任何权限),然后在 全局搜索字段 中找到
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] 审计 仪表板。