摘要:本文介绍了基于k3s
的loki+grafana
的日志收集方案。
环境准备
k3s
环境
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
- 修改
loki
的svc
类型为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
查看日志