一.Loki介绍
整体架构
Loki的架构非常简单,使用了和prometheus一样的标签来作为索引,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据,不但减少了两种查询之间的切换成本,也极大地降低了日志索引的存储。
Loki将使用与prometheus相同的服务发现和标签重新标记库,编写了pormtail, 在k8s中promtail以daemonset方式运行在每个节点中,通过kubernetes api等到日志的正确元数据,并将它们发送到Loki。
下面是日志的存储架构:
二.使用二进制包简单搭建
使用docker-composer可能比较方便,我们这里采用二进制包安装
1.安装loki主程序包
loki-linux-amd64.zip
查看配置文件
[[email protected] Loki]# cat 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
objectstore: filesystem
schema: v11
index:
prefix: index
period: 168h
storage_config:
boltdb:
directory: /loki/index
filesystem:
directory: /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
指定配置文件,启动服务
nohup ./loki -config.file=loki-config.yaml &
2.采集promtail节点配置
这里我们使用的是采集小米数据库代理中间件gaea的日志为例,其他的日志只要写好节点采集路径及名称就可以了
下载二进制包promtail-linux-amd64.zip
查看节点采集配置文件
[[email protected] promtail]# cat promtail-config.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
scrape_configs:
- job_name: system
static_configs:- targets:
- localhost
labels:
job: 92-gaea
path: /data/gaea/logs/gaea.*
- localhost
- targets:
启动采集服务
nohup ./promtail -config.file=promtail-config.yaml &
3.loki服务器端安装展示模版grafana
下载包直接yum安装即可,安装完启动服务
yum install -y grafana-7.0.5-1.x86_64.rpm
三.grafana展示查看数据
1.添加loki数据源
2.打开展示板
3.查看日志数据
四.查询基本语法
= 完全相同。
!= 不平等。
=~ 正则表达式匹配。
!~ 不要正则表达式匹配。
{job=“mysql”} |= “error”
{name=“kafka”} |~ “tsdb-ops.*io:2017”