当前位置: 首页 > news >正文

观测云全面支持 OaC,通过 Terraform 管理您的可观测性

什么是 Terraform?

Terraform 是 Hashicorp 公司开源的一种资源编排工具,常用于管理多云资源。利用 Terrafrom 提供的特定配置语言 HCL(Hashicorp Configuration Language)来定义资源,再由 Terraform 统一解析构建资源之间的依赖关系,生成执行计划,调用各个厂商的具体实现来完成资源的生命周期管理。

Terraform 支持多种云厂商,包括国内的阿里云、华为云、腾讯云等,还有国外的AWS、Azure、Google Cloud等。使用 Terraform,我们可以定义服务器、网络和数据库等,不需要手动操作,通过编写可维护和可重复执行的代码来管理基础设施资源,这样使得我们对基础设施资源的管理更加简单、可重复和可维护。

通常 Terraform 被用于管理 IaaS 和 PaaS 层资源,但 Terraform 也可以用于管理 SaaS 层资源。利用观测云 Terraform Provider 可以创建Pipeline、黑名单、角色和用户组等可观测性资源,实现 OaC(Observability as Code)。

  • 观测云 Terraform Provider:Terraform Registry
  • 观测云 Terraform Provider Github:https://github.com/GuanceCloud/terraform-provider-guance

为什么使用 Terraform?

Terraform 宗旨在于跨平台、自动化、环境一致性、变更审计和自动化测试,可以大幅减少资源管理的问题。

  • 跨平台特性:目前海内外累计已有超过 40 家公有云厂商支持,另有 200 多个软件服务商为其提供支持。利用 Terraform 跨平台特性,可以非常方便的将观测云资源同其他厂商资源进行集成。
  • 自动化:所有的资源变更都由 Terraform 来管理执行,不需要手动执行相同的操作,让工程师把时间浪费在美好的事情上。
  • 环境一致性:通过 Terrafrom 部署环境,可以把配置复制到任何环境中,不需要担心环境非一致性带来的异常。
  • 变更审计:通过代码管理资源,terraform plan 生成执行计划,可以进行版本控制,任何资源变更都变得可追踪、可审计。
  • 自动化测试:资源通过代码配置管理后,在测试环境或者 CI 进行自动化测试变得可行,每一次资源变更都可以进行相同的兼容性测试。

使用 Terraform 创建观测云资源

利用观测云 Terraform provider 可以管理观测云的众多资源,我们可以使用 Terraform 来实现以下功能:

  • 创建 Pipeline:Pipelines 是一种运行在 DataKit 上的轻量级脚本语言,用于对采集到的数据进行自定义解析和修改。通过定义解析规则,它们能够将不同种类的数据细粒度地切割并转换为结构化的格式,以满足具体的数据管理需求;
  • 创建 BlackList:观测云支持通过设置黑名单的方式过滤掉符合条件的不同类型的数据,即配置黑名单以后,符合条件的数据不再上报到观测云工作空间,帮助您节约数据存储费用;
  • 创建 MemberGroup:若企业需要针对不同的团队设置不同的告警策略,以便相关团队能够第一时间获取并解决故障问题,可以通过设置团队,并相关的团队成员到该团队,然后在告警策略,设置告警通知对象为该团队;
  • 创建 Role:角色管理为用户提供一个直观的权限管理入口,支持自由调整不同角色对应的权限范围、为用户创建新的角色、为角色赋予权限范围,满足不同用户的权限需要。

除此之外,通过观测云 Terraform provider 也可以创建监控器和 Dashboard 相关资源,具体使用方式可参考相关 Terraform 文档。

配置 Provider

开始使用观测云 Terraform 之前,通过「API Key 管理」创建 API Key,作为访问观测云的鉴权认证方式,在 Terraform provider.tf 文件配置如下信息:

# Key ID、region
provider "guance" {access_token = "svUTRWyPFClxxxxxxxxxxxxxxxBGJ3gp8O5a9Yt"region = "ningxia"
}

使用 Terraform 创建 Pipeline

Pipeline 作为一种轻量化脚本语言,Pipeline 提供了高效的数据处理能力;它拥有丰富的函数库,支持对多种常见数据类型的标准化操作;用户可以使用Terraform 创建Pipeline 脚本,使得脚本的创建和管理变得更加便捷。

资源创建说明文档:
Terraform Registry

代码示例:main.tf

resource "guance_pipeline" "demo" {name     = "terraform_test12"category = "logging"source = ["nginx"]as_default = 1is_force   = falsetype       = "local"content    = <<EOFadd_pattern("date2", "%%{YEAR}[./]%%{MONTHNUM}[./]%%{MONTHDAY} %%{TIME}")# access loggrok(_, "%%{NOTSPACE:client_ip} %%{NOTSPACE:http_ident} %%{NOTSPACE:http_auth} \\[%%{HTTPDATE:time}\\] \"%%{DATA:http_method} %%{GREEDYDATA:http_url} HTTP/%%{NUMBER:http_version}\" %%{INT:status_code} %%{INT:bytes}")# access logadd_pattern("access_common", "%%{NOTSPACE:client_ip} %%{NOTSPACE:http_ident} %%{NOTSPACE:http_auth} \\[%%{HTTPDATE:time}\\] \"%%{DATA:http_method} %%{GREEDYDATA:http_url} HTTP/%%{NUMBER:http_version}\" %%{INT:status_code} %%{INT:bytes}")grok(_, '%%{access_common} "%%{NOTSPACE:referrer}" "%%{GREEDYDATA:agent}"')user_agent(agent)# error loggrok(_, "%%{date2:time} \\[%%{LOGLEVEL:status}\\] %%{GREEDYDATA:msg}, client: %%{NOTSPACE:client_ip}, server: %%{NOTSPACE:server}, request: \"%%{DATA:http_method} %%{GREEDYDATA:http_url} HTTP/%%{NUMBER:http_version}\", (upstream: \"%%{GREEDYDATA:upstream}\", )?host: \"%%{NOTSPACE:ip_or_host}\"")grok(_, "%%{date2:time} \\[%%{LOGLEVEL:status}\\] %%{GREEDYDATA:msg}, client: %%{NOTSPACE:client_ip}, server: %%{NOTSPACE:server}, request: \"%%{GREEDYDATA:http_method} %%{GREEDYDATA:http_url} HTTP/%%{NUMBER:http_version}\", host: \"%%{NOTSPACE:ip_or_host}\"")grok(_,"%%{date2:time} \\[%%{LOGLEVEL:status}\\] %%{GREEDYDATA:msg}")group_in(status, ["warn", "notice"], "warning")group_in(status, ["error", "crit", "alert", "emerg"], "error")cast(status_code, "int")cast(bytes, "int")group_between(status_code, [200,299], "OK", status)group_between(status_code, [300,399], "notice", status)group_between(status_code, [400,499], "warning", status)group_between(status_code, [500,599], "error", status)nullif(http_ident, "-")nullif(http_auth, "-")nullif(upstream, "")default_time(time)EOFtest_data = <<EOF127.0.0.1 - - [24/Mar/2021:13:54:19 +0800] "GET /basic_status HTTP/1.1" 200 97 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36"EOFextend = {"app_id"      = ["test"],"measurement" = ["nginx_access_log"]}
}

执行创建:

# terrform 常用命令 https://developer.hashicorp.com/terraform/cli/commands/plan
terraform init    # 初始化
terraform plan    # 校验执行计划
terraform apply   # 创建资源
terraform destroy # 删除资源

使用 Terraform 创建 BlackList

观测云支持通过设置黑名单的方式过滤掉符合条件的不同类型的数据,即配置黑名单以后,符合条件的数据不再上报到观测云工作空间,帮助您节约数据存储费用。

资源创建说明文档:
Terraform Registry

代码示例:main.tf

resource "guance_blacklist" "demo" {type   = "logging"source = "nginx"filters = [{name      = "status"operation = "in"condition = "and"values    = ["error"]}]
}

执行创建:

# terrform 常用命令 https://developer.hashicorp.com/terraform/cli/commands/plan
terraform init    # 初始化
terraform plan    # 校验执行计划
terraform apply   # 创建资源
terraform destroy # 删除资源

使用 Terraform 创建 MemberGroup

观测云支持将不同的空间成员,添加到一个团队中,可以在监控的告警策略管理和通知对象管理中应用已新建的团队,以便相关团队能够第一时间获取并解决故障问题。

资源创建说明文档:
Terraform Registry

代码示例:main.tf

variable "email" {type = string
}data "guance_members" "demo" {search = var.email
}resource "guance_membergroup" "demo" {name          = "oac-demo2"account_uuids = data.guance_members.demo.members[*].uuid
}output "member" {value = data.guance_members.demo.members
}

执行创建:

# terrform 常用命令 https://developer.hashicorp.com/terraform/cli/commands/plan
terraform init    # 初始化
terraform plan    # 校验执行计划
terraform apply   # 创建资源
terraform destroy # 删除资源

使用 Terraform 创建 Role

若您需要对企业中的员工设置不同的观测云访问权限,以达到不同员工之间的权限隔离,您可以使用观测云的角色管理功能。角色管理为用户提供一个直观的权限管理入口,支持自由调整不同角色对应的权限范围、为用户创建新的角色、为角色赋予权限范围,满足不同用户的权限需要。

资源创建说明文档:
Terraform Registry

代码示例:main.tf

resource "guance_role" "role" {name = "tf-test-role1"desc = "test role"keys = ["snapshot.delete", "workspace.readMember"]
}

执行创建:

# terrform 常用命令 https://developer.hashicorp.com/terraform/cli/commands/plan
terraform init    # 初始化
terraform plan    # 校验执行计划
terraform apply   # 创建资源
terraform destroy # 删除资源

总结

前面是一些常用功能的示例,观测云 Terraform Provider 正在不断开发中,未来我们会支持更多的观测云资源。同时,我们也非常欢迎大家一同参与贡献,为中国可观测性基础设施添砖加瓦。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Pyside】pycharm2024配置conda虚拟环境
  • 我与Linux的爱恋:进程地址空间
  • stable diffusion 神经网络插件 controlnet 的安装,很详细
  • Linux下如何实现不用加路径调用启动脚本
  • 执行网络攻击模拟的 7 个步骤
  • AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成
  • 不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!
  • WebGL光照与材质
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • Android TV RecyclerView列表获得焦点左右换行
  • 每天五分钟玩转深度学习pytorch:L1正则化和L2正则化的应用
  • Xcdoe快速更新安装的小Tips
  • 超详细超实用!!!AI编程之cursor编写设计模式迪米特法则实例(八)
  • 【高级数据结构】树状数组
  • 时间序列分析算法
  • 【知识碎片】第三方登录弹窗效果
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular 2 DI - IoC DI - 1
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • iOS 系统授权开发
  • JavaWeb(学习笔记二)
  • mysql innodb 索引使用指南
  • ng6--错误信息小结(持续更新)
  • Python学习之路16-使用API
  • SpiderData 2019年2月16日 DApp数据排行榜
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 聚簇索引和非聚簇索引
  • 开发基于以太坊智能合约的DApp
  • 盘点那些不知名却常用的 Git 操作
  • 前端_面试
  • 学习笔记TF060:图像语音结合,看图说话
  • AI算硅基生命吗,为什么?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​zookeeper集群配置与启动
  • #Linux(帮助手册)
  • #QT(串口助手-界面)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (每日一问)基础知识:堆与栈的区别
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ./configure、make、make install 命令
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET CLR Hosting 简介
  • .NET 使用配置文件
  • .NET和.COM和.CN域名区别
  • .net中调用windows performance记录性能信息
  • .考试倒计时43天!来提分啦!
  • :中兴通讯为何成功
  • @31省区市高考时间表来了,祝考试成功
  • [1127]图形打印 sdutOJ
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [ajaxupload] - 上传文件同时附件参数值