欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

promtail 配置详解_基于loki+promtail+grafana技术的日志集合

发布时间:2023/12/4 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 promtail 配置详解_基于loki+promtail+grafana技术的日志集合 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、背景和动机

近期运维工作中,随着项目的不停优化以及上线。在与后端、测试协同工作的交流中发现,为了测试以及解决项目在上线过程中或者试运行中出现的bug报错问题,开发同事对于日志的分析有着很大的需求。但是现在公司的日志查看主要是给予极少数的人员较大的权限,以及大量的需要运维人员帮忙登陆服务器查看服务日志进行下拉,复制黏贴给开发同事进行自主排错。

所以为了提高工作效率,同时也减轻运维同事的工作压力。需要引入日志系统,统一收集日志,又同时可以在页面中使得开发进行查看,极大的提高排错效率。

二、技术对比

这里主要对比两项技术ELK与loki

2.1:技术特点

ELK:

优点:

1、功能丰富,允许复杂的操作

2、对数据的处理,清洗有着巨大的优势,同时技术框架应用成熟,论坛等技术交流方法成熟。

劣势:

1、方案往往规模复杂,资源占用高,操作难。很多功能往往用不上,大多数查询只关注一定时间范围和一些简单的参数(如host、service等),使用这些解决方案有点大材小用。

2、主流的ELK(全文检索)或者EFK比较重

3、Kibana和Grafana之间切换,影响用户体验

4、倒排索引的切分和共享的成本较高

Loki:

优点:

1、Loki的架构非常简单,使用了和prometheus一样的标签来作为索引,通过这些标签既可以查询日志的内容也可以查询到监控的数据,不但减少了两种查询之间的切换成本,也极大地降低了日志索引的存储。

2、与ELK相比,消耗的成本更低,具有成本效益。

3、在日志的收集以及可视化上可以连用grafana,实现在日志上的筛选以及查看上下行的功能。

缺点:

1、技术比较新颖,相对应的论坛不是非常活跃。

2、功能单一,只针对日志的查看,筛选有好的表现,对于数据的处理以及清洗没有ELK强大,同时与ELK相比,对于后期,ELK可以连用各种技术进行日志的大数据处理,但是loki不行。

三、框架说明

Loki架构:

Loki使用了和prometheus一样的标签来作为索引,通过标签既可以查询日志的内容也可以查询到监控的数据。Loki将使用与prometheus相同的服务发现和标签重新标记库编写了的pormtail,在节点中promtail以daemonset方式运行在每个节点中通过api等,将它们发送到Loki,然loki与grafana连用,实现日志的可视化显示。

日志的存储框架:

1、Distributor:第一个接收日志的组件,Loki通过构建压缩数据块来实现批处理和压缩数据

2、Ingester:组件ingester是一个有状态的组件,负责构建和刷新chunck,当chunk达到一定的数量或者时间后,刷新到存储中去。

3、Querier:由Querier负责给定一个时间范围和标签选择器,Querier查看索引以确定哪些块匹配,并通过greps将结果显示出来。

四、部署

下载docker镜像

Docker pull grafana/loki:1.5.0

Docker pull grafana/promtail:latest

Docker pull grafana/grafana:latest

编写docker-compose文件

grafana:

image: grafana/grafana:latest //指定启动镜像

user: root

volumes:- ./grafana/provisioning/:/etc/grafana/provisioning/ //文件映射以及文件夹映射

- ./grafana/grafana.ini:/etc/grafana/grafana.ini- /data/grafana:/var/lib/grafana

ports:- 3000:3000 //端口映射

network_mode: 'host' //所属网络

loki:

image: grafana/loki:1.5.0 //启动镜像定义

container_name: loki

restart: always

ports:- "3100:3100"volumes:- /root/elk/loki-local-config.yaml:/etc/loki/loki-local-config.yaml

network_mode:'host'promtail:

image: grafana/promtail:latest

container_name: promtail

restart: always

volumes:- /root/elk/promtail-docker-config.yaml:/etc/promtail/config.yml- /opt:/opt //该映射地址可以我定义为日志存放地址1

- /var/log:/var/log //该映射地址可以我定义为日志存放地址2

network_mode: 'host'

编写promtail与loki的启动配置文件

Promtail的配置文件 vim /root/elk/promtail-docker-config.yaml

server:

http_listen_port: 9080

grpc_listen_port: 0

positions:

filename: /tmp/positions.yaml # 游标记录上一次同步位置

sync_period: 5s #10秒钟同步一次

clients:

- url: http://192.168.18.21:3100/loki/api/v1/push

scrape_configs:

- job_name: php-log

static_configs:

- targets:

- localhost

labels:

job: php_logs

__path__: /opt/loki/php/*log # docker运行时已经把宿主机的目录 /opt/

映射给了promtail 容器的/opt/,所以这个地方可以直接访问log文件

- job_name: tomcat-log

static_configs:-targets:-localhost

labels:

job: tomcat_logs

__path__:/opt/loki/tomcat/*log # docker运行时已经把宿主机的目录 /opt/ 映射给了promtail 容器的 /opt/,所以这个地方可以直接访问log文件

Loki配置文件 vim /root/elk/loki-local-config.yaml

参考官方

具体实例如下:

auth_enabled: falseserver:

http_listen_port:3100ingester:

lifecycler:

address:192.168.18.21ring:

kvstore:

store: inmemory

replication_factor:1final_sleep: 0s

chunk_idle_period: 5m

chunk_retain_period: 30s

schema_config:

configs:- from: 2020-09-02store: boltdb

object_store: filesystem

schema: v11

index:

prefix: index_

period: 168h

storage_config:

boltdb:

directory:/tmp/loki/index

filesystem:

directory:/tmp/loki/chunks

limits_config:

enforce_metric_name:falsereject_old_samples:truereject_old_samples_max_age: 168h

chunk_store_config:

max_look_back_period:0table_manager:

chunk_tables_provisioning:

inactive_read_throughput:0inactive_write_throughput:0provisioned_read_throughput:0provisioned_write_throughput:0index_tables_provisioning:

inactive_read_throughput:0inactive_write_throughput:0provisioned_read_throughput:0provisioned_write_throughput:0retention_deletes_enabled:falseretention_period:0

启动容器

Docker-compose up -d

总结

以上是生活随笔为你收集整理的promtail 配置详解_基于loki+promtail+grafana技术的日志集合的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。