[实验] Linux 远程日志的集中管理和分文件存储 (通过 Rsyslog 实现)

步骤一:规划拓扑

1.1 服务器列表

rsyslog 服务端 IP 地址:192.168.0.11
rsyslog 客户端 IP 地址:192.168.0.12

1.2 服务器列表简介

rsyslog 客户端将日志发送给 rsyslog 服务端,并实现分文件存储

步骤二:系统环境要求

1) 所有服务器的系统都需要是 CentOS 8 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要关闭 SELinux
4) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
5) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:配置 rsyslog 服务端

3.1 修改 rsyslog 配置文件的案例

3.1.1 案例一

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将所有 rsyslog 客户端的日志存储在 rsyslog 服务端的 /var/log/message 里

3.1.2 案例二

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/%HOSTNAME%.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下的一个文件里,此文件会以其所属系统名命名

3.1.3 案例三

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/remotelog/%HOSTNAME%-%$YEAR%-%$MONTH%-%$DAY%-messages.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/remotelog 下的一个文件里,此文件会以其创建时间和其所属系统名命名

3.1.4 案例四

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/remotelog/%HOSTNAME%-%$YEAR%-%$MONTH%-%$DAY%-messages.log"
:fromhost-ip,!isequal,"127.0.0.1" -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下的一个文件里,此文件会以其创建时间和其所属系统名命名
4) 此配置不会单独存储 rsyslog 服务端的日志

3.1.5 案例五

(只在 rsyslog 服务端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

$template DynFile,"/var/log/syslog/system-%HOSTNAME%/messages.log"
*.* -?DynFile
& ~


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 此配置会将每个 rsyslog 客户端的日志单独存储在 /var/log/ 下某个目录的 messages 文件里,此目录会以其所属系统名命名

3.2 重启 rsyslog 服务

(只在 rsyslog 服务端执行以下步骤)

# systemctl restart rsyslog


补充:
1) 使用 UDP 的 514 端口接收日志
2) 使用 TCP 的 514 端口接收日志
3) 需要在 3.1 修改 rsyslog 配置文件的案例中任选其一完成后在执行此步骤

步骤四:配置 rsyslog 客户端

4.1 修改 rsyslog 客户端的案例

(只在 rsyslog 客户端执行以下步骤)

# vim /etc/rsyslog.conf

添加以下内容:

......
*.emerg;*.alert;*.crit;*.err;*.warning;*.notice;*.info  @192.168.0.11

或者:

......
*.emerg;*.alert;*.crit;*.err;*.warning;*.notice;*.info  @@192.168.0.11


补充:
1) 这里的 192.168.0.11 是指 rsyslog 服务端的 IP 地址
2) IP 地址前一个 “@” 符后是指使用 UDP 端口 514 传输日志
3) IP 地址前两个 “@” 符后是指使用 TCP 端口 514 传输日志

4.2 重启 rsyslog 服务

(只在 rsyslog 客户端执行以下步骤)

# systemctl restart rsyslog

步骤五:测试 rsyslog 服务

5.1 在 rsyslog 客户端上发送日志

(只在 rsyslog 客户端执行以下步骤)

# logger "This is our test log"

(补充:这里以发送 This is our test log 信息为例)

5.2 在 rsyslog 服务端上显示日志

(只在 rsyslog 服务端执行以下步骤)

# cat /var/log/* | grep test

[步骤] Docker 私有镜像仓库的搭建

注意:

在搭建私有 Docker 镜像仓库之前,要先安装 Docker

正文:

内容一:搭建私有 Dokcer 镜像仓库

1.1 下载 registry 镜像

# docker pull registry

1.2 加载并启动 registry 镜像

# docker run -d -p 5000:5000 registry
43c6b8c581e9039c8b7df12bb11a89dbdc9ff0b7e00fd6d345068aa9b5af7d9f

(补充:这里以使用宿主机的 5000 端口为例)

1.3 确认 Docker 镜像仓库搭建成功

# curl 127.0.0.1:5000/v2/
{}

(补充:这里以显示 127.0.0.1:5000/v2/ 为例,出现大括号 “{}” 则表示搭建成功)

内容二:私有 Dokcer 镜像库的使用方法

2.1 将现有的 Docker 镜像上传到私有 Docker 镜像库

2.1.1 给现有的 Docker 镜像在私有 Docker 镜像库中打上 1 个新的标签
# docker tag centos:latest 127.0.0.1:5000/v2/centos:latest

(补充:这里以将现有的 centos:latest 镜像打成 127.0.0.1:5000/v2/centos:latest 标签为例)

2.1.2 将现有的 Docker 镜像上传到私有 Docker 镜像库
# docker push 127.0.0.1:5000/centos:latest
The push refers to repository [127.0.0.1:5000/centos]
291f6e44771a: Pushed 
latest: digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71 size: 529

(补充:这里以上传 127.0.0.1:5000/v2/centos:latest 为例)

2.2 显示私有的 Docker 镜像库

2.2.1 显示私有的 Docker 镜像库中有那些镜像
# curl  http://127.0.0.1:5000/v2/_catalog
{"repositories":["centos"]}

(补充:这里以显示 127.0.0.1:5000/v2/ 为例)

2.2.2 显示私有的 Docker 镜像库中某个镜像有哪些版本
# curl  http://127.0.0.1:5000/v2/centos/tags/list
{"name":"centos","tags":["latest"]}

(补充:这里以显示 http://127.0.0.1:5000/v2 上 centos 镜像的版本为例)

2.3 从私有的 Docker 镜像库中下载镜像

# docker pull 127.0.0.1:5000/v2/centos:latest
latest: Pulling from v2/centos
Digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71
Status: Image is up to date for 127.0.0.1:5000/v2/centos:latest
127.0.0.1:5000/v2/centos:latest

(补充:这里以下载 127.0.0.1:5000/v2/centos:latest 为例)