我在使用Terraform尝试构建CLB的L7架构,期望能够配置CLB的访问日志,并且通过OSS shipper将对应的日志保存在OSS上。
目前我在最新版的Terraform Provider(1.208.1)中没有找到访问日志配置的相关资源,甚至在ROS以及CLB的API中也没有看到对应的OpenAPI。
想确认下,是不是当前CLB访问日志配置只能通过控制台手动处理,没有办法使用Terraform, ROS 或者 OpenAPI进行自动化配置。
https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/slb
https://www.alibabacloud.com/help/zh/resource-orchestration-service/latest/slb
https://www.alibabacloud.com/help/zh/server-load-balancer/latest/api-slb-2014-05-15-dir-access-logs
非常感谢。
楼主你好,当前确实没有找到Terraform Provider中关于CLB访问日志配置的相关资源。目前的CLB访问日志配置只能通过控制台手动处理,暂时没有办法使用Terraform、ROS或OpenAPI进行自动化配置。
根据您提供的信息,目前最新版的Terraform Provider(1.208.1)中可能确实没有直接支持配置CLB访问日志的资源。此外,在ROS(Resource Orchestration Service)和CLB的API文档中也没有找到对应的OpenAPI。
在这种情况下,您可以考虑以下两种方式来实现CLB访问日志的自动化配置:
自定义资源:您可以使用Terraform的自定义资源功能,通过调用阿里云的API来配置CLB的访问日志。虽然Terraform Provider本身可能没有提供直接支持,但您可以编写自己的Terraform Provider或使用Terraform的外部数据源来实现对阿里云API的调用。这样可以在Terraform中实现CLB访问日志的自动化配置。
脚本或其他自动化工具:如果Terraform无法满足您的需求,您可以考虑使用其他自动化工具,如Shell脚本、Python脚本或SDK来配置CLB的访问日志。这些工具可以直接调用阿里云的API来实现配置。您可以在构建基础设施的过程中集成这些工具,以实现自动化的CLB访问日志配置。
CloudLens for CLB基于实时访问日志进行自动聚合,并提供智能巡检、实时告警等功能。
支持集中管理当前阿里云账号下所有的CLB实例。
支持一键开启实例日志(访问日志)和全局日志(配置审计日志、云监控事件)的采集功能,集中管理日志的采集状态。
访问日志:记录了所有发送到负载均衡的请求的详细信息,包括请求时间、客户端IP地址、延迟、请求路径和服务器响应等。
配置审计日志:包括CLB配置变更日志以及资源不合规日志。
云监控事件:记录SLB证书到期的相关事件。
实时CLB访问日志的实时存储、查询与分析。
提供丰富的可视化报表,包括监控中心、实例巡检等,并支持报表邮件、钉钉群订阅。功能说明
自定义告警配置,告警通知直接对接消息中心、短信、邮件、语音、钉钉,并支持对接自定义WebHook。
基于原始访问日志实时提取各类指标信息,包括PV、请求成功率、平均延迟、P50/P99延迟、出入流量等。并支持多个维度组合,包括slbid、host、method、status。
提供智能巡检功能,支持全局巡检和slbid粒度巡检,并支持在可视化报表中直接标注异常点。
想要实现的 functionality 是可以通过阿里云控制台或者API完成的,但暂时还不支持在Terraform中配置。
主要的原因是:
Terraform Provider是由第三方根据阿里云API开发的。
当前Aliyun Terraform Provider还不支持为CLB配置访问日志的资源。
虽然阿里云API支持为CLB配置访问日志,但Terraform Provider尚未接入该功能。
具体的操作方式是:
通过阿里云控制台为CLB配置访问日志。
选择日志级别、事件类型、日志存储方式等。
将访问日志存储在指定的OSS Bucket中。
配置OSS Shipper将日志传输到其他OSS存储。
目前只能通过控制台或API来为CLB配置访问日志。
Terraform Provider还没有对应的资源支持。
我建议您可以:
通过脚本或API临时实现访问日志的配置。
提供反馈给Terraform Provider维护者,请求增加访问日志的资源支持。
相信随着阿里云API与Terraform Provider的不断升级,未来会支持在Terraform配置中完成CLB访问日志的功能。
使用Terraform配置CLB(负载均衡器)的访问日志转发,可以按照以下步骤进行:
安装Terraform:首先,在本地计算机上安装Terraform。你可以从Terraform官方网站下载适用于你的操作系统的安装程序,并按照说明进行安装。
创建Terraform工程:在一个新目录中创建一个新的Terraform工程。
编写Terraform配置文件:创建一个名为main.tf
的文件,并使用编辑器打开。在该文件中,编写Terraform配置以定义CLB和相关资源。
定义CLB:使用Terraform的 aws_lb
资源来定义负载均衡器。在资源块中指定负载均衡器的名称、监听规则、目标组等。
配置访问日志:在CLB资源块中,使用 access_logs
参数来配置访问日志,指定要转发日志的存储位置、格式等。例如:
resource "aws_lb" "example" {
name = "example-lb"
load_balancer_type = "application"
# 其他配置...
access_logs {
bucket = "example-bucket"
prefix = "lb-logs/"
}
}
初始化和应用配置:打开命令行终端,导航到Terraform工程所在的目录,并运行以下命令初始化和应用配置:
terraform init
terraform apply
Terraform将自动下载所需的提供商插件并初始化工程。然后,它将根据配置文件创建和配置CLB及其访问日志转发设置。
验证:等待Terraform完成配置的应用。一旦完成,你可以验证CLB是否已成功配置了访问日志转发。
请注意,以上步骤是一个简单示例,并且假设你已经正确配置了AWS提供商。实际操作中,可能需要根据具体情况进行适当的更改和配置。
目前的确在最新版本的Terraform Provider中,没有直接支持配置CLB访问日志的相关资源。而且根据我所了解,阿里云CLB服务当前也没有对应的OpenAPI或ROS可供调用。
因此,目前来说,你需要通过阿里云控制台手动配置CLB的访问日志,并使用OSS Shipper将日志保存在OSS上。这个过程无法通过Terraform、ROS或OpenAPI进行自动化配置。
不过,Terraform社区和阿里云团队一直在努力扩展和完善Terraform Provider的功能。未来可能会有更新版本提供更多的资源支持,包括CLB访问日志配置。建议你关注Terraform官方文档和Terraform Provider for Alibaba Cloud的更新,以获取最新信息和功能支持。
如果您想要使用Terraform来配置CLB访问日志转发,可以使用以下代码:
resource "aws_security_group" "clb" {
name_prefix = "clb-"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_security_group_rule" "clb_access_log_forward" {
type = "ingress"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
security_group_id = aws_security_group.clb.id
description = "Forward CLB access logs to another security group"
}
resource "aws_security_group" "clb_log_forward" {
name_prefix = "clb-logs-"
ingress {
from_port = 554
to_port = 554
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_security_group_rule" "clb_log_forward_to_s3" {
type = "ingress"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
security_group_id = aws_security_group.clb_log_forward.id
description = "Forward CLB access logs to S3"
}
resource "aws_s3_bucket" "clb_logs" {
bucket = "clb-logs-${var.environment}"
acl = "private"
}
resource "aws_s3_bucket_log_delivery" "clb_logs" {
bucket = aws_s3_bucket.clb_logs.bucket
prefix = "clb-access-logs/${var.environment}"
s3_log_group_name = aws_s3_log_group.clb_logs.name
s3_log_stream_prefix = "clb-access-logs/${var.environment}"
log_format = "json"
s3_log_delivery_type = "s3"
}
resource "aws_s3_log_group" "clb_logs" {
name_prefix = "clb-access-logs/${var.environment}"
retention {
days = 30
}
}
resource "aws_security_group_rule" "clb_log_forward_to_log_group" {
type = "ingress"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
security_group_id = aws_security_group.clb_log_forward.id
description = "Forward CLB access logs to S3 log group"
}
resource "aws_log_group" "clb_logs" {
name = "clb-access-logs-${var.environment}"
path = "/aws/lambda/${var.function_name}"
}
如果现有API没有提供的话,可以考虑通过其他方式,比如使用阿里云的SDK来编写自定义脚本来实现。虽然不如Terraform方便,但仍然可以满足自动化
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。