当前位置 : 主页 > 操作系统 > centos >

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

来源:互联网 收集:自由互联 发布时间:2022-06-20
一、简 介 Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。 开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为

一、简 介

Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。 开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。系统架构十分简单,由以下3个部分组成 : * Loki 是主服务器,负责存储日志和处理查询 。 * promtail 是代理,负责收集日志并将其发送给 loki(只收集日志,不在本地进行运算) 。 * Grafana 用于 UI 展示。 只要在被监控服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询(如果Loki服务器性能不够,可以部署多个Loki进行存储及查询)。作为一个日志系统不关只有查询分析日志的能力,还能对日志进行监控和报警

二、系 统 架 构

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

1、promtail收集并将日志发送给loki的 Distributor 组件 2、Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester(存储) 3、Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端 4、Querier(查询器) 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ; 5、如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果

三、与 ELK 比 较

1、ELK虽然功能丰富,但规模复杂,资源占用高,操作苦难,很多功能往往用不上,有点杀鸡用牛刀的感觉。 2、不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。 3、通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。 4、安装部署简单快速,且受 Grafana 原生支持。

四、LOKI查询类型

1、日志查询返回日志行的内容。 例如:对关键字的统计(五分钟出现WARN次数)

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

2、度量查询扩展了日志查询,并根据来自日志查询的日志内容计算样本值。 例如:对数据的清洗:五分钟内数据的最小值

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

五、LOKI架构部署

1、部署环境

服务器 系统 部署软件 版本号 默认端口 被监控服务器 Linux Promtail v2.2.1 9080 LOKI服务器 Linux Loki v2.2.1 3100

2、部署过程

2.1 在应用服务器上部署promtail

curl -O -L "https://github.com/grafana/loki/releases/download/v2.2.1/promtail-linux-amd64.zip" unzip -q promtail-linux-amd64.zip -d /opt/jzjk/promtail 并新增文件/opt/jzjk/promtail/promtail.yaml cat /opt/jzjk/promtail/promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://loki服务器IP:3100/loki/api/v1/push scrape_configs: - job_name: test_log static_configs: - targets: - localhost labels: job: test_log __path__: /opt/test.log

2.2 在LOKI服务器上部署loki

curl -O -L "https://github.com/grafana/loki/releases/download/v2.2.1/loki-linux-amd64.zip" unzip -q loki-linux-amd64.zip -d /opt/jzjk/loki 并新增文件/opt/jzjk/loki/loki.yaml auth_enabled: false server: http_listen_port: 3100 #端口号 log_level: debug #日志等级为debug ingester: lifecycler: address: 127.0.0.1 ring: kvstore: store: inmemory replication_factor: 1 final_sleep: 0s chunk_idle_period: 5m chunk_retain_period: 30s schema_config: configs: - from: 2020-05-15 store: boltdb object_store: filesystem schema: v11 index: prefix: index_ period: 168h #每张表的时间范围6天 storage_config: boltdb: directory: /opt/jzjk/loki/index #索引文件存储地址 filesystem: directory: /opt/jzjk/loki/chunks #块存储地址 limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h

3.启动服务(先启动LOKI)

nohup /opt/jzjk/loki/loki-linux-amd64 -config.file=/opt/jzjk/loki/loki.yaml & nohup /opt/jzjk/promtail/promtail-linux-amd64 -config.file=/opt/jzjk/promtail/promtail.yaml &

六、LOKI数据的展示

1.非json格式日志的数据处理

在loki中查看日志全量,发现Log labels 只有2个,假设java后面的数据是我们要获取的变量,仅用现在的Log labels 无法获取,故需要用正则表达式regexp新增我们要获取的数据

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

通过公式计算新增Log labels名称为“value”

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

获取纯数据,用图标用于展示(五分钟内最小值)

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

七、LOKI告警配置

1.在loki配置文件中新增ruler组件,新增内容如下:

ruler: storage: type: local local: #rule规则存储目录 directory: /tmp/rules rule_path: /tmp/scratch #告警推送地址,对接到prometheus告警地址 alertmanager_url: http://localhost:9093 ring: kvstore: store: inmemory enable_api: true

2、确保/tmp/rules及/tmp/scratch目录存在,并在/tmp/rules下新建目录fake(为何是fake,请看下图org_id部分),在fake下创建yaml文件存放告警规则

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

cat /tmp/rules/fake/aler.yaml groups: - name: example rules: - alert: test_log_line number # 日志最近五天的行数大于0就告警 expr: count_over_time({job="test_log"} [5d]) >0 for: 1m

3、重启loki进程,打开prometheus的告警页面 prometheus_ip:9093验证告警是否呈现

轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)轻量级日志监控平台LOKI实施方案详解(日志的过滤展示及LOKI告警配置详解)

上一篇:批量修改linux用户密码脚本
下一篇:没有了
网友评论