

kubernetes 日志收集方案
source link: https://www.qikqiak.com/post/kubernetes-logs-collect/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

完善的日志系统是保证系统持续稳定运行的基石,帮助提升运维、运营效率,建立大数据时代的海量日志处理等能力都需要日志系统的支持,所以搭建一套行之有效的日志系统至关重要。
本文将介绍两种kubernetes 集群下日志收集的方案:阿里云日志服务或者EFK
方案
阿里云日志服务
阿里云日志服务(Log Service,简称 Log)是针对日志类数据一站式服务,在阿里巴巴集团经历了大量大数据场景锤炼而成。用户无需开发就能快捷完成数据采集、消费、投递以及查询分析等功能,帮助提升运维、运营效率,建立 DT 时代海量日志处理能力。
实际上对于小团队自己搭建ELK
或者EFK
成本是很高的,特别是ElasticSearch
本身非常消耗资源不说,能够将其性能优化到一定程度都是非常不容易的一件事情,所以对于中小团队能使用第三方的日志服务更加方便,即使你一定要使用ES
的话,我也推荐使用阿里云的ElasticSearch
的云服务。
同样的我们可以集成阿里云日志服务来查看和管理您的Kubernetes
集群应用的日志。
创建日志项目
首先登录日志服务管理控制台,创建一个项目(Project):k8slog-project
创建日志收集Agent
直接使用阿里云提供的fluentd
组件
$ curl http://aliacs-k8s.oss.aliyuncs.com/conf%2Flogging%2Ffluentd-pilot.yml > fluentd-pilot.yml
将上面yaml 文件中对应的env 环境值更改成实际的值,其中:
- FLUENTD_OUTPUT: 固定值 aliyun_sls,代表将日志收集到阿里云日志服务。
- ALIYUNSLS_PROJECT: 您第一步创建的阿里云日志服务的 project 名称.
- ALIYUNSLS_REGION_ENDPOINT: 日志服务的服务入口。根据您的日志服务所处的地域和网络类型填写日志服务的服务入口,参见 日志服务服务入口。
- ALIYUNSLS_ACCESS_KEY_ID: 您的阿里云账号的 access_key_id。
- ALIYUNSLS_ACCESS_KEY_SECRET: 您的阿里云账号的 access_key_secret。
- ALIYUNSLS_NEED_CREATE_LOGSTORE: 当 Logstore 不存在的时候是否自动创建,
true
表示自动创建。
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: fluentd-pilot
namespace: kube-system
labels:
k8s-app: fluentd-pilot
kubernetes.io/cluster-service: "true"
spec:
template:
metadata:
labels:
k8s-app: fluentd-es
kubernetes.io/cluster-service: "true"
version: v1.22
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
scheduler.alpha.kubernetes.io/tolerations: '[{"key": "node.alpha.kubernetes.io/ismaster", "effect": "NoSchedule"}]'
spec:
containers:
- name: fluentd-pilot
image: registry.cn-hangzhou.aliyuncs.com/wangbs/fluentd-pilot:latest
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
env:
- name: "FLUENTD_OUTPUT"
value: "aliyun_sls"
- name: "ALIYUNSLS_PROJECT"
value: "k8slog-project"
- name: "ALIYUNSLS_REGION_ENDPOINT"
value: "cn-shanghai.log.aliyuncs.com"
- name: "ALIYUNSLS_ACCESS_KEY_ID"
value: "xxxxxxx"
- name: "ALIYUNSLS_ACCESS_KEY_SECRET"
value: "xxxxxx"
- name: "ALIYUNSLS_NEED_CREATE_LOGSTORE"
value: "true"
volumeMounts:
- name: sock
mountPath: /var/run/docker.sock
- name: root
mountPath: /host
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: sock
hostPath:
path: /var/run/docker.sock
- name: root
hostPath:
path: /
创建完成后可以查看运行状态:
$ kubectl get ds -n kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
fluentd-pilot 4 4 4 4 4 <none> 5h
收集应用日志
为了让Fluentd
收集您的应用日志,您需要在应用的环境变量中设置参数 aliyun_logs_fluentd=stdout
来启用应用的日志收集功能。其中,fluentd
是您上面创建的日志 Project 的Logstore
,如果该 Logstore 不存在,系统会自动为您创建该名称的 Logstore;stdout
代表收集标准输出的日志,您还可以配置收集文件日志,具体使用方式请参考 Fluentd-pilot。
这里我们按照上面的方式在kubedns
上面添加环境变量:aliyun_logs_kubedns=stuout
,然后更新kubedns
,设置好应用后,就可以前往 日志服务管理控制台 查看并使用日志了。

EFK 方案
参考文章:在 Kubernetes 上搭建 EFK 日志收集系统
微信公众号
扫描下面的二维码关注我们的微信公众帐号,在微信公众帐号中回复◉加群◉即可加入到我们的 kubernetes 讨论群里面共同学习。

「真诚赞赏,手留余香」
Recommend
-
44
elk收集nginx日志
-
68
前 言 本文将描述如何使用 elasticsearch、 fluentd 、 kibana构建容器化日志收集系统 原创作者:吴鹏
-
57
上节课和大家介绍了 Kubernetes 集群中的几种日志收集方案 ,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch 、
-
10
关于容器日志Docker的日志分为两类,一类是 Docker引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志,不同的操作系统会放在不同的位置。本文主要介绍容器日志,容器日志可以理解是运行在容器内部的应用输出的日志,默认情况下,docker logs...
-
5
Kubernetes日志收集的那些套路 ...
-
6
再见笨重的ELK!这套轻量级日志收集方案要火!之前一直使用的日志收集方案是ELK,动辄占用几个G的内存,有些配置不好的服务器有点顶不住!最近发现一套轻量级日志收集方案: L...
-
10
在 Kubernetes 上搭建 EFK 日志收集系统[更新]-阳明的博客|Kubernetes|Istio|Prometheus|Python|Golang|云原生 EFK Stack 上节课和大家介绍了...
-
7
Kubernetes使用filebeat Multiline自定义收集日志 2021-11-11 2 分钟阅读 我们介绍了如何在 kubernetes 环境中使用 filebeat sidecar 方式收集日志 使用的是 filebeat 的 moudle 模块,但凡是常用的软件,基本都有对...
-
2
一、准备1、关于容器日志Docker的日志分为两类,一类是 Docker引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志,不同的操作系统会放在不同的位置。本文主要介绍容器日志,容器日志可...
-
4
一份接地气的Kubernetes日志方案 作者:不焦躁的程序员 2023-09-29 22:41:26 本文主要聊聊Kubernetes场景下收集微服务应用日志方案,相对来说更接地气,非常好落地。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK