Loki简介
Grafana Loki是可以组成功能齐全的日志记录堆栈的一组组件。
与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的:标签(就像Prometheus标签一样)。 然后,日志数据本身被压缩并存储在对象存储(例如S3或GCS)中的块中,甚至存储在文件系统本地。 小索引和高度压缩的块简化了操作,并大大降低了Loki的成本。
相较于EKL,Loki就显得很轻量级了;用了Loki以后,ELK突然不香了!哈哈~~~
Loki-stack组件
先放两张图
Promtail
Promtail 是用来将容器日志发送到 Loki 或者 Grafana 服务上的日志收集工具,该工具主要包括发现采集目标以及给日志流添加上 Label 标签,然后发送给 Loki,另外 Promtail 的服务发现是基于 Prometheus 的服务发现机制实现的。
Loki
Loki 是可以水平扩展、高可用以及支持多租户的日志聚合系统,使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引。因此,从 Promtail 接收到的日志和应用的 metrics 指标就具有相同的标签集。它不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引。
Grafana
Grafana 是一个用于监控和可视化观测的开源平台,支持非常丰富的数据源,在 Loki 技术栈中它专门用来展示来自 Prometheus 和 Loki 等数据源的时间序列数据。还允许进行查询、可视化、报警等操作,可以用于创建、探索和共享数据 Dashboard
接下来我们就来上手体验Loki-stack
使用helm部署loki-stack
1、前提,需要有一个k8s集群和安装好helm工具
2、添加helm源
helm repo add loki https://grafana.github.io/loki/charts 下载到本地,也可以直接安装,因为需要修改存储类及其他一些配置,我习惯下载到本地,方便修改调试 helm fetch loki/loki-stack tar -zxf loki-stack-0.38.1.tgz cd loki-stack/ [root@ loki-stack]# ls -al drwxr-xr-x. 7 root root 85 Jul 2 07:25 charts -rwxr-xr-x. 1 root root 369 Jul 1 01:46 Chart.yaml -rwxr-xr-x. 1 root root 342 Jul 1 01:46 .helmignore -rwxr-xr-x. 1 root root 1662 Jul 1 01:46 README.md -rwxr-xr-x. 1 root root 533 Jul 1 01:46 requirements.lock -rwxr-xr-x. 1 root root 595 Jul 1 01:46 requirements.yaml drwxr-xr-x. 3 root root 80 Jul 2 08:46 templates -rwxr-xr-x. 1 root root 206 Jul 16 00:53 values.yaml
3、修改loki-stack的values.yaml文件,我这里只安装了loki和promtail,而grafana和prometheus我就用集群已经部署好的prometheus-operator了
[root@ ]# cat values.yamlloki: enabled: truepromtail: enabled: true
4、修改loki的values.yaml,
主要修改storageClass和persistence size,开启serviceMonitor以便监控loki
[root@ loki-stack]# cd charts/loki/ [root@ loki]# ll total 20 -rw-r--r-- 1 root root 367 Nov 28 00:31 Chart.yaml -rw-r--r-- 1 root root 1846 Nov 28 00:31 README.md drwxr-xr-x 2 root root 4096 Dec 1 09:14 templates -rw-r--r-- 1 root root 6695 Dec 1 09:15 values.yaml persistence: enabled: true storageClass: "rbd" accessModes: - ReadWriteOnce size: 100Gi annotations: {} serviceMonitor: enabled: true interval: "" additionalLabels: {} annotations: {} # scrapeTimeout: 10s
5、修改promtail的values.yaml
如果你想添加更多的日志目录,可以在这里添加
# Extra volumes to scrape logs fromvolumes: - name: docker hostPath: path: /var/lib/docker/containers - name: pods hostPath: path: /var/log/pods
6、执行部署
cd loki-stack kubectl create ns loki helm install loki -n loki -f values.yaml . [root@ loki-stack]# helm ls -n loki NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION loki loki 1 2020-12-01 09:15:22.971437761 +0800 CST deployed loki-stack-2.1.0 v2.0.0
7、登录到已有的grafana界面,添加loki源
首先获取到loki的服务地址
[root@ loki-stack]# kubectl get svc -n loki NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE loki NodePort 10.101.129.255 3100:30439/TCP 92m loki-headless ClusterIP None 3100/TCP 92m
填好信息以后,点击Save&Test,确认grafana可以连接到loki
8、点击Explore,就可以使用LogQL 查询日志,如下图
当然也可以导入别人做好的模板,更多Dashboard可以到官网https://grafana.com/grafana/dashboards 查看
相关推荐
0评论