Loki-轻量级日志聚合系统

Loki-轻量级日志聚合系统

说到分布式日志存储系统,大家肯定对ELKEFKGraylog这些工具并不陌生。可是它们都基于Elasticsearch存储,搭建复杂不说,还非常耗资源。对于我们这种,做什么都要考虑成本的公司。当然是玩不起那么高大上的玩意儿了。所以,就考虑着手学习Grafana Labs开源的Loki

Loki使用标签来作为索引,而不是对全文进行检索,所以在搜索上会有一定的局限性。但是,也能满足我们的需求。搭建Loki,我们需要安装三个组件,promtail收集日志到LokiLoki日志存储中心,Grafana作为UI展示。

安装方式有多种,根据我目前的条件,选择了二进制安装方式。二进制文件可以去https://github.com/grafana/loki/releases/下载,需要下载Lokipromtail,我这里安装的是2.7.3版本

然后下载配置文件

1
2
3
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml

或者去https://grafana.com/docs/loki/latest/configuration/examples/找一个合适自己的配置改改。

这里,我们先准备好Lokipromtail的配置文件
loki-config.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
server:
http_listen_port: 3100
schema_config:
configs:
- from: 2021-08-01
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ingester:
lifecycler:
address: 172.20.108.138
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s

storage_config:
boltdb:
directory: /home/deployer/loki/store/index
filesystem:
directory: /home/deployer/loki/store/chunks

limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
# 每个用户每秒的采样率限制
ingestion_rate_mb: 32
# 每个用户允许的采样突发大小
ingestion_burst_size_mb: 64


chunk_store_config:
# 最大可查询历史日期 28天,这个时间必须是schema_config中的period的倍数,否则报错。
max_look_back_period: 672h
# 表的保留期28天
table_manager:
retention_deletes_enabled: true
retention_period: 672h

promtail-local-config.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /home/deployer/loki/positions.yaml

clients:
- url: http://172.20.108.138:3100/loki/api/v1/push
tenant_id: tenant1

scrape_configs:
- job_name: system
pipeline_stages:
static_configs:
- labels:
job: eisp # A `job` label is fairly standard in prometheus and useful for linking metrics and logs.
host: 172.20.108.138 # A `host` label will help identify logs from this machine vs others
__path__: /home/deployer/eisp-tomcat-8080/logs/*.out

启动loki服务

1
./loki-linux-amd64 -config.file=loki-config.yaml

启动promtail服务

1
./promtail-linux-amd64 -config.file=promtail-local-config.yaml

安装Grafana

首先去Grafana官网下载二进制文件

GrafanaEnterprise版和OSS,企业版当然是要收钱的,所以,我选择的开源版。根据官网提供的下载命令,下载并解压

1
2
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.6.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-9.3.6.linux-amd64.tar.gz

conf目录中存放着各种配置,这里暂时以默认配置启动。直接在解压目录中执行bin/grafana-server web即可启动

Grafana默认端口是3000,此时,我们访问ip:port就会出现登录页面,默认用户名和密码都为admin,登录成功后会跳转到密码修改页面。自行设置默认密码。进入主界面后,我们先添加一个Loki的数据源


接下来,还有一个关键参数一定要加。在Header上添加X-Scope-OrgID参数,参数值根据实际情况填写,默认tenant1,然后点击[Save&test]

接下来,我们去查询收集到的日志

我们还可以模糊检索

其他更高级的用法则需要熟悉LogQL,但是,其检索功能肯定不及ES强大。这里仅是单节点,我们先观察一段时间。后续升级更新

Loki-轻量级日志聚合系统

https://blogs.52fx.biz/posts/3896264100.html

作者

eyiadmin

发布于

2023-02-23

更新于

2024-05-31

许可协议

评论