文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

实战:基于Loki采集K8s日志

2024-11-30 02:19

关注

Loki的架构非常简单,主要由以下三部分组成: ①,Loki:主服务器,负责存储日志和处理查询,类似于es,使用了和Prometheus相同的服务发现机制,将标签添加到日志流中而不是构建全文索引。因此,从promtail接收到的日志和应用的metrics指标就具有相同的标签集。它不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引。

②,promtail:采集端,负责采集日志发送给Loki,类似于filebeat,该工具主要包括发现采集目标以及给日志流添加上label标签,然后发送给Loki。promtail的服务发现是基于Prometheus的服务发现机制实现的。

③,grafana(大家都已很熟悉了):负责采集日志的展示,支持非常丰富的数据源。在Loki技术栈中grafana主要用来展示来自Prometheus和Loki等数据源的时间序列数据,还允许进行查询、可视化、告警等操作,可以在页面查询指定标签pod的日志。

二,安装helm

注:Loki提供了helm的安装方式,可以直接下载包进行安装,所以先进行helm的安装(master节点安装)

1,下载helm安装包

[root@master ~]# wget https://get.helm.sh/helm-v3.9.0-linux-amd64.tar.gz

图片

2、 解压安装包,并将helm的可执行命令移动到/usr/bin/目录下(安装简单)

[root@master ~]# tar -xf helm-v3.9.0-linux-amd64.tar.gz   #解压
[root@master ~]# cd linux-amd64/
[root@master linux-amd64]# ls
helm  LICENSE  README.md
[root@master linux-amd64]# mv helm /usr/bin/

图片

3、 设置helm的自动补全

[root@master linux-amd64]# vim /etc/profile   #编辑该文件
source <(helm completion bash)    #文档最后写入该命令
[root@master linux-amd64]# source /etc/profile    #使其生效

图片

4、 验证是否安装成功

[root@master ~]# helm version   #查看版本
version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"}
[root@master ~]# helm repo list   #查看仓库
Error: no repositories to show        #还没有添加仓库
[root@master ~]# helm env   #查看helm的配置信息
HELM_BIN="helm"
HELM_CACHE_HOME="/root/.cache/helm"
HELM_CONFIG_HOME="/root/.config/helm"
HELM_DATA_HOME="/root/.local/share/helm"
HELM_DEBUG="false"
HELM_KUBEAPISERVER=""
HELM_KUBEASGROUPS=""
HELM_KUBEASUSER=""
HELM_KUBECAFILE=""
HELM_KUBECONTEXT=""
HELM_KUBETOKEN=""
HELM_MAX_HISTORY="10"
HELM_NAMESPACE="default"
HELM_PLUGINS="/root/.local/share/helm/plugins"
HELM_REGISTRY_CONFIG="/root/.config/helm/registry/config.json"
HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"
HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"

三,部署Loki

1、 添加helm源(仓库)

[root@master ~]# helm repo add grafana https://grafana.github.io/helm-charts    #添加仓库
"grafana" has been added to your repositories
[root@master ~]# 
[root@master ~]# 
[root@master ~]# helm repo list   #查看仓库
NAME    URL                                  
grafana https://grafana.github.io/helm-charts
[root@master ~]# helm search repo | grep loki   #在仓库中搜索可用的helm的charts
grafana/loki                         5.36.3        2.9.2             Helm chart for Grafana Loki in simple, scalable...
grafana/loki-canary                  0.14.0        2.9.1             Helm chart for Grafana Loki Canary                
grafana/loki-distributed             0.76.1        2.9.2             Helm chart for Grafana Loki in microservices mode 
grafana/loki-simple-scalable         1.8.11        2.6.1             Helm chart for Grafana Loki in simple, scalable...
grafana/loki-stack                   2.9.11        v2.6.1            Loki: like Prometheus, but for logs.    #下载最后一个堆栈类型,包含了各日志工具

下载helm的charts 注:也可以直接安装,因需要修改一些配置,可以选择先下载到本地

[root@master ~]# helm pull grafana/loki-stack   #下载
[root@master ~]# ls
anaconda-ks.cfg  calico.yaml  helm-v3.9.0-linux-amd64.tar.gz  linux-amd64  loki-stack-2.9.11.tgz

解压

[root@master ~]# tar -xf loki-stack-2.9.11.tgz   #解压
[root@master ~]# cd loki-stack
[root@master loki-stack]# ls   #可以看到,解压后目录下会有多个资源文件
charts  Chart.yaml  README.md  requirements.lock  requirements.yaml  templates  values.yaml

修改主配置文件(资源文件),启用grafana

[root@master loki-stack]# vim values.yaml
36 grafana:
 37   enabled: true            #由false修改为true,启用grafana
 38   sidecar:
 39     datasources:
 40       label: ""
 41       labelValue: ""
 42       enabled: true
 43       maxLines: 1000
 44   image:
 45     tag: 8.3.5

图片

5、安装部署应用并查看资源

先创建一个名为loki的命名空间

[root@master loki-stack]# kubectl create ns loki
namespace/loki created
[root@master loki-stack]# helm install loki -n loki .  #安装,这里最后有个点,为引用当前目录下的资源
NAME: loki
LAST DEPLOYED: Sat Nov 18 14:43:20 2023
NAMESPACE: loki
STATUS: deployed
REVISION: 1
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.

See http://docs.grafana.org/features/datasources/loki/ for more detail.
[root@master loki-stack]# kubectl -n loki get pods   #查看pod资源
NAME                           READY   STATUS    RESTARTS   AGE
loki-0                         1/1     Running   0          8m43s
loki-grafana-6b5f7dc79-rjcwm   2/2     Running   0          8m43s
loki-promtail-t69rd            1/1     Running   0          8m43s
loki-promtail-tckwm            1/1     Running   0          8m43s
[root@master loki-stack]# 
[root@master loki-stack]# 
[root@master loki-stack]# 
[root@master loki-stack]# kubectl -n loki get deploy   #查看控制器
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
loki-grafana   1/1     1            1           8m49s

图片

此时grafana的service类型为clusterip,需要修改类型为nodeport,以供外网访问

图片

6、 通过edit修改grafana的service类型

[root@master loki-stack]# kubectl -n loki edit svc loki-grafana
service/loki-grafana edited    #修改类型为nodeport
[root@master loki-stack]# kubectl -n loki get svc  #查看暴露的端口
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
loki              ClusterIP   10.96.209.225           3100/TCP       14m
loki-grafana      NodePort    10.96.164.26            80:31276/TCP   14m
loki-headless     ClusterIP   None                    3100/TCP       14m
loki-memberlist   ClusterIP   None                    7946/TCP       14m

四、 访问

1、 先获取登录密码

[root@master loki-stack]# kubectl get secret -n loki loki-grafana -o jsnotallow="{.data.admin-password}" | base64 --decode ; echo
hdHI2C0vBAWdE6dw8Mbx7j846JZSsCUXbmUXLx4g   #获取到的密码

2、 登录,任一节点ip+端口 用户为admin,密码为命令行获取到的密码

图片

默认已经添加了Loki数据源

图片

3、 导入模板

可以到官网下载

grafana模板官网:https://grafana.com/grafana/dashboards/?search=linux

导入下载的模板,并选择Loki数据源

图片

日志展示

图片

图片


来源:院长技术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯