构建 fluentd 镜像与部署应用

2023-10-26

本文将具体介绍如何在基础镜像 ubuntu:20.04 上搭建 fluentd 镜像,并且实现监控指定目录的日志文件。

构建镜像

首先,从 docker hub 中挑选一个合适的基础镜像,例如 ubuntu:20.04。

$ docker pull ubuntu:20.04

启动该镜像的容器,并在容器内安装 curl、sudo 和 vim 等软件。

  • 启动容器:
$ docker run -it --name fluentd_source --privileged=true -u=root ubuntu:20.04 
  • 安装 curl、sudo 和 vim:
$ apt-get update
$ apt-get install curl
$ apt-get install sudo
$ apt-get install vim

注意事项:ubuntu:20.04 镜像内没有 sudo 命令,需要进行安装 https://blog.csdn.net/hello_1995/article/details/109222650

接着,安装 td-agent:

$ curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent4.sh | sh

安装完成后,输入 td-agent,若出现如下图所示的内容,则表明 fluentd 服务已经正常启动。

在这里插入图片描述

将刚才对 fluentd_source 容器所作的修改进行提交,构建新的镜像:

$ docker commit -m="build fluentd image" -a="clvsit" <container_id>
sha256:ed0436c036a6db2c5cbca0bb172d20a83e8f251ab937bd3a039da750533fe096

其中,<container_id> 为 fluentd_source 容器的 ID,控制台打印新镜像的 ID。

最后,为新的镜像打上标签:

$ docker tag <image_id> <image_name>

其中,<image_id> 为上一步返回的新镜像的 ID,<image_name> 为你想要命名的镜像名称。例如,将其命名为 fluentd:v1.0.0

部署与验证

为了验证镜像的有效性,首先在指定目录下创建 fluentd 目录,并在该目录下创建 config.conf

  • config.conf
<source>
  @type tail
  path /var/log/business/*.log
  tag test_log
    
  <parse>
    @type none
  </parse>
</source>
  
<match test_log>
  @type stdout
  @id output_stdout
</match>

<source>
  @type monitor_agent
  bind 0.0.0.0
  port 22430
</source>

<source>
  @type http
  @id input_http
  port 8888
</source>

<source>
  @type debug_agent
  @id input_debug_agent
  bind "127.0.0.1"
  port 24230
</source>

然后,输入如下命令启动 fluentd 容器:

docker run -itd --name fluentd \
    -p 8888:8888 \
    -p 22430:22430 \
    -p 24230:24230 \
    -p 24230:24230/udp \
    -v /<path>/fluentd/log/:/var/log/business/ \
    -v /<path>/fluentd/config.conf:/etc/td-agent/td-agent.conf \
    fluentd:v1.0.0 td-agent

测试: @type http

在控制台输入如下命令:

curl -X POST -d 'json={"json": "message"}' http://localhost:8888/test_log

通过 docker logs -n 10 fluentd 命令,可以看到 fluentd 接收到 http 请求,并将其作为标准输出(stdout)到控制台。

在这里插入图片描述

测试: @monitor_agent

在控制台输入如下命令,来查看 fluentd 各插件的使用情况:

curl http://localhost:22430/api/plugins.json 

等待片刻后,会在控制台打印如下所示的内容:

{
    "plugins": [
        {
            "plugin_id": "object:7d0",
            "plugin_category": "input",
            "type": "tail",
            "config": {
                "@type": "tail",
                "path": "/var/log/business/*.log",
                "tag": "test_log"
            },
            "output_plugin": false,
            "retry_count": null,
            "emit_records": 0,
            "emit_size": 0,
            "opened_file_count": 0,
            "closed_file_count": 0,
            "rotated_file_count": 0
        }
        // ...
    ]
}

测试: @tail

/<path>/fluentd/log 目录下(你可以在自己挂载的 fluentd 目录下)创建日志文件,例如 1.log,并往日志文件内随意写入内容:

Hello World!

再次执行 docker logs -n 10 fluentd,在控制条输出 1.log 日志文件内我们刚添加的内容。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建 fluentd 镜像与部署应用 的相关文章

  • 在 UNIX 时间戳 Shell/Bash 中将日期与时区转换

    我需要将日期从格式为 yyyy mm dd hh mm ss TZ 的字符串转换为 UNIX 时间 TZ 时区 到目前为止我所做的是将没有时区的 yyyy mm dd hh mm ss 格式的日期转换为时间戳 dateYMD 2019 2
  • 为什么分配大块内存会失败,而重新分配小块内存却不会失败

    这段代码的结果是x指向一块大小为 100GB 的内存 include
  • 使用请求和多处理时的奇怪问题

    请检查这个Python代码 usr bin env python import requests import multiprocessing from time import sleep time from requests import
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • 安全地记住 bash 脚本中的 ssh 凭据[重复]

    这个问题在这里已经有答案了 假设我有一个 bash 脚本 它通过 ssh 在远程计算机上执行命令 Do something here ssh otheruser host command1 Do something else ssh oth
  • 使用多线程的套接字服务器或文件服务器实现:概念不清楚

    请帮我理清这个概念 假设我们有一个使用线程实现的套接字端口服务器 套接字服务器侦听套接字端口 并在消息到达时创建一个线程来服务该请求 客户端代码向服务器发送给定数量的消息 该客户端代码也可以由多个用户在不同的计算机上运行 我知道客户端代码作
  • 为多个 python 应用程序重用 Docker 镜像

    我对 Docker 的整个世界都很陌生 实际上 我正在尝试为不同的 python 机器学习应用程序建立一个环境 这些应用程序应该在自己的 docker 容器中相互独立地运行 由于我并不真正理解使用基础映像并尝试扩展这些基础映像的方式 因此我
  • Docker 数据卷容器。我似乎无法备份

    阅读这些链接 https docs docker com userguide dockervolumes backup restore or migrate data volumes https docs docker com usergu
  • bash 或 sh 中的“=”和“==”运算符有什么区别

    我意识到 和 运算符都可以在 if 语句中使用 例如 var some string if var some string then doing something fi if var some string then doing some
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • 尝试 SSH 时设备的 ioctl 不合适

    我正在尝试通过 SSH 连接几台服务器并尝试获取sudo l每个服务器的输出 下面是我正在执行的脚本 bin bash serverlist tmp servers while IFS read r server netgroup user
  • 命令行参数中的“-”(破折号)有什么魔力?

    例子 创建 ISO 映像并将其直接刻录到 CD mkisofs V Photos r home vivek photos cdrecord v dev dev dvdrw 更改到上一个目录 cd 侦听端口 12345 并解压发送到该端口的数
  • 使用 gatttool 或 bluepy BLE 订阅通知

    我正在使用 bluepy 编写一个程序 用于监听蓝牙设备发送的特征 我还可以使用任何库或语言 唯一的限制是在 Linux 上运行 而不是在移动环境中运行 似乎仅在移动设备中广泛使用 没有人在桌面上使用 BLE 使用 bluepy 我注册了委
  • mysql_upgrade 失败 - innodb 表不存在?

    我正在将 mysql 5 5 docker 容器数据库升级到 mysql 5 6 docker 容器 我能够解决所有其他问题 最后我的服务器运行的是 5 6 但是当我运行 mysql upgrade 时出现以下错误 ERROR root 1
  • 如何在 Docker for Windows 中设置共享驱动器?

    如何在 Docker for Windows 中设置共享驱动器 我正在使用最新版本 18 Stable 和 Edge 我的设置屏幕如下所示 它缺少一些选项 如共享驱动器 高级和网络 如第二张图片所示 为什么我缺少这些选项 My settin
  • 使用 linux perf 工具测量应用程序的 FLOP

    我想使用 perf Linux 性能计数器子系统的新命令行接口命令 来测量某些应用程序执行的浮点和算术运算的数量 出于测试目的 我使用了我创建的一个简单的虚拟应用程序 请参见下文 因为我找不到任何为测量 FP 和整数运算而定义的 perf
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • IntelliJ IDEA 无法在 Ubuntu 上启动

    我用IDEA好几个月了 到现在还可以 现在从快捷方式启动IDEA没有效果 我想这是在一些更新之后发生的 我尝试重新安装IDEA 但问题仍然存在 从终端启动 idea sh 会产生类似的效果 chronoexp ChronoExp PC Pr

随机推荐

  • Elasticsearch的关键词搜索

    返回给前端的实体类 Data AllArgsConstructor NoArgsConstructor public class PageResult private Long total private List
  • el-table纵向垂直表头

    参考 https www jianshu com p 1f38eaffd070
  • facenet采坑之旅,主要记录一些用facenet过程中遇到的大大小小的问题

    问题1 Unable to run align dataset mtcnn py getting an attribute error module facenet has no attribute store revision info
  • 封装一个带el-form的,带el-table的,带分页的,带搜索查询的dialog组件,很使用的二次封装组件。

    封装dialog小案例 提示 这是我工作中封装的代码 很使用 需要的可以拿去 在我们的代码中往往会出现点击按钮出现弹窗进行操作 那么我们就需要对dialog进行一个二次封装 下边是大概的一个样式 对组件进行二次封装
  • burpsuite与sqlmap结合使用之CO2

    在使用sqlmap时 对一个页面进行注入时需要认证信息 如果将页面信息每次都保存到本地比较麻烦 使用命令行指令也需要cookie值 burpsuite中有一个快速sqlmap扫描的工具 CO2是一个burp插件 burp将拦截的请求直接发给
  • C++设计模式之适配器模式(adapter)(结构型)

    一 结构型模式概述 结构型模式 Structural Pattern 描述如何将类或者对象结合在一起形成更大的结构 就像搭积木 可以通过简单积木的组合形成复杂的 功能更为强大的结构 结构型模式可以分为类结构型模式和对象结构型模式 类结构型模
  • 低通,高通,带通,带阻滤波器的定义

    1 低通 Low pass filter 是容许低于截止频率的信号通过 但高于截止频率的信号不能通过的电子滤波装置 2 高通 是一种让某一频率以上的信号分量通过 而对该频率以下的信号分量大大抑制的电容 电感与电阻等器件的组合装置 其特性在时
  • 个人域名备案有什么要求?需要准备什么?

    现在域名是非常火爆的 越来越多的人开始注册域名 有个人域名 有企业域名 域名都是需要备案的 很多人不知道个人域名备案有哪些要求 需要准备些什么 下面我们一起来看看 个人域名备案的要求 1 国内主机都要求备案 2 网站访问者大多是国内人时国内
  • JDK的下载及配置JAVE_HOME

    初学JAVA的很多朋友的第一步就是下载JDK 首先 我来解释一下什么是JDK JDK是JAVA语言的软件开发工具包 目前已经到了JDK9的版本 在此提醒各位初学的朋友 下载JDK的话下载JDK8就够了 因为JDK9版本还不稳定 JDK就已经
  • 原生ajax 设置get请求参数和请求头信息和发送 post请求

    get请求发送参数直接在路径后面加问号即可 xhr open GET http 127 0 0 1 8000 server a 100 b 50 设置请求头信息 1 请求头中本来就有这个属性 只是修改该属性的值 xhr setRequest
  • ElasticSearch 查询语法

    环境 ElasticSearch6 4 2 以下查询请求方式均为Post 索引名 book 索引结构 mappings novel properties word count type interger author type keywor
  • Vue基础之指令与过滤器

    vue 简介 1 什么是 vue 官方给出的概念 Vue 读音 vju 类似于 view 是一套用于构建用户界面的前端框架 2 vue 的特性 vue 框架的特性 主要体现在如下两方面 数据驱动视图 双向数据绑定 2 1 数据驱动视图 在使
  • unity第一人称射击游戏,枪击游戏,功能完整可以当大作业或者毕设

    unity第一人称射击游戏 枪击游戏 含源码和exe导出文件 下载链接在文末 unity第一人称枪击游戏 分为海岛地图和沙漠地图 可以开镜射击 敌人可以移动 菜单页面有开始游戏 游戏说明 退出三个按钮 游戏有音效 可以通过ASDW移动人物
  • 查看jks证书内容

    keytool list v keystore xxx jks 输入密钥库口令
  • C++进阶必读书籍

    结合一些我的学习经历 希望对于想学C 的人有些帮助 大家有什么好想法望提出 我老师最初是从C语言教起的 用的是潭浩强的 lt
  • ajax day3

    3 将普通对象转为查询参数字符串形式 创建URLSearchParams参数 再用toString方法转为字符串 4 xhr对象 请求参数 body参数 5 promise promise对象一旦被兑现或拒绝 就是已敲定了 状态无法再被改变
  • Python模块之操作数据库MySQL篇

    目录 一 安装PyMySQL模块 二 操作数据库 1 连接数据库 2 执行sql语句 execute和executemany 3 创建数据表 三 操作MySQL数据表 1 新增数据 2 查询数据 3 修改数据 4 删除数据 5 踩到的坑 一
  • python批量读取Excel文件

    将同一个文件夹下的xlsx文件读取 import os import pandas as pd path r path of file for i in os listdir path df pd read excel os path jo
  • [读论文]CAAD-2018 Targeted Attack方向季军技术报告

    这次分享的是CAAD 2018比赛中Northwest Security团队的技术报告 该团队在此次比赛中取得了了targeted Attack 方向第三名 non targeted Attack方向第四名的成绩 题目 Leverage O
  • 构建 fluentd 镜像与部署应用

    本文将具体介绍如何在基础镜像 ubuntu 20 04 上搭建 fluentd 镜像 并且实现监控指定目录的日志文件 构建镜像 首先 从 docker hub 中挑选一个合适的基础镜像 例如 ubuntu 20 04 docker pull