简介
欢迎来到小李哥谷歌云GCP云计算知识学习系列,适用于任何无云计算或者谷歌云技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。
我将每天介绍一个基于全球三大云计算平台(AWS, Azure, GCP)的全球前沿云开发/架构技术基础解决方案,帮助大家快速了解国际上最热门的云计算平台上的最佳实践和前沿技术,并应用到自己的日常工作里。本次我将介绍如何创建监控面板,监控云上资源状态,包括虚拟机、MongoDB, Apache, Nginx, Elasticsearch服务器等。监控方案架构图如下:
方案所需基础知识
什么是 GCP Cloud Monitoring?
GCP Cloud Monitoring 是 Google Cloud 提供的一项综合性监控服务,帮助用户实时监测、分析和可视化 Google Cloud 平台(GCP)上的资源和应用程序的性能。Cloud Monitoring 支持收集和跟踪各种云资源的指标、日志和事件,帮助开发者和运维团队快速识别问题、优化性能,并确保系统的稳定性和高可用性。
为什么要对云资源进行监控?
保障系统可用性:
通过 Cloud Monitoring,用户可以实时监控云资源的运行状况,及时发现并响应潜在的故障和性能问题,确保系统的持续可用性和业务连续性。
优化性能:
监控可以帮助识别性能瓶颈,了解资源使用情况,优化应用程序和基础设施的性能,以提供更好的用户体验。
有效的资源管理:
通过跟踪资源的使用情况,用户可以更好地管理和分配资源,避免浪费,优化成本,同时确保关键服务的资源需求得到满足。
提高安全性:
监控能够实时检测异常活动或未授权的访问,帮助及时采取措施,防止安全事件的发生,保护数据和应用的安全。
合规性和审计需求:
对资源进行监控可以生成详细的日志和报告,帮助满足行业法规的合规性要求,并为内部审计提供支持。
本方案包括的内容
1. 创建一个GCP云端监控账户,用于监控两个Projects项目
2. 在集中监控平台上监控两个Projects中的资源
云资源监控具体步骤
1. 确认在us-west1-a上,创建一个虚拟机“instance2”
2. 在搜索栏中输入Cloud Monitoring并点击进入
3. 点击左侧菜单,进入Settings。
4. 点击"Metric Scope",再点击“Add GCP Projects”添加监控项目。
5. 点击“Select Projects”选择第一个Project项目添加,并点击SELECT,再点击ADD Projects添加。
6. 接下来我们进入左侧菜单栏“Groups”创建监控组,点击“Create Group”创建监控组。
7. 为Group起名为“DemoGroup”,添加条件输入“资源名包含instance”关键字,最后点击Create创建。这一步是把所有包含“instance”关键字的云资源进行监控。
8. 接下来我们对我们服务器上运行的应用进行健康检测,点击左侧菜单栏”Uptime Check“,点击”Create Uptime Check“添加健康检测。
9. 选择TCP类型检测,检测22端口,频率为1min每次,监控资源为DemoGroup资源组。
10. 选择健康检测失败时触发报警并发送邮件通知,为报警命名为”DemoGroup uptime check“。
11. 最后为该健康检测命名”DemoGroup uptime check“,并点击Create创建。
12. 接下来我们为健康检测添加报警策略,点击右侧的三个点,并点击”Add alert policy“。
13. 点击上方”Add Alert Condition“添加报警条件,再选择Metric监控指标,搜索”Uptime“,选中后点击右下方的Apply。
14. 点击"Add Filters"选择我们要监控的资源,我们在Filter字段选择”instance_id“,右侧的值选择我们要监控的VM ID。
15. 选择报警触发条件为”Metric Absence“,表示在健康检测没有数据/失败时报警,再点击Next。
16. 最后我们为报警策略命名为”Uptime Check Policy“,点击create创建。
17. 在最后我们创建一个监控面板,监控服务器的健康状态,点击左侧的Dashboard页面,并点击Create创建一个面板。
18. 点击”Add Widget“添加图标,并点击Line添加折线图。
19. 点击Select Metric选择需要展示的指标,搜索”Uptime“服务器健康状态,选中并点击右下角Apply
20. 最终我们就可以创建面板监控服务器的健康状态了,数值2表示监控资源组内的两台服务器都是健康的。
如何利用Python代码在GCP上设置资源监控和报警?
下面是使用 Google Cloud Python SDK 编写的代码片段,用于创建一个监控实例 Uptime 的 HTTP 80 端口的检查,并设置警报策略(Metric Absence),当监控失败时发送邮件报警。
from google.cloud import monitoring_v3
from google.protobuf.duration_pb2 import Duration
from google.protobuf import field_mask_pb2
def create_uptime_check_config(project_id, instance_id, host):
client = monitoring_v3.UptimeCheckServiceClient()
project_name = f"projects/{project_id}"
uptime_check_config = monitoring_v3.UptimeCheckConfig(
display_name=f"Uptime check for {instance_id}",
monitored_resource=monitoring_v3.MonitoredResource(
type="gce_instance",
labels={
"instance_id": instance_id,
"project_id": project_id,
},
),
http_check=monitoring_v3.UptimeCheckConfig.HttpCheck(
path="/",
port=80,
),
timeout=Duration(seconds=10),
period=Duration(seconds=60),
)
created_config = client.create_uptime_check_config(
parent=project_name, uptime_check_config=uptime_check_config
)
print(f"Created Uptime Check: {created_config.name}")
return created_config.name
def create_alert_policy(project_id, uptime_check_config_name, email_address):
client = monitoring_v3.AlertPolicyServiceClient()
project_name = f"projects/{project_id}"
alert_policy = monitoring_v3.AlertPolicy(
display_name="Uptime check alert policy",
conditions=[
monitoring_v3.AlertPolicy.Condition(
display_name="Metric Absence Condition",
condition_monitoring_query_language=m.GoodSloQuery(
"fetch gce_instance::uptime_check::check_passed"
" | filter metric_name='{uptime_check_config_name}'"
" | every 60s",
duration=Duration(seconds=300),
)
)
],
notification_channels=[
f"{email_address}",
],
combiner=monitoring_v3.AlertPolicy.ConditionCombinerType.AND,
)
created_policy = client.create_alert_policy(
name=project_name, alert_policy=alert_policy
)
print(f"Created Alert Policy: {created_policy.name}")
def main():
project_id = "your-gcp-project-id"
instance_id = "your-instance-id"
host = "your-instance-host"
email_address = "your-email@example.com"
uptime_check_name = create_uptime_check_config(project_id, instance_id, host)
create_alert_policy(project_id, uptime_check_name, email_address)
if __name__ == "__main__":
main()
代码说明:
- create_uptime_check_config: 创建一个 Uptime Check,监控 HTTP 80 端口。
- create_alert_policy: 创建一个警报策略,使用“Metric Absence”作为触发条件,并指定通知邮箱。
- main: 设置项目、实例、主机和邮箱地址,并调用上述函数创建监控配置和警报策略。
以上就是在谷歌云GCP上对云资源监控的全部步骤。欢迎大家关注零基础5分钟上手谷歌云系列,未来获取更多国际前沿的谷歌云GCP云开发/云架构方案!