k3s 的 loki+grafana 日志收集方案

1,159 阅读2分钟

摘要:本文介绍了基于k3sloki+grafana的日志收集方案。

环境准备

  • k3s环境

参考文章 juejin.cn/post/701621…

  • helm安装

参考文章(我采用的是二进制文件安装) helm.sh/zh/docs/int…

loki安装

  • loki仓库新增
helm repo add loki https://grafana.github.io/loki/charts && helm repo update
  • 查看本地添加的仓库
[root@localhost bin]# helm repo list
NAME	URL                                  
loki	https://grafana.github.io/loki/charts
  • 下载资源文件

创建一个目录用来存放资源 mkdir loki

helm pull loki/loki-stack
  • 查看
[root@localhost loki]# ls
loki-stack-2.1.2.tgz
[root@localhost loki]# tar -zxvf loki-stack-2.1.2.tgz
loki-stack  loki-stack-2.1.2.tgz
  • 安装
helm install loki loki-stack/

结果

WARNING: This chart is deprecated
W0524 08:58:24.889437   24898 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0524 08:58:24.892589   24898 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0524 08:58:24.940163   24898 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0524 08:58:24.940294   24898 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
NAME: loki
LAST DEPLOYED: Tue May 24 08:58:24 2022
NAMESPACE: default
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.
  • 查看安装结果
helm list -A
[root@localhost loki]# helm list
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART           	APP VERSION
loki	default  	1       	2022-05-24 08:58:24.672976337 +0800 HKT	deployed	loki-stack-2.1.2	v2.0.0
  • 查看k3s部署情况
[root@localhost loki]# kubectl get pod
NAME                  READY   STATUS    RESTARTS   AGE
loki-promtail-fnkx9   1/1     Running   0          78s
loki-0                1/1     Running   0          78s
[root@localhost loki]# kubectl get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes      ClusterIP   10.43.0.1       <none>        443/TCP    35d
loki-headless   ClusterIP   None            <none>        3100/TCP   89s
loki            ClusterIP   10.43.220.206   <none>        3100/TCP   89s
[root@localhost loki]# kubectl get cm
NAME                   DATA   AGE
kube-root-ca.crt       1      35d
loki-loki-stack-test   1      104s
loki-promtail          1      104s
loki-loki-stack        1      104s
  • 修改lokisvc类型为NodePort,方便暴露端口使用

我就改了下面的type: NodePort nodePort: 31000,这样loki就部署好了

spec:
  clusterIP: 10.43.220.206
  clusterIPs:
  - 10.43.220.206
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http-metrics
    port: 3100
    protocol: TCP
    targetPort: http-metrics
    nodePort: 31000
  selector:  
    app: loki    
    release: loki      
  sessionAffinity: None
  type: NodePort
status:           
  loadBalancer: {}

重新查看svc,对外暴露的端口31000

[root@localhost loki]# kubectl get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes      ClusterIP   10.43.0.1       <none>        443/TCP          35d
loki-headless   ClusterIP   None            <none>        3100/TCP         11m
loki            NodePort    10.43.220.206   <none>        3100:31000/TCP   11m
  • grafana部署并接入loki进行数据展示

编写docker-compose.yml;我挂载了data目录,便于数据持久化

version: "3"
services:
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    networks:
      - default
    volumes:
    - ./data:/var/lib/grafana

networks:
  default:
    external:
      name: huzhihui

运行docker-compose up -d;并查看容器

[root@localhost grafana]# docker-compose up -d
Creating grafana ... done
[root@localhost grafana]# docker ps |grep grafana
b49ed1b5b436   grafana/grafana:latest       "/run.sh"                5 minutes ago    Up 5 minutes    0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   grafana
  • 配置数据源进行展示

grafana默认用户名和密码都是admin

image.png

查看日志

image.png