docker日志发往fluentd


docker启动时添加如下参数:

docker run --log-driver=fluentd --log-opt fluentd-address=ip:port --log-opt tag="tag"

其中tag可用如下参数替换,更多查看logging context.

{{.ID}}The first 12 characters of the container ID.
{{.FullID}}The full container ID.
{{.Name}}The container name.
{{.ImageID}}The first 12 characters of the container’s image ID.
{{.ImageFullID}}The container’s full image ID.
{{.ImageName}}The name of the image used by the container.
{{.DaemonName}}The name of the docker program (docker).

example:

$ docker run -it --rm \
    --log-driver syslog \
    --log-opt tag="{{ (.ExtraAttributes nil).SOME_ENV_VAR }}" \
    --log-opt env=SOME_ENV_VAR \
    -e SOME_ENV_VAR=logtester.1234 \
    flyinprogrammer/logtester
可以得到如下输出

Apr  1 15:22:17 ip-10-27-39-73 logtester.1234[45499]: + exec app
Apr  1 15:22:17 ip-10-27-39-73 logtester.1234[45499]: 2016-04-01 15:22:17.075416751 +0000 UTC stderr msg: 1

--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" 

得到输出

Aug  7 18:33:19 HOSTNAME hello-world/foobar/5790672ab6a0[9103]: Hello from Docker.


全局模式

/etc/docker/daemon.json添加如下项

{
  "log-driver": "fluentd",
  "log-opts": {
    "fluentd-address": "ip:port",
    "tag": "tag"
  }
}


### 使用 Docker-Compose 部署 Fluentd 的方法 Fluentd 是一种流行的开源数据收集器,用于统一日志记录层。通过使用 DockerDocker Compose,可以轻松地部署和管理 Fluentd 实例。 #### 1. 创建 `docker-compose.yml` 文件 为了使用 Docker Compose 部署 Fluentd,需要创建一个名为 `docker-compose.yml` 的文件,并在其中定义所需的服务。以下是一个基本的配置示例: ```yaml version: '3' services: fluentd: image: fluent/fluentd:v1.14-debian-1 # 使用官方镜像并指定版本号[^4] container_name: fluentd ports: - "24224:24224" - "24224:24224/udp" # 开放端口以便接收日志消息 restart: always environment: - FLUENTD_CONF=fluentd.conf # 设置 Fluentd 的配置文件名称 volumes: - ./fluentd.conf:/fluentd/etc/fluentd.conf:ro # 将本地配置文件挂载到容器内部 - /var/log/fluentd:/var/log/fluentd # 可选:持久化日志存储路径 ``` 上述配置中: - `image`: 指定使用的 Fluentd 镜像及其版本。 - `ports`: 映射主机与容器之间的端口,允许外部设备向 Fluentd 发送日志- `environment`: 定义环境变量以加载特定的 Fluentd 配置文件。 - `volumes`: 将宿主机上的自定义配置文件映射至容器内的 `/fluentd/etc/fluentd.conf` 路径。 --- #### 2. 编写 Fluentd 配置文件 (`fluentd.conf`) Fluentd 的行为由其配置文件决定。下面提供了一个简单的 `fluentd.conf` 示例,展示如何处理来自应用程序的日志输入并将它们输出到标准控制台: ```conf <source> @type forward # 接收其他进程发送过来的数据流 port 24224 bind 0.0.0.0 </source> <match **> # 处理所有匹配模式的日志条目 @type stdout # 输出到标准输出 (console) </match> ``` 此配置实现了两个主要功能: - `<source>` 块监听 TCP 或 UDP 上的传入连接,默认绑定地址为 `0.0.0.0` 并开放端口号 `24224`。 - `<match>` 块捕获所有的事件流,并将其打印到终端作为调试用途。 如果希望保存日志而不是仅显示于屏幕,则可替换 `@type stdout` 为更复杂的插件选项(如 Elasticsearch 插件),从而实现长期存档或分析目的。 --- #### 3. 启动服务 完成以上两步之后,在包含 `docker-compose.yml` 文件所在的目录下执行如下命令即可启动 Fluentd 服务: ```bash docker-compose up -d ``` 该指令会以后台模式运行所描述的所有组件实例;若需停止整个项目则只需调用相反操作——即销毁当前上下文中关联的一切资源对象: ```bash docker-compose down ``` --- ### 注意事项 当尝试扩展基础架构时,请考虑引入更多工具链形成完整的解决方案栈,比如结合 Elastic Stack 构建强大的日志管理系统[^4]。此外还需注意不同平台间可能存在兼容性差异以及安全加固措施等问题。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值