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

AWSFireLens轻松实现容器日志处理

applog应用程序和fluent-bit共享磁盘,日志内容是json格式数据,输出到S3也是JSON格式

applog应用部分在applog目录:

Dockerfile文件内容
FROM alpine
RUN mkdir -p /data/logs/
COPY testlog.sh /bin/
RUN chmod 777 /bin/testlog.sh
ENTRYPOINT ["/bin/testlog.sh"]

testlog.sh文件内容
#!/bin/sh
while :
do
   echo "{\"server_date\":\"2020-01-19\",\"hostname\":\"ip-172-31-43-24.cn-northwest-1.compute.internal\",\"pid\":5404,\"method\":\"POST\",\"clientIP\":\"10.11.12.13\",\"countryCode\":\"ID\",\"url\":\"/v1/mail/list\",\"status\":\"200\",\"latency\":7,\"length\":24,\"userId\":9536605,\"code\":20001}" >> /data/logs/access.log
   echo "{\"server_date\":\"2020-01-19\",\"hostname\":\"ip-172-31-43-24.cn-northwest-1.compute.internal\",\"pid\":1000,\"method\":\"GET\",\"clientIP\":\"20.21.22.23\",\"countryCode\":\"ID\",\"url\":\"/v1/mail/list\",\"status\":\"500\",\"latency\":10,\"length\":12,\"userId\":1010001,\"code\":10001}" >> /data/logs/error.log
sleep 10
done

fluent-bit部分在fluent-bit目录:

Dockerfile文件内容
FROM amazon/aws-for-fluent-bit:latest
ADD extra.conf /extra.conf

extra.conf文件内容
[SERVICE]
    Parsers_File /fluent-bit/parsers/parsers.conf
    Flush 1
    Grace 30

[INPUT]
    Name tail
    Path /data/logs/access.log
    Tag access

[INPUT]
    Name tail
    Path /data/logs/error.log
    Tag error

[FILTER]
    Name parser
    Match *
    Key_Name log
    Parser json  
    Reserve_Data True

[OUTPUT]
    Name firehose
    Match access
    region us-east-1
    delivery_stream fluentbit-access

[OUTPUT]
    Name firehose
    Match error
    region us-east-1
    delivery_stream fluentbit-error  #要在firehouse里面设置
    
----------------
报错信息/ecs/firelens-sample/文件夹下面ecs/log_router/03aafe7fa1f4452d862854b33311190f

打镜像步骤:
cd fleuntbit
docker build -t fleuntbit:v3 .
docker tag fleuntbit:v3 402097323/fleuntbit:v3
docker push 402097323/fleuntbit:v3

dockerup账号******/******

taskdef.json:
{
    "family": "firelens-sample",
    "taskRoleArn": "arn:aws:iam::254278701124:role/ecsTaskExecutionRole",
    "executionRoleArn": "arn:aws:iam::254278701124:role/ecsTaskExecutionRole",
    "containerDefinitions": [
        {
            "essential": true,
            "name": "log_router",
            "image": "402097323/fleuntbit:v3",
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "/ecs/firelens-sample",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                }
            },
            "mountPoints": [
                {
                    "sourceVolume": "data",
                    "containerPath": "/data",
                    "readOnly": false
                }
            ],
            "firelensConfiguration": {
                "type": "fluentbit",
                "options": {
                    "config-file-type": "file",
                    "config-file-value": "/extra.conf",
                    "enable-ecs-log-metadata": "false"  #如果不设置enable-ecs-log-metadata 为 false,则日志条目中会包括以下元数据信息:1、ecs_cluster任务所属的集群的名称;2、ecs_task_arn容器所属的任务的完整ARN;3、ecs_task_definition任务正在使用的任务定义名称和修订;4、ec2_instance_id容器托管于的 Amazon EC2实例ID。此字段仅对使用EC2启动类型的任务有效
                }
            }
            "user": "0",
        },
        {
            "essential": true,
            "name": "myapp",
            "image": "402097323/applog:v2",
            "logConfiguration": {
                "logDriver": "awsfirelens"
            }
            "mountPoints": [
                {
                    "sourceVolume": "data",
                    "containerPath": "/data",
                    "readOnly": false
                }
            ],
            "dependsOn": [
                {
                    "containerName": "log_router",
                    "condition": "START"
                }
            ],

        }
    ],
    "cpu": "256",
    "memory": "512"
    "volumes": [
        {
            "name": "data",
            "host": {}
        }
    ],
    "compatibilities": [
        "EC2",
        "FARGATE"
    ],
    "requiresCompatibilities": [
        "FARGATE"
    ],
     "networkMode": "awsvpc"
}

创建 Amazon Kinesis Firehose 传输流和 S3 存储桶,S3对应存储桶如图,要设置S3存储桶权限为允许公开,ref:  使用 AWS FireLens 轻松实现 AWS Fargate 容器日志处理 | 亚马逊AWS官方博客

http://www.lryc.cn/news/64835.html

相关文章:

  • Java程序设计入门教程--案例:自由落体
  • Qt音视频开发44-本地摄像头推流(支持分辨率/帧率等设置/实时性极高)
  • SpringCloud学习(七)——统一网关Gateway
  • 《花雕学AI》31:ChatGPT--用关键词/咒语/提示词Prompt激发AI绘画的无限创意!
  • 计算机组成原理9控制单元的结构
  • MySQL数据备份和恢复
  • 数据结构与算法之链表: Leetcode 237. 删除链表中的节点 (Typescript版)
  • 继承的相关介绍---C++
  • Java多线程深入探讨
  • SpringCloud全面学习笔记之进阶篇
  • 英语中主语从句的概念及其用法,例句(不断更新)
  • 数组的子数组(亚阵列)、子序列,字符串的子串、子序列
  • MySQL 知识:迁移数据目录到其他路径
  • Go | 一分钟掌握Go | 8 - 并发
  • 【滤波】多元高斯
  • 单源最短路问题
  • Security方法注解权限控制过程及自定义权限表达式
  • vue 省市县三级联动
  • ChatGPT实现编程语言转换
  • 浅拷贝和深拷贝
  • 进程地址空间与页表方面知识点(缺页中断及写时拷贝部分原理)
  • Photoshop如何使用滤镜之实例演示?
  • Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】
  • 基于opencv的YOLOV3对图片的目标检测
  • Mermaid流程图
  • 国产!全志科技T507-H工业核心板( 4核ARM Cortex-A5)规格书
  • java小记 2023-05-05
  • CentOS安装Nginx
  • CSS布局基础(CSS书写顺序 导航栏写法 常见问题)
  • 打造卓越 QML 层级设计:从入门到精通