VictoriaLogs:一个用于 AWS VPC 流日志的 Grafana 仪表板 - 从 Grafana Loki 迁移

这是一篇关于使用 Terraform 配置 AWS 资源并创建 Grafana 仪表盘来展示 AWS VPC 流量日志的文章,主要内容如下:

  • 背景与目标:之前创建了展示 NAT Gateway 流量使用统计的 Grafana 仪表盘,但 Loki 处理原始日志和构建图表的时间较长,所以尝试使用 S3、Lambda 和 Promtail 以及 VictoriaLogs 来替代,创建新的 Grafana 仪表盘并迁移查询。
  • Terraform 配置

    • S3 和 Promtail Lambda:通过alb-s3-logs模块创建 S3 存储桶和 Lambda 函数,用于发送数据到 VictoriaLogs,包含创建存储桶、设置生命周期规则、阻止公共访问、创建存储桶策略和通知等步骤。
    • VPC Flow Logs 模块terraform-aws-modules/vpc/aws模块支持 VPC Flow Logs,但目前只设置了一个流向 Grafana Loki 的flow_log_destination_arn,可以添加另一个aws_flow_log资源来同时写入两个 S3 存储桶,还手动创建了流向 CloudWatch Logs 的 Flow Logs 用于验证查询结果。
  • 创建 Grafana 仪表盘

    • NAT Gateway Total processed:在 Loki 和 VictoriaLogs 中分别编写查询语句来统计通过 NAT Gateway 的总流量,包括从 Kubernetes Pods 到 Internet 和从 Internet 到 Kubernetes Pods 的流量,并与 CloudWatch Logs Insights 和 Cost Explorer 进行验证。
    • NAT Gateway Total OUT 和 IN processed:编写 Loki 和 VictoriaLogs 的查询语句来统计流量的方向,从 Internet 到 Kubernetes Pods 和从 Kubernetes Pods 到 Internet 的流量,并展示在 Grafana 仪表盘上。
    • NAT Gateway Total processed bytes/sec:在 Loki 中使用rate()函数计算每秒的流量,在 VictoriaLogs 中使用math管道来计算每秒的流量,并展示在 Grafana 仪表盘上。
    • Kubernetes Pods IN From IP:编写 Loki 和 VictoriaLogs 的查询语句来统计接收来自 Internet 的流量最多的 Kubernetes Pods IP,并与 CloudWatch Logs Insights 进行验证。
    • Kubernetes Pods IN From IP bytes/sec:编写 Loki 和 VictoriaLogs 的查询语句来获取流量的历史图片,并展示在 Grafana 仪表盘上,同时指出 Loki 和 VictoriaLogs 中topk()limit的问题。
    • Kubernetes Pods IN by IP and Port:使用 Table 可视化类型编写 Loki 和 VictoriaLogs 的查询语句来显示 IP 和端口信息,并在 Grafana 仪表盘上进行展示和设置。
  • 最终结果与性能比较:展示了 VictoriaLogs 和 Loki 在 Grafana 仪表盘上的结果以及 CPU 和内存资源使用情况,VictoriaLogs 在处理长时间范围的数据时表现更好。
  • 后续计划:希望在日志字段中添加 Kubernetes Pods IP 和外部资源地址的字段,以便进行更长期的采样,可以尝试使用vector.dev来收集和处理日志。
阅读 7
0 条评论