使用Loki服务统一将日志发送至一台主机查看

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前言

众所周知,对于一道程序来说,能有详细的日志输出是十分重要的。一方面,日志便于代码出错后的调试,另一方面,在没有事先埋点的情况下,详细的日志对日后的数据统计也会有极大的帮助。

但是,but,由于我们的程序往往会部署在不同服务器的不同地方,因此查看不同的日志往往需要在不同的服务器不同的文件夹中跑来跑去非常麻烦。那么,有没有一个东西,可以让我们可以便捷的直接在一台主机上的一个地方上查看所有程序的日志呢?
接下来,我将向大家介绍如何使用Loki以实现这一功能

原理

image.png

准备工作

以下我们称,输出日志的程序,所在的主机为主机A,查看日志的主机为主机B

在主机A安装并部署Loki

移动至任一想要让Loki运行的目录下

cd <path_to_loki_to_run>

下载 二进制文件(Linux) 或 exe可执行文件(Windows)

二进制文件

exe可执行文件

下载完成后记得要解压到当前目录哦

编辑Loki配置文件

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
yaml复制代码# loki-config.yaml
auth_enabled: false

server:
http_listen_port: 3100

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
max_transfer_retries: 0

schema_config:
configs:
- from: 2018-04-15
store: 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: false
reject_old_samples: true
reject_old_samples_max_age: 168h

chunk_store_config:
max_look_back_period: 0s

table_manager:
retention_deletes_enabled: false
retention_period: 0s

配置文件中较为重要的参数说明

  • server.http_listen_port:Loki服务运行的端口。之后配置Promtail和Grafana时需要用到。
    其他参数对我们目前的需求来说,可以直接忽视。

部署Loki

Linux

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

Windows

./loki-windows-amd64.exe -config.file=loki_config.yaml

在主机A安装并部署Promtail

移动至任一想要让Promtail运行的目录下

cd <path_to_promtail_to_run>

下载 二进制文件(Linux) 或 exe可执行文件(Windows)

二进制文件

exe可执行文件

编辑Promtail配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
yaml复制代码# promtail-config.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://127.0.0.1:3100/loki/api/v1/push

scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: <path_to_log_file>

配置文件中较为重要的参数说明

  • clients.url:Loki服务的日志推送接口的url,一般为http://<ip_of_loki>:<port_of_loki>/loki/api/v1/push,在本文中,由于Loki与Promtail是在一台主机上,故ip为127.0.0.1,且上文Loki配置文件中,是将Loki部署在3100端口,故端口为3100,所以该参数的值为http://127.0.0.1:3100/loki/api/v1/push
  • scrape_config:日志爬虫配置,这里以最简单的文件爬虫为例。jon_name即为爬虫名称,没啥大用。targets为爬虫目的主机,本文中设为localhost即可。labels即为爬虫的标签,到时候可以使用标签过滤查看日志。labels.__path__即为日志文件所在路径,promtail会自动将该文件的日志推送至Loki服务。

部署Promtail

Linux

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

Loki

./promtail-windows-amd64.exe --config.file=promtail-config.yaml

在主机B安装并部署Grafana

下载安装Grafana

下载链接

运行Grafana并配置Loki服务

image.png
image.png
image.png
在HTTP.URL中输入http://<ip_of_host_A>:<prot_of_Loki_of_host_A>并保存配置即可。
image.png
配置完成后即可在Grafana的explor中查看我们的日志
image.png

结语

本文只是简单地介绍了如何将一台主机的日志发送至另一台主机查看,若想将多台主机的日志发送至至一台主机查看,按照相同的操作配置即可。

本次并未深入介绍PromtailLoki的原理。Promtail除了可以将日志文件中的日志推送至Loki外,还可以将其他一些服务如Docker容器或者系统服务的日志也推送到Loki。且他除了可以直接推送日志外,还可以将日志进行一定规则的过滤筛选更改之后,再推送出去。感兴趣的朋友可以自行去深入了解一下PromtailLoki

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%