0%

kubernetes部署loki日志系统

Loki 是受 Prometheus 启发可水平可扩展,高可用的多租户日志聚合系统。它被设计得非常轻量高效且易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。一个小索引和高度压缩的块简化了操作,显著降低了 Loki 的成本。

Loki 的[架构主要由以下 3 个部分组成:

  • Loki 是主服务器,负责存储日志和处理查询。
  • Promtail 是代理,负责收集日志并将其发送给 Loki 。
  • Grafana 用于UI 展示。

helm安装loki

参考:
https://grafana.github.io/loki/charts/
https://grafana.com/docs/loki/latest/installation/helm/

添加helm repo

1
2
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

安装loki,如果启用持久化需自备可用storageclass

1
2
3
4
5
6
7
helm upgrade --install loki grafana/loki-stack \
--namespace=loki-stack \
--create-namespace \
--set grafana.enabled=true \
--set loki.persistence.enabled=true \
--set loki.persistence.storageClassName=longhorn \
--set loki.persistence.size=5Gi

查看创建的pods

1
2
3
4
5
[root@node1 ~]# kubectl -n loki-stack get pods
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 9m46s
loki-grafana-7f896d6f58-tpkcx 2/2 Running 0 9m46s
loki-promtail-2bgtc 1/1 Running 0 9m46s

查看service

1
2
3
4
5
[root@node1 ~]# kubectl -n loki-stack get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki ClusterIP 10.109.219.211 <none> 3100/TCP 10m
loki-grafana NodePort 10.103.219.228 <none> 80:32691/TCP 10m
loki-headless ClusterIP None <none> 3100/TCP 10m

查看持久卷

1
2
3
[root@node1 ~]# kubectl -n loki-stack get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
storage-loki-0 Bound pvc-14210c9a-8873-4d02-af5e-50fa679e319d 5Gi RWO managed-nfs-storage 10m

loki查询日志

获取grafana admin用户密码

1
kubectl get secret --namespace loki-stack loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

修改grafana service类型为nodeport

1
kubectl -n loki-stack patch svc loki-grafana -p '{"spec": {"type": "NodePort"}}'