对于生产环境以及一个有追求的运维人员来说,哪怕是毫秒级别的宕机也是不能容忍的。对基础设施及应用进行适当的日志记录和监控非常有助于解决问题,还可以帮助优化成本和资源,以及帮助检测以后可能会发生的一些问题。
Loki 是受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。它的设计非常具有成本效益且易于操作。它不索引日志的内容,而是索引每个日志流的一组标签。

用于索引日志的高效内存使用
| 
					 1  | 
						通过在一组标签上建立索引,索引可以明显小于其他日志聚合产品。更少的内存使得操作成本更低。  | 
					
多租户
| 
					 1  | 
						Loki 允许多个租户使用单个 Loki 实例。不同租户的数据与其他租户完全隔离。通过在代理中分配租户 ID 来配置多租户。  | 
					
LogQL,Loki 的查询语言
| 
					 1  | 
						Prometheus 查询语言 PromQL 的用户会发现 LogQL 熟悉且灵活,可用于生成针对日志的查询。该语言还有助于从日志数据中生成指标,这是一项远远超出日志聚合的强大功能。  | 
					
可扩展性
| 
					 1 2 3  | 
						Loki 在小范围内运行良好。在单进程模式下,所有需要的微服务都在一个进程中运行。单进程模式非常适合测试 Loki、在本地运行或小规模运行。 Loki 还旨在为大规模安装进行横向扩展。Loki 的每个微服务组件都可以分解为单独的进程,并且配置允许对组件进行单独扩展。  | 
					
灵活性
| 
					 1  | 
						许多代理(客户端)都有插件支持。这允许当前的可观察性结构将 Loki 添加为他们的日志聚合工具,而无需切换可观察性堆栈的现有部分。  | 
					
Grafana 集成
| 
					 1  | 
						Loki 与 Grafana 无缝集成,提供完整的可观察性堆栈。  | 
					
与其他日志聚合系统相比,Loki:
基于 Loki 的日志系统由 3 个组件组成:
Loki 就像 Prometheus,但对于日志:我们更喜欢基于多维标签的索引方法,并且想要一个单二进制、易于操作且没有依赖关系的系统。Loki 与 Prometheus 的不同之处在于专注于日志而不是指标,并且通过推送而不是拉来交付日志。
为了运行 Loki,您必须:
安装 Loki 和 Promtail 的不同方法的说明。
| 
					 1 2  | 
						wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml  | 
					

完成后,loki-config.yaml并promtail-config.yaml配置文件下载到当前目录中。Docker 容器使用这些配置文件运行 Loki 和 Promtail。
| 
					 1 2  | 
						docker run -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:2.3.0 -config.file=/mnt/config/loki-config.yaml docker run -v $(pwd):/mnt/config -v /var/log:/var/log grafana/promtail:2.3.0 -config.file=/mnt/config/promtail-config.yaml  | 
					
访问 http://localhost:3100/metrics 以查看指标和 http://localhost:3100/ready 准备就绪。
从 v1.6.0 开始,图像被配置为默认以用户 loki 运行,具有 UID10001和 GID 10001。您可以使用不同的用户,特别是在您使用绑定安装时,通过docker run使用命令指定 UID并使用–user=UID适合您需要的数字 UID。
| 
					 1 2  | 
						wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/production/docker-compose.yaml -O docker-compose.yaml cat docker-compose.yaml   | 
					
可以看到compose文件安装了loki、promtail、grafana三个组件。

因为这里之前已经安装过grafana,而且这里没有添加配置文件映射,所以稍微改动下,首先下载方式1中使用到的配置文件。

修改为下面这样:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  | 
						version: "3" networks:   loki: services:   loki:     image: grafana/loki:2.3.0     ports:       - "3100:3100"     volumes:       - /var/log:/var/log       - ./loki-config.yaml:/etc/loki/local-config.yaml     command: -config.file=/etc/loki/local-config.yaml     networks:       - loki   promtail:     image: grafana/promtail:2.3.0     volumes:       - ./promtail/log:/var/log       - ./promtail-config.yaml:/etc/promtail/config.yml     command: -config.file=/etc/promtail/config.yml     networks:       - loki  | 
					
| 
					 1 2  | 
						docker-compose -f docker-compose.yaml up -d docker-compose logs -f  | 
					


登录Grafana,找到添加数据源页面。

找到Loki

填写Loki地址,然后保存。

日志采集是由promtail组件来完成的,所以需要在promtail中添加采集任务。

| 
					 1 2 3 4 5 6 7 8 9 10  | 
						promtail:     image: grafana/promtail:2.3.0     volumes:       - ./promtail/log:/var/log       - ./promtail-config.yaml:/etc/promtail/config.yml       # 将本地项目的日志映射到容器内       - /root/service/spring-demo/logs:/root/service/spring-demo/logs     command: -config.file=/etc/promtail/config.yml     networks:       - loki  | 
					
| 
					 1 2 3 4 5 6 7 8 9  | 
						- job_name: spring   static_configs:   - targets:       - localhost     labels:       job: spring       host: 192.168.12.12       # 采集路径       __path__: /root/service/spring-demo/logs/*.log  | 
					



from:https://blog.csdn.net/qq_43437874/article/details/120428338