当前位置:主页 > 查看内容

tke容器中部署LogListener采集日志到cls

发布时间:2021-07-06 00:00| 位朋友查看

简介:tke集群容器的业务日志采集通常都是用日志采集组件采集日志,但是有一个问题就是,日志采集无法扩地域投递到cls,也就是说集群的日志只能投递到同地域的cls中,但是有些地域是没有cls服务的,那么就无法使用日志采集服务采集tke集群容器日志到cls了。这里有……

tke集群容器的业务日志采集通常都是用日志采集组件采集日志,但是有一个问题就是,日志采集无法扩地域投递到cls,也就是说集群的日志只能投递到同地域的cls中,但是有些地域是没有cls服务的,那么就无法使用日志采集服务采集tke集群容器日志到cls了。这里有另外一个方法就是在容器里面部署LogListener,走公网的方式将容器日志投递到cls中。今天我们来说说这种日志采集方式的具体实现。

我们在本地docker构建镜像,将LogListener安装到我们的镜像即可,我们的镜像构建目录如下

注意:我这边示例的应用程序是demo,大家根据实际替换成自己的业务程序,对应的dockerfile也需要修改

[root@VM-0-13-centos log-collect]# ll
total 11824
-rwxrwxrwx 1 root root 12098786 Jul  3 18:09 demo
-rw-r--r-- 1 root root      566 Jul  3 18:19 Dockerfile
-rwxr-xr-x 1 root root       56 Jul  3 18:19 start.sh
  • demo:一个go程序demo的可执行文件,监听端口是3000,日志放在/data目录下
  • Dockerfile:用于镜像构建
  • start.sh:镜像的启动脚本

下面我们来具体看看对应的文件内容

demo文件可以直接从连接获取https://github.com/nieweixing/go-test/blob/main/main/demo

Dockerfile的内容如下,secretid和secretkey替换成自己的,如果是公网需要加参数-network internet

FROM centos:7
RUN yum install wget -y && mkdir -p /data
RUN wget https://mirrors.tencent.com/install/cls/loglistener-linux-x64-2.6.1.tar.gz  && tar -zxvf loglistener-linux-x64-2.6.1.tar.gz -C /usr/local && cd /usr/local/loglistener-2.6.1/tools && ./loglistener.sh install
RUN /usr/local/loglistener-2.6.1/tools/loglistener.sh init -secretid AKIDJNM71vniy85mCNxxxxxx -secretkey 608zbx5wmY4YyF9uRitsxxxxx -region ap-guangzhou -network internet
COPY demo /root
COPY start.sh /root/start.sh
CMD ["/root/start.sh"]

LogListener的安装参考文档https://cloud.tencent.com/document/product/614/17414

start.sh的内容如下

#!/bin/bash

/etc/init.d/loglistenerd start
./root/demo

创建一个目录,然后将文件访问到目录下,执行镜像构建命令构建镜像

docker build -t xxxx .

大家也可以用我构建的好的镜像进行测试ccr.ccs.tencentyun.com/nwx_registry/log-to-cls:latest

镜像构建好之后,这里我们cls是在广州地域,我们部署镜像到北京的tke集群,看下能否跨地域公网投递到cls

我们暴露一个公网clb类型的service来提供访问

接下来我们在cls里面配置下机器组和主题用来保存日志,配置机器组需要到容器里面获取下group ip,在cls配置机器组ip就是填写group ip,并不是容器ip。

[root@log-5bfddddfc-9xn84 /]# /etc/init.d/loglistenerd check | grep "group ip"
group ip:172.18.0.15

我们到cls控制台创建机器组

然后创建日志主题关联下上一步创建好的机器组

这里配置的采集路径就是/data/下的所有log结尾的日志文件

cls主题配置好之后,我们来访问下对应的service,然后程序打印一些日志,然后到cls进行检索

for i in {1..100}; do curl 49.xx.xx.xx:3000/health_check; done

首先我们到容器内看下日志是否生成

[root@log-5bfddddfc-9xn84 data]# tail /data/go.log
2021/07/03 11:02:33 我访问了Health check这个路径
2021/07/03 11:02:33 我访问了Health check这个路径
2021/07/03 11:02:33 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径
2021/07/03 11:02:34 我访问了Health check这个路径

进入到容器查看日志文件是有访问日志生成的,然后我们到cls检索下

cls只也可以检索到日志,这里说明我们用LogListener采集容器日志公网投递到cls是成功的


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:Docker生成新镜像版本的两种方式 下一篇:没有了

推荐图文


随机推荐