小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
前言
众所周知,对于一道程序来说,能有详细的日志输出是十分重要的。一方面,日志便于代码出错后的调试,另一方面,在没有事先埋点的情况下,详细的日志对日后的数据统计也会有极大的帮助。
但是,but,由于我们的程序往往会部署在不同服务器的不同地方,因此查看不同的日志往往需要在不同的服务器不同的文件夹中跑来跑去非常麻烦。那么,有没有一个东西,可以让我们可以便捷的直接在一台主机上的一个地方上查看所有程序的日志呢? 接下来,我将向大家介绍如何使用Loki以实现这一功能
原理
准备工作
以下我们称,输出日志的程序,所在的主机为主机A
,查看日志的主机为主机B
。
在主机A安装并部署Loki
移动至任一想要让Loki运行的目录下
cd <path_to_loki_to_run>
下载 二进制文件(Linux) 或 exe可执行文件(Windows)
下载完成后记得要解压到当前目录哦
编辑Loki配置文件
# 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)
编辑Promtail配置文件
# 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服务
在HTTP.URL中输入http://<ip_of_host_A>:<prot_of_Loki_of_host_A>
并保存配置即可。 配置完成后即可在Grafana的explor中查看我们的日志
结语
本文只是简单地介绍了如何将一台主机的日志发送至另一台主机查看,若想将多台主机的日志发送至至一台主机查看,按照相同的操作配置即可。
本次并未深入介绍Promtail
与Loki
的原理。Promtail
除了可以将日志文件中的日志推送至Loki外,还可以将其他一些服务如Docker容器或者系统服务的日志也推送到Loki。且他除了可以直接推送日志外,还可以将日志进行一定规则的过滤筛选更改之后,再推送出去。感兴趣的朋友可以自行去深入了解一下Promtail
与Loki
。