使用 Stackdriver 的监控和日志记录功能更好地了解应用的运行状况

在此 Codelab 中,您将了解如何开始使用 Stackdriver 来监控和查看 Google Cloud Platform 服务和虚拟机的性能指标和日志。

在此 Codelab 中,您将学习

  • 熟悉 Stackdriver 首页。
  • 了解信息中心和图表。
  • 创建拨测。
  • 创建简单的提醒政策。
  • 处理提醒突发事件。
  • 浏览日志查看器。

您使用 Stackdriver 的体验如何?

监控 - 这是什么? 我以前从未使用过 Stackdriver,但我有应用监控经验。 我倾听了 Stackdriver 的心血,但并未深入探究。

自定进度的环境设置

如果您还没有 Google 帐号(Gmail 或 Google Apps),则必须创建一个

登录 Google Cloud Platform Console (console.developers.google.com) 并创建一个新项目:

请记住项目 ID,它是所有 Google Cloud 项目中的唯一名称。它稍后将在此 Codelab 中被称为 PROJECT_ID

重要提示 - 请访问 Compute Engine 页面,开始启用 Compute Engine API:

然后:计算 → Compute Engine → 虚拟机实例

首次执行此操作时,您会看到一个屏幕,上面显示一条消息“Compute Engine is ready. 这可能需要一分钟或更长时间”。您可以继续在下方登录 Google Cloud Shell,但在此操作完成之前,您无法创建虚拟机。

您将通过 Google Cloud Shell在 Cloud 中运行的命令行环境)完成大部分工作。基于 Debian 的这款虚拟机加载了您需要的所有开发工具,并提供 5GB 的永久性主目录。点击屏幕右上角的图标打开 Google Cloud Shell:

最后,使用 Cloud Shell 设置默认可用区和项目配置:

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

您也可以选择不同的区域。如需详细了解地区,请参阅“区域和地区”说明文档

在本部分中,您将使用 Cloud Launcher 创建运行 nginx+ 的 Compute Engine 实例。我们需要这些实例来演示监控和提醒。您可以通过图形控制台或命令行创建 Compute Engine 实例。本实验将引导您完成命令行操作。

现在我们开始吧。

使用 gcloud 设置您的项目 ID:

$ gcloud config set project PROJECT_ID



接下来,请务必按原样复制粘贴以下内容:

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

您将看到有关磁盘大小的警告消息,然后在创建每个虚拟机时看到以下输出:

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

请记下 EXTERNAL_IP - 稍后很重要。

这些操作可能需要几分钟才能完成。

默认情况下,Google Cloud Platform 只允许访问少量端口。由于我们很快就会访问 Nginx,因此要在防火墙配置中启用端口 80:

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

这将创建一个名为 allow-80 的防火墙规则,其具有以下默认值:

  • 允许建立入站连接 (--source-ranges) 的 IP 地址块的列表设为 0.0.0.0/0(无处不在)。
  • 用于指示网络上可能接受入站连接的那组实例的实例列表设置为“无”,这意味着防火墙规则适用于所有实例。

运行 gcloud compute firewall-rules create --help 可查看所有默认值。

创建第一个实例后,您可以导航到 http://EXTERNAL_IP/(其中 EXTERNAL_IPnginx-plus-1 的公共 IP),以测试 nginx 是否正在运行并可访问,您应该能够看到 Nginx 页面:

您还可以输入以下内容来查看正在运行的实例:

$ gcloud compute instances list

Google Stackdriver 是一款功能强大的监控解决方案,集成了各种工具来协助监控和分析您的云端应用。您可以使用 Stackdriver 查看性能指标、设置和接收提醒、添加您自己的自定义信息中心和指标、查看日志和跟踪记录以及设置集成式信息中心,所有操作都可以在一个地方完成。

接下来的步骤将引导您启用 Stackdriver 和使用控制台。

默认情况下,Google Stackdriver 目前为 Beta 版,无法用于新项目。如需启用此功能,请在左侧导航栏中点击“监控”(您可能需要向下滚动才能找到该选项)

在下一个屏幕中,点击“启用 Monitoring”,然后等待一分钟启用该服务。

启用后,内容将发生变化,您会看到以下文本。点击“转到 Monitoring”,开始探索!您将需要使用 Google 登录,然后进入项目的 Stackdriver 控制台,您将在那里执行和分析监控相关的任务。

让我们熟悉一下首页。

  1. 顶部菜单:用于选择不同的视图 / 上下文,以及访问所有可用的 Stackdriver 操作。
  2. 信息中心:这是受监控的指标和事件的信息中心。这些信息中心最初是基于您项目中的资源的预定义系统信息中心,但您也可以构建自己的自定义信息中心。
  3. 拨测:这些检查会定期检查面向用户的资源是否可用,并在可用时启用提醒。
  4. 群组列表:群组用于将具有相同属性和特征的资源组合在一起,以便它们作为群组或集群处理任务(例如监控和提醒)。它们可由系统自动发现并由用户指定。
  5. “突发事件”窗格:突发事件窗格会跟踪提醒突发事件。您必须先定义提醒政策,然后才能在此处看到任何内容。
  6. 事件日志:列出与受监控资源相关的事件,例如实例更改、事件事件等。

在我们检查这些图表之前,您会注意到,大多数实例在初始实例初始化之后已经展平。让我们看看是否可以通过在一个实例上生成一些负载来“取消平展”其中的部分动画。

如需通过 Cloud Shell 命令行以 SSH 方式连接到实例,请执行以下操作:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

就是这么简单!(在生产环境中,请确保您输入的密码 :)。另请注意,系统可能不会提示您添加密码。

或者,您也可以直接从控制台以 SSH 方式连接到实例,方法是导航到 Compute Engine &gt 虚拟机实例,然后点击 SSH

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

正在加载实例 nginx-plus-1 CPU。我们可以返回 Stackdriver 信息中心标签页并开始探索,但在返回 Stackdriver 信息中心页面之前,让我们有机会来安装 Cloud Logging 代理。

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

请注意,在生产环境中安装时,请务必检查 SHA-256 哈希。您可以在此处详细了解安装过程。

现在,您可以返回 Google Stackdriver 控制台了。

请花些时间熟悉如何使用信息中心和图表。将鼠标悬停在图表线上,看看会发生什么情况。更改图表的持续时间(控件位于右上角)。通过点击控制台左上角的 Stackdriver 徽标,您可以随时返回到“首页”视图。

我们来看一下 CPU 利用率图表:

图中的部分元素如下:

  • 突出显示的线条是当前选定的指标(一个图表可以显示多个指标)。
  • 灰色水平线表示鼠标指针悬停的时间点。
  • 底部是资源的名称,以及所选时间点的值。
  • 图表顶部彩色的圆点表示事件日志中详述的事件。您可以点击这些条目,获取事件列表。注意:如果您还没有任何活动,则不会看到任何活动。
  • 图表的右上方有三个控件(从左到右):
  • 切换在图表下方隐藏/显示指标列表
  • 切换全屏模式
  • 菜品种类繁多的菜单(如果您的图表非常详细,则必须尝试 X 光模式!)。请注意“查看日志”选项 - 稍后我们会详细介绍。

借助拨测,您可以快速验证任何网页、实例或资源组的健康状况。我们经常从世界各地的各种地点与每一项配置的检查联系。拨测可用作提醒政策定义中的条件。

您可以通过选择顶部菜单中的 Alerting > Uptime Checks 来显示检查及其状态。您还可以在 Google Stackdriver 信息中心和专门的资源页面上找到拨测部分。对于涵盖一组资源的拨测,您可以展开检查以显示组各个成员的状态。

让我们创建一项拨测。在 Stackdriver 主屏幕中找到拨测微件:

系统会显示一个新的弹出式窗口。我们可以配置单个资源或一组资源的拨测,利用自定义标头和载荷,添加身份验证和其他选项。目前,我们仅使用默认的 http 检查,该检查每 1 分钟检查一次自动创建的 nginx 组。

使用下方的屏幕截图填写不同的选项:

点击“测试”按钮可访问您的端点(您应该会看到 3 个绿色小点),然后点击“保存”。注意:如果收不到测试结果,则仍可继续进行实验,因为这可能只是测试检查时间的问题。

接下来,您将获得一个“Uptime Check Created”框,并询问您是否要为此项检查创建提醒政策。请在下一部分中执行此操作 - 请勿点击任何内容。

您可以设置提醒政策来定义条件,以确定您的云服务和平台是否正常运行。Cloud Monitoring 提供许多可在政策中使用的指标和运行状况检查。

违反提醒政策的条件时,系统会创建一个事件,并将其显示在 Stackdriver 控制台的“突发事件”部分。回复者可以确认已收到通知,并且可以在处理完成后关闭突发事件。

点击“创建提醒政策”,然后继续配置政策。

现在,您应该会看到以下屏幕:

为政策输入名称:"Uptime Check for nginx 群组”

现在,在“通知方法”部分,点击“添加通知”

输入与您的 Google Cloud 帐号关联的电子邮件地址。滚动到屏幕底部,然后点击“保存政策”。

(点击左上角的徽标)返回 Stackdriver 首页。

现在,您应该在信息中心的拨测部分看到已创建的拨测。目前,状态应为绿色。

向下滚动到事件日志,您应该会看到创建提醒政策的事件。

现在,我们来制造一些问题 :)

让我们来看看停止 Ngnix 服务时会发生什么。

通过 Cloud Shell 命令行再次通过 SSH 连接到实例:

$ gcloud compute ssh nginx-plus-1

然后输入:

yourusername@nginx-plus-1:~$ sudo service nginx stop

现在,我们创建的拨测应失败。因此,系统将创建一个事件,并向您在上述步骤中输入的地址发送一条提醒通知电子邮件。系统可能需要 1 分钟的时间才能检测到条件(请注意,在设置拨测时时长为 1 分钟?),所以我们来检查一下 nginx 组页面吧。

您可以通过以下几种方式导航到特定资源组的信息中心:

  1. 您可以点击首页中的群组名称。这会切换到专为监控群组资源而打造的信息中心。您还可以自定义此信息中心。



  2. 在顶级菜单中,选择“群组”,然后找到特定群组。

现在,点击自动刷新按钮,确保信息中心自动刷新。此图标将变为红色。

您现在正在查看一个自动创建的 nginx 组专用的信息中心。右侧则是与组相关的几个关键指标的图表。换句话说,这些图表显示了与 nginx 组中所有资源(我们之前创建的 3 个 nginx+ 虚拟机)相关的指标。

左侧显示的是与群组有关的各种信息:

  • 事件状态
  • 拨测
  • 事件日志
  • 资源列表(实例、卷等)

请注意,这些仅与组相关,因此事件日志仅会列出组的事件。

您可以点击不同的资源或子群组,以转换到它们各自的特定信息中心。例如,点击 nginx-plus-1 会转到一个信息中心,其中仅包含与该实例相关的指标和检查。立即试用:

当一组提醒条件满足特定条件时,系统就会打开 Stackdriver 突发事件。在我们的示例中,我们针对 nginx 拨测设置了一个提醒,该检查目前在 nginx-plus-1 上失败。借助突发事件,您可以跟踪当前的状况,并在解决问题时与其他团队成员进行协作。

谨此确认这次事件,以便其他团队成员了解我们正在进行调查:

请注意,这会将突发事件的状态从“Open”更改为“Acknowledged”。这种情况仍在持续(提醒政策条件仍然被违反),但您在告诉团队成员,您的问题仍在解决中。此事件还会记录在事件日志中。

突发事件可以手动解决,也可以自动解决。若要查看后一种情况,请通过 ssh 连接到 nginx-plus-1 并解决问题:

yourusername@nginx-plus-1:~$ sudo service nginx start

现在,拨测恢复正常后,突发事件会自动解决。您也可以通过选择“解析”菜单项来解决此问题。

Cloud Logging 是一个“日志记录即服务”解决方案,通过该平台,您可以集中查看和查询多个来源的日志。您还可以使用日志将其导出到其他目的地(Google Cloud Storage、Google BigQuery 或 Google Cloud Pub/Sub)。

如需访问 Cloud Logs Viewer,请从 Cloud Console 左侧菜单中选择它:

您将转到日志查看器,在那里,您可以使用预定义的查询或创建并保存自己的自定义查询,从整个云部署过程中获取来自多个资源的实时日志流,根据日志创建指标,以及进行导出等。

下面提供了一些便捷控件,可用于快速过滤相关信息:

  1. 按资源类型过滤
  2. 过滤出所选资源的特定日志类型
  3. 过滤特定日志级别
  4. 按特定日期过滤,以检查过去的问题
  5. 切换连续流式传输
  6. 文本、标签或正则表达式搜索框

现在练习缩小到特定日志。

从资源类型选择器(屏幕截图中的 1 处)中选择“Compute Engine -> 所有资源类型”

接下来,从日志类型选择器(屏幕截图中的 2 个)中选择 nginx-access 以查看所有访问日志

现在,将连续流式传输功能切换为开启 (5),以便在传入日志时进行查看。如果您没有看到任何新日志,请尝试在浏览器中输入其中一个 nginx+ 虚拟机的外部 IP 地址。

虽然此 Codelab 不会深入探讨日志,但稍后清理时可随时探索。您可以点击此处,详细了解如何浏览查看器。如果您希望更广泛地了解 Cloud Logging 的用途,请点击此处查看相关文档的顶级目录。

让我们释放在 Codelab 期间创建的计算资源。在 Cloud Shell 中运行以下命令:

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

接下来,转到 Google Stackdriver 控制台(在 Cloud Console 左侧窗格菜单中,点击“Monitoring”),移除已创建的拨测和提醒政策。为此,您可以使用“提醒 - 和策略”概览菜单项以及“提醒 - > 拨测”顶级菜单项。

您现在可以监控您的云应用了。

所学内容

  • 熟悉 Stackdriver 首页。
  • 了解信息中心和图表。
  • 创建拨测。
  • 创建简单的提醒政策。
  • 处理提醒突发事件。
  • 浏览日志查看器。

后续步骤

  • 尝试创建自定义信息中心。
  • 了解创建提醒政策的不同选项。
  • 了解使用 Cloud Logging 时可使用的不同选项。

了解详情

向我们提供反馈