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文件可以直接从连接获取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是成功的
虽然今年的12月12日已经过去,但 TOP云 的双十二大促活动还没有结束,一直到12月...
2020年10月16日,中共中央政治局就量子科技研究和应用前景举行第二十四次集体学...
本文转载自微信公众号「逸言」,作者覃宇。转载本文请联系逸言公众号。 混沌初开...
Hadoop的MR结构和YARN结构是大数据时代的第一代产品,满足了大家在离线计算上的...
本文已经过原作者 Orkhan Jafarov 授权翻译。 今天,我们来一起学习一下如何把元...
01JTAG简介 JTAG(JointTest ActionGroup)是一个接口,为了这个接口成立了一个小...
private Map Character, Set Character constructGraph(String[] words) { Map C...
【51CTO.com快译】我之前解释了如何借助谷歌语音识别API,使用Speech Recognitio...
Java 16新特性 2021年3月16日,甲骨文正式发布了Java 16!想当年JDK1.6新出的场景...
引言 当你用招行的卡在招行取款机取钱的时候 当你用招行的卡在工行取款机取钱的...