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
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
安装loki,如果启用持久化需自备可用storageclass
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
[root@Ops-repo ~]# kubectl -n loki-stack get pods
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 28m
loki-grafana-6886db999c-djnhz 1/1 Running 0 28m
loki-promtail-krkxl 1/1 Running 0 28m
loki-promtail-mgdxh 1/1 Running 0 28m
loki-promtail-z7wl2 1/1 Running 0 28m
查看service
[root@Ops-repo ~]# kubectl -n loki-stack get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki ClusterIP 10.101.148.142 <none> 3100/TCP 29m
loki-grafana NodePort 10.97.174.254 <none> 80:31451/TCP 29m
loki-headless ClusterIP None <none> 3100/TCP 29m
查看持久卷
[root@Ops-repo ~]# kubectl -n loki-stack get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
storage-loki-0 Bound pvc-854c0d90-266c-41fe-af13-33883b4da5e8 5Gi RWO longhorn 29m
loki查询日志
获取grafana admin用户密码
kubectl get secret --namespace loki-stack loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
修改grafana service类型为nodeport
kubectl -n loki-stack patch svc loki-grafana -p '{"spec": {"type": "NodePort"}}'
使用任意节点IP+nodePort登录loki
http://192.168.0.22:31451
配置 Grafana Loki 数据源,默认已配置
切换到Explore界面
查看 pod 日志