Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【玩转腾讯云】记一次容器服务日志处理过程

【玩转腾讯云】记一次容器服务日志处理过程

原创
作者头像
KaliArch
修改于 2021-04-25 02:49:26
修改于 2021-04-25 02:49:26
8140
举报
文章被收录于专栏:KaliArchKaliArch

一、项目背景

1.1 项目痛点

在目前小程序为主的大背景下,有客户大部分业务在腾讯云,使用的大部分为容器服务,在大规模的使用容器下,需要对容器内业务的日志采集及分析,在腾讯云对应容器服务的日志提供了两种消费方式:Kafka、日志服务CLS。

但是对应业务线众多,在腾讯云容器服务只能指定十条日志收集规则,完全满足不了大规模日志收集场景,客户已经指定分业务两种消费方式均使用了起来,Kafka&日志服务,但是在Ckafka查看日志发现最高每分钟20W条消息,尽管已经最大程度的提升了消费端的能力(消费端使用Logstash,然后重新将数据导入ELK集群中使用),但是在每分钟20w条的大数据下,查看CKafka内部有大量未消费条目存在,长此以往,CKafka性能及存量均无法满足,咨询技术人员发现目前该地域Ckafka已经售完,需要一周时间来底层扩容。

  • 客户痛点如下图:(来自同事的ppt)

1.2 名称解释:

  • 容器服务:腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的 CBS、CLB 等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。详细可参考:腾讯云容器服务
  • 对象存储:对象存储服务(Cloud Object Storage,COS)是面向企业和个人开发者提供的高可用,高稳定,强安全的云端存储服务。您可以将任意数量和形式的非结构化数据放入 COS,并在其中实现数据的管理和处理。COS 支持标准的 Restful API 接口,您可以快速上手使用,按实际使用量计费,无最低使用限制。详细可参考:腾讯云对象存储
  • 日志服务:日志服务(Cloud Log Service)提供一站式的日志数据解决方案。您无需关注扩缩容等资源问题,五分钟快速便捷接入,即可享受从日志采集、日志存储到日志内容搜索、统计分析等全方位稳定可靠的日志服务。帮助您轻松解决业务问题定位,指标监控、安全审计等日志问题。大大降低日志运维门槛。详细可参考腾讯云日志服务
  • 消息队列CKafka:CKafka(Cloud Kafka)是一个分布式的、高吞吐量、高可扩展性的消息系统,100% 兼容开源 Kafka API(0.9版本)。 Ckafka 基于发布/订阅模式,通过消息解耦,使生产者和消费者异步交互,无需彼此等待。 Ckafka 具有数据压缩、同时支持离线和实时数据处理等优点,适用于日志压缩收集、监控数据聚合等场景。腾讯云消息队列CKafka

二、问题分析

针对大量日志在Ckafka未消费,且腾讯无法开出Ckafka的背景下,先为客户提出三种解决方案:

  • 容器日志源选择指定容器,针对项目选择指定服务下的容器。然后消费端选择到ckafka下不同的topic,这样来分摊kafka压力。(一个规则只能指定一个topic,容器太多,10条规则无法满足)
  • 增加ckafka的消费能力(例如多增加几个logstash),kafka只是消息队列,消息得不到消费kafka就压力大。(根据和客户商讨,目前logstash的consumer_threads已经设置为topic的最大分区数,如果要增加logstash的实例,那么需要增加topic的partitions数,也无法满足)
  • 将容器日志消费端选择为cls的topic,然后在cls里将日志投递存放到cos,后面再从cos里取出来进行消费。(待确认,如果可以将数据通过cls存放到cos,后期在利用logstash来进行消费,那就可以解决此问题)

三、问题解决

3.1 容器服务配置

先进行简单容器服务创建测试应用

  • 测试的容器测试服务集群
  • 新建服务 选择namespace,及服务所在的地域
    进行部署设置,可以选择公共容器,也可现在自定义容器,配置容器网络及逻辑卷等信息,最后配置端口映射。
  • 创建好后就可以通过公网负载均衡进行容器访问
  • 新建日志收集规则
  • 指定消费端
    3.2 日志服务投递配置
  • 创建日志集管理
  • 创建日志投递规则,将cls的内容投递到cos内 在日志投递中,可以开启高级过滤功能,利用此功能可以将不同日志投递到不同bucket,或同一个bucket的不同目录下,来进行日志区分,以便后期消费。

例如日志格式:

代码语言:txt
AI代码解释
复制
__CONTENT__: {"docker":{"container_id":"894905ad526dd90f548bf35ece4b81f4d68359722d7ec719f3b81628da32fe20"},"kubernetes":{"container_name":"nginx","host":"172.16.9.11","labels":{"pod-template-hash":"1074266372","qcloud-app":"nginx"},"log":"default_nginx","master_url":"https://192.168.255.1:443","namespace_name":"default","pod_id":"5d4ae59f-9f6c-11e8-89c8-5254000e53ff","pod_name":"nginx-54c86bb7c6-wvm6z"},"log":"192.168.1.1 - - [25/Aug/2018:13:17:14 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36\" \"-\"\n","stream":"stdout","time":"2018-08-25T13:17:14.310411833Z"}
代码语言:txt
AI代码解释
复制
根据container_name来进行正则日志过滤:.*\"container_name\":\"([^\"]+)\".* 

注意:这里根据腾讯云官网给的仅有的一个实例进行测试无法通过,经过多次测试均为已经投递但是数据没有从cls到cos内部,经过后面自己测试结果如下:

  • key必须制定为索引__CONTENT__
  • 正则表达式:可以根据具体的容器分类来做,这里建议使用container_name便于区分
  • value为日志经过正则匹配到的内容,和value的相同及命中此条日志,从而将此条日志进行按照规则投递到cos内。
  • 查看COS内的日志投递信息

3.3 消费终端CVM配置

  • 安装COSFS工具

详细操作方法可参考:COSFS操作

代码语言:txt
AI代码解释
复制
sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel
git clone https://github.com/tencentyun/cosfs /usr/cosfs
cd /usr/cosfs
./autogen.sh
./configure
make
sudo make install

写入配置文件:

代码语言:txt
AI代码解释
复制
echo <bucketname>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs
  • 挂载日常存储的COScosfs your-bucketname your-mount-point -ourl=cos-domain-name -odbglevel=infoyour-bucketname 需要替换为用户真实的信息; your-mount-point 替换为本地需要挂载的目录(如 /mnt); cos-domain-name 为存储桶对应的访问域名,形式为 http://cos.<Region>.myqcloud.com (适用于XML API),其中 为地域简称,如: ap-guangzhou 、 eu-frankfurt 等. 查看文件
代码语言:txt
AI代码解释
复制
input {
    file {
        path => "/cosdata/access-log2018/08/*"
    }
    }
output {
    elasticsearch {
        hosts => "127.0.0.1:9200"
    }
    stdout { codec => rubydebug }
}

3.4 进行简单消费测试

  • 查看ES中日志数据 通过访问es的9200端口可以
  • 利用Kibana查看日志

四、反思总结

  • 我这在客户大量的数据下,相关帮助文档写的真的不是很全,在cls日志投递功能的高级过滤段,文档完全没介绍其中的正则改怎么写,自己尝试发现不行后,工单及VIP客户支持,大概两天才内部测试完成后给出了模板,希望后续可以完善一些产品的细节文档,文档完善才能使用户更好的使用产品。
  • 通过此次方式,是使用cos将数据持久化存储来减轻CKafka的压力,分业务适合用对日志数据不是非常及时的后期分析及处理消费场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker+Jenkins+Gitlab+Django应用部署实践
在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了应用开放的更快速度、更好的稳定性和更强的可靠性。
KaliArch
2019/01/01
1.5K0
Docker+Jenkins+Gitlab+Django应用部署实践
Docker+Jenkins+GIT+Tomcat实战持续化集成
| Docker-server | 172.20.6.20 |Docker宿主机
KaliArch
2018/04/22
1.9K1
Docker+Jenkins+GIT+Tomcat实战持续化集成
Kubernetes+Prometheus+Grafana部署笔记
Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群,Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。
KaliArch
2018/08/16
1.9K0
Kubernetes+Prometheus+Grafana部署笔记
大数据平台CDH搭建
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
KaliArch
2018/06/01
5.5K0
大数据平台CDH搭建
Serverless初探
无服务器计算是指开发者在构建和运行应用时无需管理服务器等基础设施,应用被解耦为细粒度的函数,函数是部署和运行的基本单位。用户只为实际使用的资源付费。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。
KaliArch
2018/08/31
11.3K0
Serverless初探
Hadoop2.6+Zookper3.4+Hbase1.0部署安装
修改hbase-env.sh,添加java环境变量和生命使用外部zookeeper
KaliArch
2018/05/23
4040
Hadoop2.6+Zookper3.4+Hbase1.0部署安装
大数据平台HDP搭建
在ambari的setup中我们可以选择使用默认的postgresql,也可以自定义使用其他数据库,此处选用mariadb,便于后期管理维护
KaliArch
2018/05/29
2.5K3
大数据平台HDP搭建
HTTP 协议Note
名称含义:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
KaliArch
2018/06/24
4300
HTTP 协议Note
Linux系统进程CPU使用率限制脚本
一、背景 近日在客户系统运维中发现,有系统在定时脚本执行期间会将Linux系统CPU利用率跑满,导致其他服务受到影响,故查阅资料发现有大神写的CPU利用率限制程序。 地址:CPU Usage Limiter for Linux 根据此编写脚本,配合定时任务放置在服务器上,达到限制程序CPU情况,可根据自己系统CPU核心数进行参数配置,会记录CPU超过阀值的日志,可供后期进行查看分析。 二、脚本 GIT地址:cpulimit.sh #!/bin/bash # auth:kaliarch # func:sys
KaliArch
2018/11/16
3.5K0
Linux系统进程CPU使用率限制脚本
prometheus 告警
告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。
张琳兮
2020/02/07
6.2K4
hadoop完全分布式部署
是一个框架,允许跨越计算机集群的大数据及分布式处理,使用简单的编程模型(mapreduce)
KaliArch
2018/05/23
8541
hadoop完全分布式部署
Python实现端口检测
在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等web扫描端口等。
KaliArch
2018/07/24
2.2K0
Python实现端口检测
Python构建企业微信自动消息转发服务端
目前有在项目分组,就小组成员中,微信群消息回复较多的情况下,想根据组来转发特定消息,包含文字、图片、语言等。在此只是自己实现仅供参考,可以根据自身需求修改更多功能。
KaliArch
2018/08/10
3.4K0
Python构建企业微信自动消息转发服务端
ZABBIX监控每秒业务状态
有客户监控MySQL的公网延迟,细粒度到每秒,对你没听错是每秒,云平台级别的监控阿里云/腾讯云虽都支持自定义监控,但是限于数据的存储,粒度最小为每一分钟,阿里云免费云监控频率是5分钟,收费的粒度才可调至1分钟,对此想到利用ZABBIX来进行每一秒的数据上报,最终利用其绘图来进行展示。在此抛砖引玉,其他自定义监控均为此类方法,只需要简单修改脚本获取到需要上报的值即可。
KaliArch
2018/08/28
2.1K0
ZABBIX监控每秒业务状态
Python利用sphinx构建个人博客
一、基础概念 利用sphinx+pandoc+github+readthedocs构建个人博客 Sphinx: 是一个基于ReStructuredText的文档生成工具,可以令人轻松的撰写出清晰且优美的文档, 由Georg Brandl在BSD许可证下开发。新版的Python文档就是由Sphinx生成的,并且它已成为Python项目首选的文档工具,同时它对C/C++项目也有很好的支持;并计划对其它开发语言添加特殊支持。 Read the Docs是一个在线文档托管服务,可以从各种版本控制系统中导入文档。支持
KaliArch
2018/10/31
2.3K1
Python利用sphinx构建个人博客
Python实现翻译小工具
利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。
KaliArch
2018/06/05
8885
Python实现翻译小工具
Python实现腾讯云CDB备份文件自动上传到COS
一、背景 需求:目前遇到的客户需求为将腾讯云CDB备份文件自动上传到腾讯云COS内,再次抛砖引玉,还有很多类似的需求均可以采用此类方法解决,线下IDC数据文件备份至云端COS内,或根据文件下载地址url将文件上传至COS内。 思路:首先获取到CDB的备份下载url,通过COS的API上传文件,大佬如有更好的方法欢迎一块讨论。 二、技术细节 COS:COS有API同时有SDK,这就很方便我们来通过Python对COS进行各类操作,COS SDK for Python CDB:CDB有API但是CDB的查询备份
KaliArch
2018/07/16
2.6K0
Python实现腾讯云CDB备份文件自动上传到COS
Python字符串,列表
字符串: 字符串的创建: 单引号, 双引号 ,三引号 <注意: 转义字符的使用> 字符串的特殊性: 索引 切片 连接 重复 成员操作符(in, not in)
py3study
2020/01/14
1.1K0
记一次混合监控的反思
作为最底层的技术人员,目前由于有客户在运维中遇到混合架构,公有云上使用了产品级别Redis数据库,同时由于业务在云服务器和kubnets的容器内也有redis数据库,因此对于这种混合模式数据库的监控,进行简单的分析总结,在此记录笔记,在此抛砖引玉,也曾希望对各位有一点点益处。
KaliArch
2018/08/13
4980
记一次混合监控的反思
Python构建私有代理IP库
至此我们就利用Python构建了一个属于自己的私有代理库,在进行爬去的时候可方便从数据库中获取使用。
KaliArch
2018/04/21
2.9K5
Python构建私有代理IP库
相关推荐
Docker+Jenkins+Gitlab+Django应用部署实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档