在此 Codelab 中,您将了解如何开始使用 Stackdriver 来监控和查看 Google Cloud Platform 服务和虚拟机的性能指标和日志。
在此 Codelab 中,您将学习
- 熟悉 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_IP
是 nginx-plus-1 的公共 IP),以测试 nginx 是否正在运行并可访问,您应该能够看到 Nginx 页面:
您还可以输入以下内容来查看正在运行的实例:
$ gcloud compute instances list
Google Stackdriver 是一款功能强大的监控解决方案,集成了各种工具来协助监控和分析您的云端应用。您可以使用 Stackdriver 查看性能指标、设置和接收提醒、添加您自己的自定义信息中心和指标、查看日志和跟踪记录以及设置集成式信息中心,所有操作都可以在一个地方完成。
接下来的步骤将引导您启用 Stackdriver 和使用控制台。
默认情况下,Google Stackdriver 目前为 Beta 版,无法用于新项目。如需启用此功能,请在左侧导航栏中点击“监控”(您可能需要向下滚动才能找到该选项)
在下一个屏幕中,点击“启用 Monitoring”,然后等待一分钟启用该服务。
启用后,内容将发生变化,您会看到以下文本。点击“转到 Monitoring”,开始探索!您将需要使用 Google 登录,然后进入项目的 Stackdriver 控制台,您将在那里执行和分析监控相关的任务。
让我们熟悉一下首页。
- 顶部菜单:用于选择不同的视图 / 上下文,以及访问所有可用的 Stackdriver 操作。
- 信息中心:这是受监控的指标和事件的信息中心。这些信息中心最初是基于您项目中的资源的预定义系统信息中心,但您也可以构建自己的自定义信息中心。
- 拨测:这些检查会定期检查面向用户的资源是否可用,并在可用时启用提醒。
- 群组列表:群组用于将具有相同属性和特征的资源组合在一起,以便它们作为群组或集群处理任务(例如监控和提醒)。它们可由系统自动发现并由用户指定。
- “突发事件”窗格:突发事件窗格会跟踪提醒突发事件。您必须先定义提醒政策,然后才能在此处看到任何内容。
- 事件日志:列出与受监控资源相关的事件,例如实例更改、事件事件等。
在我们检查这些图表之前,您会注意到,大多数实例在初始实例初始化之后已经展平。让我们看看是否可以通过在一个实例上生成一些负载来“取消平展”其中的部分动画。
如需通过 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 > 虚拟机实例,然后点击 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 组页面吧。
您可以通过以下几种方式导航到特定资源组的信息中心:
- 您可以点击首页中的群组名称。这会切换到专为监控群组资源而打造的信息中心。您还可以自定义此信息中心。
- 在顶级菜单中,选择“群组”,然后找到特定群组。
现在,点击自动刷新按钮,确保信息中心自动刷新。此图标将变为红色。
您现在正在查看一个自动创建的 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 处)中选择“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 时可使用的不同选项。
了解详情
- 详细了解如何使用 monitoring API。
- 使用自定义指标。
向我们提供反馈
- 请抽出一点时间填写这份简短的调查问卷