1、/etc/docker/daemon.json中加入如下配置并重启服务
[root@localhost src]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"],
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://192.168.20.205:12201" ####GrayLog的主机IP
}
}
重启服务systemctl restart docker.service
2、新建一个测试容器
docker run -d -it --name nginx_test -p 80:80 nginx:latest
docker ps
本机测试:curl -vk http://127.0.0.1
在本机测试时,docker无法访问,应该是内核版本太低的问题,我这里进行了内核升级操作
Centos7升级内核
1、查看当前内核版本
$ uname -r
3.10.0-1160.25.1.el7.x86_64
2、更新yum仓库
2.1、替换阿里云yum源,并升级
$ rm /etc/yum.repos.d/*.repo
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
$ yum clean all && yum -y update
2.2、启用elrepo仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
3、升级内核
yum --enablerepo=elrepo-kernel install kernel-ml
3.2.1、查看系统上的所有可用内核:
[root@localhost src]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (6.6.8-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-fc126d81ecf1461fa658e98eff3f1578) 7 (Core)
3.2.2、设置新的内核为grub2的默认版本
服务器上存在4 个内核,我们要使用 5.12.1这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置
方法1、通过 grub2-set-default 0 命令设置
其中 0 是上面查询出来的可用内核
grub2-set-default 0
方法2、编辑 /etc/default/grub 文件
设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:
$ vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
3.2.3、生成 grub 配置文件并重启
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
重启docker容器 ,本机测试正常
3、Graylog上面配置GELF Input,Stream,查询模板
Input配置
Stream配置
4、接入的容器日志在GrayLog上的查询效果如下
1)curl测试
2)浏览器测试
3)为了让日志看的更清晰,调整一下Messages参数
5、当然也可以使用如下方法单独接入某个容器的日志
docker run -d -it --name nginx_dev2 -p 81:80 --log-driver=gelf --log-opt gelf-address=udp://{GraylogServerIP}:12202 nginx:latest