当前位置 : 主页 > 操作系统 > centos >

十四、kubernetes日志收集之Loki收集K8s日志

来源:互联网 收集:自由互联 发布时间:2023-12-16
3. 使用Loki收集K8s日志 3.1 架构说明 无论是ELK、EFK还是Filebeat,都需要用到Elasticsearch来存储数据,Elasticsearch本身就像“一座大山”,维护难度和资源使用都是偏高的。对于很多公司而言

3. 使用Loki收集K8s日志

3.1 架构说明

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes

无论是ELK、EFK还是Filebeat,都需要用到Elasticsearch来存储数据,Elasticsearch本身就像“一座大山”,维护难度和资源使用都是偏高的。对于很多公司而言,特别是新创公司,可能并不想大费周章地去搭建一个ELK、EFK或者其他重量级的日志平台,刚开始的人力投入可能是大于收益的,所以就需要一个更轻量的日志收集平台。

一个基于Kubernetes平台的原生日志收集平台Loki Stack应运而生,相对于上述技术栈,Loki的安装、架构、使用都比较简单,能够满足大部分的工作需求。


可以看到主要包含如下组件:

  • Loki:主服务器,负责日志的存储和查询,参考了Prometheus的服务发现机制,将标签添加到日志流,而不是像其他平台一样进行全文索引。
  • Promtail:负责收集日志并将其发送给Loki,主要用于发现采集目标以及添加对应Label,最终发送给Loki。
  • Grafana:用来展示或查询相关日志,可以在页面查询指定标签Pod的日志。


Loki不对日志进行全文索引,仅索引相关日志的元数据,所以Loki操作起来更简单、更省成本。而且Loki是基于Kubernetes进行设计的,可以很方便地部署在Kubernetes上,并且对集群的Pod进行日志采集,采集时会将Kubernetes集群中的一些元数据自动添加到日志中,让技术人员可以根据命名空间、标签等字段进行日志的过滤,可以很快速地定位到相关日志。


3.2 部署Loki

添加helm仓库并拉取helm包

helm repo add grafana https://grafana.github.io/helm-charts
helm pull grafana/loki-stack


helm包版本是loki-stack-2.9.11,提前拉取需要部署服务的镜像到本地Harbor仓库,对以下文件中的镜像地址进行修改。

#一下镜像版本的查看
#loki-stack/values.yaml 下看grafana的配置,tag 是8.3.5
#loki-stack/charts/promtail/Chart.yaml 下看appVersion 是2.8.3

#/root/efk-7.10.2/loki-stack/values.yaml
docker pull bats/bats:1.8.2

#/root/efk-7.10.2/loki-stack/charts/grafana/values.yaml
docker pull grafana/grafana:8.3.5
docker pull bats/bats:1.4.1
docker pull curlimages/curl:7.85.0
docker pull busybox:1.13.1
docker pull quay.io/kiwigrid/k8s-sidecar:1.19.2
docker pull grafana/grafana-image-renderer

#/root/efk-7.10.2/loki-stack/charts/promtail/values.yaml
docker pull docker.io/grafana/promtail:2.8.3
docker pull docker.io/jimmidyson/configmap-reload:v0.8.0

#/root/efk-7.10.2/loki-stack/charts/loki/values.yaml
docker pull grafana/loki:2.6.1


创建 Loki Namespace、 Loki Stack

#/root/efk-7.10.2/loki-stack/下进行
kubectl create ns loki
helm --install loki . --set grafana.enabled=true --set grafana.service.type=NodePort -n loki

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes_02


查看 Pod 状态

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes_03


查看 Grafana 的 Service 暴露的端口号

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes_04


之后通过任意一个安装了 kube-proxy 的节点的 IP 加上 31053 即可访问 Grafana

#查看 Grafana 密码(账号 admin)
kubectl get secret --namespace loki loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes_05

十四、kubernetes日志收集之Loki收集K8s日志_Kubernetes_06

Tips:Loki默认没持久化数据,可以进行修改配置文件实现持久化存储。


3.3 清理
[root@k8s-master01 loki-stack]# pwd
/root/efk-7.10.2/loki-stack
[root@k8s-master01 loki-stack]# helm delete -n loki loki
[root@k8s-master01 loki-stack]# kubectl delete ns loki
网友评论