1.架构简介

Loki 是主服务器,负责存储日志和处理查询 。
promtail 是代理,负责收集日志并将其发送给 loki 。
Grafana 用于 UI 展示。
​
​
只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询(如果Loki服务器性能不够,可以部署多个Loki进行存储及查询)。作为一个日志系统不关只有查询分析日志的能力,还能对日志进行监控和报警

2.系统架构

1.promtail收集并将日志发送给loki的 Distributor 组件

2.Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester

3.Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端

4.Querier 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ;如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果

3.ELK区别对比

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

4.安装部署loki,promtail

1)下载安装包以及获取默认配置文件
# loki、promtail、grafana官网、loki-local-config.yaml、promtail-local-config.yaml
​
curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/loki-linux-amd64.zip" 
curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/promtail-linux-amd64.zip"
wget https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/promtail/promtail-local-config.yaml
​
# 记得看自己系统版本  
​
2.创建环境
创建文件夹 /opt/loki
​
#解压loki-linux-amd64.zip
unzip promtail-linux-amd64.zip
​
#根据需要修改配置文件
vim loki-local-config.yaml
​
[root@91elk loki]#cat loki-local-config.yaml 
​
​
auth_enabled: false
​
server:
  http_listen_port: 3100
  grpc_listen_port: 3110
  grpc_server_max_recv_msg_size: 1073741824  #grpc最大接收消息值,默认4m
  grpc_server_max_send_msg_size: 1073741824  #grpc最大发送消息值,默认4m
​
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
  max_chunk_age: 20m  #一个timeseries块在内存中的最大持续时间。如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块
​
schema_config:
  configs:
    - from: 2021-01-01
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 168h
​
storage_config:
  boltdb:
    directory: /opt/loki/index #存储索引地址
  filesystem:
    directory: /opt/loki/chunks
​
limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  ingestion_rate_mb: 30  #修改每用户摄入速率限制,即每秒样本量,默认值为4M
  ingestion_burst_size_mb: 15  #修改每用户摄入速率限制,即每秒样本量,默认值为6M
​
chunk_store_config:
       # max_look_back_period: 168h   #回看日志行的最大时间,只适用于即时日志
  max_look_back_period: 0s
       
table_manager:
  retention_deletes_enabled: false #日志保留周期开关,默认为false
  retention_period: 0s  #日志保留周期
​
​
​
#启动loki进程
nohup /opt/loki/loki-linux-amd64 -config.file=/opt/loki/loki-local-config.yaml >loki.out 2>&1 &
​
​
​
2、安装promtail
​
#解压promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
​
#根据需要修改配置文件
vim promtail-local-config.yaml
​
[root@91elk loki]#cat promtail-local-config.yaml 
​
server:
  http_listen_port: 9080
  grpc_listen_port: 0
  grpc_server_max_recv_msg_size: 900000000000
  grpc_server_max_send_msg_size: 900000000000
positions:
  filename: /opt/loki/positions.yaml
​
clients:
  - url: http://127.0.0.1:3100/loki/api/v1/push
    batchwait: 10s
    batchsize: 40960000
scrape_configs:
  - job_name: system
    static_configs:
    - targets:
        - localhost
      labels:
        job: varlogs
        host: localhost
        __path__: /var/log/nginx/access.log*    #你要采集的日志位置
​
​
#启动promtail 进程
nohup /opt/loki/promtail-linux-amd64 -config.file=/opt/loki/promtail-local-config.yaml >promtail.out 2>&1 &
​
​
#查看端口
[root@91elk loki]#ss -ntl | grep 31[0\1]0
​
LISTEN 0      4096               *:3100             *:*          
LISTEN 0      4096               *:3110             *:*          
​
[root@91elk loki]#ss -ntl | grep 9080
​
LISTEN 0      4096               *:9080             *:*      
​
​
​

5.安装部署grafana可视化

1.安装依赖
apt-get install -y adduser libfontconfig1 musl
​
2.下载软件
wget https://dl.grafana.com/oss/release/grafana_10.2.0_amd64.deb
​
3.安装
dpkg -i grafana_10.2.0_amd64.deb
​
4.查看是否启动
systemctl start grafana-server
​
systemctl status grafana-server.service 
​
[root@91elk loki]#ss -tnl | grep 3000
LISTEN 0      4096               *:3000             *:*     
​
​
5.访问测试
http://10.0.0.91:3000/
​
'初始用户名和密码是admin
​
'初次登陆会提示更改密码
​
'至此grafana安装完成
---------------------------------------------------
​
注意:访问web界面时,如果出现If you're seeing this Grafana has failed to load its application files,解决办法:更换浏览器。如果不能访问界面,注意关闭centos防火墙,systemctl stop firewalld.service
​
​

登录进入主界面之后点击左侧菜单栏Data sources

添加数据源loki

做如下配置

之后页面下拉点击Save&test 出现对号证明连接loki成功

之后进入Explore选择标签,也可以对指定字段进行搜索

然后就可以看到日志数据

# 注意选label filters  要看自己设置的日志是路径还是其他 
​
# Line contains 是过滤字段
​
# loki也可以识别json格式 也要在nginx.config配置和filebeat配置是一样的
​
​
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐