开发者社区 > 飞天洛神云网络 > 负载均衡 > 正文

使用terraform配置CLB访问日志转发

我在使用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

非常感谢。

展开
收起
笑醉江湖 2023-08-08 15:58:10 100 0
7 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,当前确实没有找到Terraform Provider中关于CLB访问日志配置的相关资源。目前的CLB访问日志配置只能通过控制台手动处理,暂时没有办法使用Terraform、ROS或OpenAPI进行自动化配置。

    2023-08-29 14:57:51
    赞同 展开评论 打赏
  • 根据您提供的信息,目前最新版的Terraform Provider(1.208.1)中可能确实没有直接支持配置CLB访问日志的资源。此外,在ROS(Resource Orchestration Service)和CLB的API文档中也没有找到对应的OpenAPI。

    在这种情况下,您可以考虑以下两种方式来实现CLB访问日志的自动化配置:

    1. 自定义资源:您可以使用Terraform的自定义资源功能,通过调用阿里云的API来配置CLB的访问日志。虽然Terraform Provider本身可能没有提供直接支持,但您可以编写自己的Terraform Provider或使用Terraform的外部数据源来实现对阿里云API的调用。这样可以在Terraform中实现CLB访问日志的自动化配置。

    2. 脚本或其他自动化工具:如果Terraform无法满足您的需求,您可以考虑使用其他自动化工具,如Shell脚本、Python脚本或SDK来配置CLB的访问日志。这些工具可以直接调用阿里云的API来实现配置。您可以在构建基础设施的过程中集成这些工具,以实现自动化的CLB访问日志配置。

    CloudLens for CLB基于实时访问日志进行自动聚合,并提供智能巡检、实时告警等功能。

    7bea7f7cfe4b7746691ef7dbcf445f87_p161893.png

    支持集中管理当前阿里云账号下所有的CLB实例。

    5a12c5f18506019fbcd73d82b76bfecb_p423572.png

    支持一键开启实例日志(访问日志)和全局日志(配置审计日志、云监控事件)的采集功能,集中管理日志的采集状态。

    50b1bf33f53b7374b14473be673ff9f2_p423581.png

    访问日志:记录了所有发送到负载均衡的请求的详细信息,包括请求时间、客户端IP地址、延迟、请求路径和服务器响应等。
    配置审计日志:包括CLB配置变更日志以及资源不合规日志。
    云监控事件:记录SLB证书到期的相关事件。

    实时CLB访问日志的实时存储、查询与分析。
    提供丰富的可视化报表,包括监控中心、实例巡检等,并支持报表邮件、钉钉群订阅。功能说明
    自定义告警配置,告警通知直接对接消息中心、短信、邮件、语音、钉钉,并支持对接自定义WebHook。
    基于原始访问日志实时提取各类指标信息,包括PV、请求成功率、平均延迟、P50/P99延迟、出入流量等。并支持多个维度组合,包括slbid、host、method、status。
    提供智能巡检功能,支持全局巡检和slbid粒度巡检,并支持在可视化报表中直接标注异常点。

    2023-08-09 08:50:11
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    想要实现的 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访问日志的功能。

    2023-08-08 20:24:33
    赞同 展开评论 打赏
  • 使用Terraform配置CLB(负载均衡器)的访问日志转发,可以按照以下步骤进行:

    1. 安装Terraform:首先,在本地计算机上安装Terraform。你可以从Terraform官方网站下载适用于你的操作系统的安装程序,并按照说明进行安装。

    2. 创建Terraform工程:在一个新目录中创建一个新的Terraform工程。

    3. 编写Terraform配置文件:创建一个名为main.tf的文件,并使用编辑器打开。在该文件中,编写Terraform配置以定义CLB和相关资源。

    4. 定义CLB:使用Terraform的 aws_lb 资源来定义负载均衡器。在资源块中指定负载均衡器的名称、监听规则、目标组等。

    5. 配置访问日志:在CLB资源块中,使用 access_logs 参数来配置访问日志,指定要转发日志的存储位置、格式等。例如:

      resource "aws_lb" "example" {
      name                 = "example-lb"
      load_balancer_type   = "application"
      
      # 其他配置...
      
      access_logs {
       bucket = "example-bucket"
       prefix = "lb-logs/"
      }
      }
      
    6. 初始化和应用配置:打开命令行终端,导航到Terraform工程所在的目录,并运行以下命令初始化和应用配置:

      terraform init
      terraform apply
      

      Terraform将自动下载所需的提供商插件并初始化工程。然后,它将根据配置文件创建和配置CLB及其访问日志转发设置。

    7. 验证:等待Terraform完成配置的应用。一旦完成,你可以验证CLB是否已成功配置了访问日志转发。

    请注意,以上步骤是一个简单示例,并且假设你已经正确配置了AWS提供商。实际操作中,可能需要根据具体情况进行适当的更改和配置。

    2023-08-08 18:39:43
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    目前的确在最新版本的Terraform Provider中,没有直接支持配置CLB访问日志的相关资源。而且根据我所了解,阿里云CLB服务当前也没有对应的OpenAPI或ROS可供调用。

    因此,目前来说,你需要通过阿里云控制台手动配置CLB的访问日志,并使用OSS Shipper将日志保存在OSS上。这个过程无法通过Terraform、ROS或OpenAPI进行自动化配置。

    不过,Terraform社区和阿里云团队一直在努力扩展和完善Terraform Provider的功能。未来可能会有更新版本提供更多的资源支持,包括CLB访问日志配置。建议你关注Terraform官方文档和Terraform Provider for Alibaba Cloud的更新,以获取最新信息和功能支持。

    2023-08-08 17:46:45
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    如果您想要使用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}"
    }
    
    2023-08-08 17:47:30
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    如果现有API没有提供的话,可以考虑通过其他方式,比如使用阿里云的SDK来编写自定义脚本来实现。虽然不如Terraform方便,但仍然可以满足自动化

    2023-08-08 16:26:55
    赞同 展开评论 打赏
滑动查看更多

阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。

热门讨论

热门文章

相关电子书

更多
大规模日志数据平台架构面临的问题与挑战 立即下载
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
基于Terraform的自动化管理云上资源实践 立即下载

相关镜像