安福生活网

{-var.读取的词.词-}

网络整理 贷款资讯

本篇讲解Docker 日志驱动切换到Linux Syslog。

首先来看下Docker 日志架构。

{-var.读取的词.词-}

Docker容器(Docker Container)中的应用程序(Application)将日志写入到标准输出设备(STDOUT),Docker守护进程(Docker Daemon)负责从STDOUT中获取日志,并将日志写入对应的日志驱动中,如图1所示。

默认地, Docker 日志驱动是写到json-file 里面的,我们通过docker info | grep "Logging Driver" ,即可观察到默认的日志设置,如图2所示。

在这里,我们将介绍将Docker 的日志切换到Docker 的Linux宿主机的日志中。

日志是系统中发生的事情的重要信息来源。Linux 的默认日志是syslog,Syslog是消息日志记录的标准。长期以来,它一直是Linux/Unix系统上的标准日志记录机制。

Syslog包含三个部分:

-Syslog守护程序:它是一个监听日志并将其写入特定位置的守护程序。位置在守护程序的配置文件中定义。rsyslog是大多数发行版附带的Syslog守护程序。

-Syslog消息格式:指Syslog消息的语法。

-Syslog协议:指用于远程日志记录的协议。现代Syslog守护程序可以使用TCP和TLS,以及UDP,UDP是远程日志记录的传统协议。

通常,日志写入/var/log目录下,通过命令 sudo ls /var/log, 即可看到当前系统下的多个log文件,如图3所示。

Linux操作系统已安装了Syslog软件包,但它叫Rsyslog。实际上,Rsyslog是Syslog标准的一种实现。除了Rsyslog这一种实现,还有一种叫Syslogng的第三方实现。

虽然Syslogng的功能较为强大,但我们还是选择使用Rsyslog,因为操作系统已经预装了,我们无须再单独安装。当然,也可通过以下命令查看Rsyslog是否已安装

rsyslogd -v

Linux 系统基本已经默认安装了rsyslogd, 图4显示的是RockyLinux 8.5 的执行结果。

可以看到, 这里的rsyslogd已经安装, 并且已经配置了systemd服务。

下面,我们将修改rsyslogd的配置文件,开启514端口,这样我们就可以是用TCP 协议来查看系统的log 日志了, 这么做的目的,当然是为了日志能够和ELK集成。

执行:sudo vim /etc/rsyslog.conf

本机为RockyLinux 8.5, 也就是类似于Redhat 8.5, 修改配置为:

module(load="imtcp") # needs to be done just once

input(type="imtcp" port="514")

然后,重启rsyslog服务: sudo systemctl restart rsyslog

之后,查看本机端口,确认514端口已经打开:

sudo netstat -anpt | grep 514

当我们打开了syslog的远程端口514之后,我们就可以在启动Docker 的时候,指定Docker 的日志驱动为syslog,同时指定远程端口:

执行命令:

docker run -d -p 81:80 --log-driver syslog --log-opt syslog-address=tcp://localhost:514 --name nginx nginx

本命令中,首先需要使用logdriver指定Syslog为日志驱动,此外使用log-opt指定地址tcp://localhost:514,表示Docker容器可通过TCP协议连接本地的514端口,从而将日志写入Rsyslog中。如图6所示,我们得到一个id为70d761开头的Docker 容器。

Nginx容器启动成功后,在浏览器上发出请求,此时会发现,在/var/lib/docker/containers/<container_id>目录中不再生成<container_id>json.log文件了。如图7所示。

那么日志输出到哪里去了呢?当然是在Linux的系统日志文件中了。此时可使用以下命令来查看Linux系统日志文件,该文件中的内容就是Syslog所生成的日志。

执行: tail -f /var/log/messages

结果如图8所示,在日志信息中,可以看到一个12位的字符串70d761efae8d,它就是Docker的容器ID。

以上,我们实现了 Docker 日志的syslog 输出。

#Docker##Docker 日志##Docker syslog#@Docker 自定义日志输出

上一篇:工商银行1万贷款利率

下一篇: