资讯专栏INFORMATION COLUMN

云原生可观察性系列二:基于Loggie采集容器日志

IT那活儿 / 3614人阅读
云原生可观察性系列二:基于Loggie采集容器日志

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


文章前言

我们现有日志采集方式主要是基于开源flume 进行二次开发,已实现对应用日志、syslog、组件日志、sql查询等类型的日志进行采集,适用传统运行环境日志采集,长期实践过程中flume对文件数过多,量大的情况下采集存在资源消耗较高的现象(进程高cpu) 。
应用大规模上K8s云环境后需要对容器及容器内部日志进行采集,flume 本身并不支持,需要找寻相应的开源解决方案,而今年推出的开源日志采集组件Loggie可以满足这种场景。
Loggie是一个基于Golang的轻量级、高性能、云原生日志采集Agent和中转处理Aggregator,支持多Pipeline和组件热插拔,提供了基于日志可观测性、快速排障、异常预警、自动化运维能力。


安装部署

2.1 环境准备

在此之前需要有一套k8s集群以及helm环境。
helm下载地址:https://github.com/kubernetes/helm/releases,下载上传解压即可。
下载好Loiggie安装包:https://github.com/loggie-io/installation/releases/download/v1.2.0/loggie-v1.2.0.tgz
loggie官方文档:https://loggie-io.github.io/docs/

2.2 部署

1)DaemonSet方式部署loggie,helm install loggie ./loggie -nloggie --create-namespace 可以通过kubectl get ds -n loggie命令查看loggie容器是否创建成功。
2)创建被采集的测试容器。
3)定义输出源Sink,创建一个Loggie定义的CRD Sink实例,表明日志发送的后端。接收日志的后端存在多种,例如es、kafka、Prometheus,本次演示配置输出到loggie容器日志(dev)和kafka中。
输出源dev:
apiVersion: loggie.io/v1beta1
kind: Sink
metadata:
 name: default
spec:
 sink: |
   type: dev
   printEvents: true
输出源:kafka
apiVersion: loggie.io/v1beta1
kind: Sink
metadata:
 name: default
spec:
 sink: |
   type: kafka
   brokers: ["192.168.XX.XXX:9092"] # kafka地址
   topic: "loggie"   # topic名称
其他输出源配置详见:https://loggie-io.github.io/docs/reference/下的Sink节点。
通过kubectl apply -f xxx.yaml创建sink。
4)定义采集任务,Loggie定义CRD LogConfig,表示一个日志采集任务;本次演示两种采集方式,直接采集应用日志文件和采集容器日志。
采集容器日志:
apiVersion: loggie.io/v1beta1
kind: LogConfig
metadata:
 name: tomcat-app
 namespace: default
spec:
 selector:
   type: pod
   labelSelector:
     app: asdf
 pipeline:
   sources: |
     - type: file
       name: mylog
       paths:
       - stdout
   sinkRef: default
采集容器内的应用日志:
apiVersion: loggie.io/v1beta1
kind: LogConfig
metadata:
 name: tomcat-app
 namespace: default
spec:
 selector:
   type: pod
   labelSelector:
     app: asdf
 pipeline:
   sources: |
     - type: file
       name: mylog
       paths:
       - /usr/local/logs/app.log
   sinkRef: default
更多采集配置请详见:https://loggie-io.github.io/docs/reference/下的source节点。
5)配置完成后查看测试pod所在节点(dev模式下日志只会采集到同一节点的loggie),kubectl get pods -l app=asdf -o wide  ,查看loggie日志和kafka消费可以看到有数据,其中body字段为日志信息,日志采集成功。
需要回顾上期云原生相关文章,可点击文章标题《云原生可观察性系列一:Tetragon实践》跳转原文查看。


本文作者:长研云原生研究小组(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129312.html

相关文章

  • 灵雀CTO陈恺:从“鸿沟理论”看原生,哪些技术能够跨越鸿沟?

    摘要:早在年针对高科技行业和高科技企业生命周期的特点,提出了著名的鸿沟理论。今天我们尝试以鸿沟理论为基础来分析云原生领域颠覆性的创新技术。回过头来看,灵雀云从早期全力投入技术栈,是最早进行产品化的厂商。 历史进入2019年,放眼望去,今天的整个技术大环境和生态都发生了很大的变化。在己亥猪年春节刚刚过去的早春时节,我们来梳理和展望一下整个云原生技术趋势的发展,是一件很有意义的事情,这其中有些变...

    hss01248 评论0 收藏0
  • 数人工程师手记 | 容器日志管理实践

    摘要:容器内文件日志平台支持的文件存储是,避免了许多复杂环境的处理。以上是数人云在实践容器日志系统过程中遇到的问题,更高层次的应用包括容器日志分析等,还有待继续挖掘和填坑,欢迎大家提出建议,一起交流。 业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集、存储以...

    saucxs 评论0 收藏0
  • LC3视角:Kubernetes下日志采集、存储与处理技术实践

    摘要:下需要为每个单独进行采集配置采集日志目录,采集规则,存储目标等,不易维护。日志服务的日志架构实践我们提出基于阿里云日志服务的日志处理架构,用以补充社区的方案,来尝试解决场景下日志处理的一些细节体验问题。 摘要: 在Kubernetes服务化、日志处理实时化以及日志集中式存储趋势下,Kubernetes日志处理上也遇到的新挑战,包括:容器动态采集、大流量性能瓶颈、日志路由管理等问题。本文...

    Guakin_Huang 评论0 收藏0
  • 原生机制的三个核心思想及其未来之路

    摘要:事实上,这种快捷的发布周期需要配合一系列流程工具甚至是管理文化,从而共同支撑起一套安全且可靠的云原生应用程序运作机制。云原生框架云原生应用程序的一大关键性特质在于,其需要遵循一套设计契约以较大程度实现行为的可预测性。 摆脱临时性自动化方案之定位,发挥优势以实现可预测功能。您能否以每周为单位向客户发布各类新功能?甚至进一步达到以每天乃至每小时为单位?新晋开发人员能否在上班的第一天即进行代码部署...

    陈伟 评论0 收藏0
  • CloudBest:年度复盘丨盘点2020无处不在的「原生

    摘要:华为云华为云在云原生这场游戏中,最具竞争力的玩家之一。年,金山云在云原生领域推出了三款重磅产品星曜裸金属服务器云服务器和云盘。在线上智博会上,浪潮云发布了经过全新迭代升级的浪潮云,进一步提升平台云原生服务能力。面对数字时代复杂系统的不确定性,传统的 IT 应用架构研发交付周期长、维护成本高、创新升级难,烟囱式架构,开放性差、组件复用度低,这些都成为了企业业务快速增长的瓶颈。而云原生以其敏捷、...

    Tecode 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<