监控 Google Cloud Platform
编辑监控 Google Cloud Platform编辑
在本教程中,您将学习如何使用 Elastic 可观测性:日志和基础设施指标来监控您的 Google Cloud Platform (GCP) 部署。
如果您不想由于流程和管理开销而配置 VM 并安装数据发送器,您可以跳过此步骤,并使用 GCP Dataflow 模板 将日志直接从 Google Cloud Console 中的 Pub/Sub 导入到 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 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.14.2-amd64.deb sudo dpkg -i metricbeat-8.14.2-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-x86_64.rpm sudo rpm -vi metricbeat-8.14.2-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-darwin-x86_64.tar.gz tar xzvf metricbeat-8.14.2-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-linux-x86_64.tar.gz tar xzvf metricbeat-8.14.2-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 服务。
-
使用 Metricbeat 密钥库来存储 安全设置。将云 ID 存储在密钥库中。
./metricbeat keystore create echo -n "<Your Deployment Cloud ID>" | ./metricbeat keystore add CLOUD_ID --stdin
-
要以最少的权限将指标存储在 Elasticsearch 中,请创建一个 API 密钥,用于将数据从 Metricbeat 发送到 Elasticsearch 服务。登录 Kibana(您可以从云控制台中执行此操作,无需输入任何权限),然后选择 管理 → 开发工具。发送以下请求
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 服务,请编辑
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.14.2-amd64.deb sudo dpkg -i filebeat-8.14.2-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-x86_64.rpm sudo rpm -vi filebeat-8.14.2-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-darwin-x86_64.tar.gz tar xzvf filebeat-8.14.2-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-linux-x86_64.tar.gz tar xzvf filebeat-8.14.2-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 服务。
-
使用 Filebeat 密钥库来存储 安全设置。将云 ID 存储在密钥库中。
./filebeat keystore create echo -n "<Your Deployment Cloud ID>" | ./filebeat keystore add CLOUD_ID --stdin
-
要以最少的权限将日志存储在 Elasticsearch 中,请创建一个 API 密钥,用于将数据从 Filebeat 发送到 Elasticsearch 服务。登录 Kibana(您可以从云控制台中执行此操作,无需输入任何权限),然后选择 管理 → 开发工具。发送以下请求
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] 审核 仪表板。