Linux 源码编译安装 loki+promtail+grafana (v2.4.1版本)

loki简介

在这里插入图片描述

介绍:Loki 由以下3个部分组成: 

loki是主服务器,负责存储日志和处理查询。
promtail是代理,负责收集日志并将其发送给 loki 。
grafana用于 UI 展示。

一、promtail 部署

下载地址:https://github.com/grafana/loki/releases/download/v2.4.1/promtail-linux-amd64.zip

1、解压,下载官方配置模板并修改

mkdir /data/promtail
unzip promtail-linux-amd64.zip
wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
vim promtail-local-config.yaml
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://192.156.71.125:3100/loki/api/v1/push    ## 此处lokiserver修改为服务器端地址

scrape_configs:
- job_name: application            # job名称,自定义
  static_configs:
  - targets:                    # 如测试环境多个应用多个路径,从此行开始复制修改对应的标签
      - localhost
    labels:
      job: tomcat                # 监控类型
      project: tjhlwjg            # 项目名称自定义
      host: 192.156.71.125        # 建议修改为本机ip,方便过滤      
      __path__: /data/tomcat_tjjg/logs/catalina.out        # tomcat日志路径

2、启动promtail

cd /data/promtail
nohup ./promtail-linux-amd64 --config.file=promtail.yaml &

二、loki 部署

下载地址:https://github.com/grafana/loki/releases/download/v2.4.1/loki-linux-amd64.zip

1、解压,下载官方配置模板并修改

mkdir /data/loki
unzip loki-linux-amd64
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
vim loki-local-config.yaml        # 这里不需要alertmanager,注释掉
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

# ruler:
#   alertmanager_url: http://localhost:9093

# 下面的配置为新增的,不配置日志太大会报错
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

2、启动loki

cd /data/loki
nohup ./loki-linux-amd64 --config.file=loki.yaml &

三、配置grafana

用 docker 启动 grafana: 

docker run --restart=always --privileged=true --name grafana -p 3000:3000 -e TZ=Asia/Shanghai -e LANG=zh_CN.UTF-8 grafana/grafana:master

1、添加loki数据源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qd8BMgJm-1640661983815)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211228091538305.png)]

2、输入loki服务器的ip和端口(3100)、其他默认,然后Save&Test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWjhWAXG-1640661983817)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211228092030495.png)]

3、在Explore中选择loki,可以根据自定义的标签进行过滤

在这里插入图片描述

4、loki的日志页面如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bjRHS8H2-

四、Loki查看日志

Loki 选择器

查询表达式

  • 对于查询表达式的标签部分,将其包装在花括号中{}
  • 使用键值对的语法来选择标签
  • 多个标签表达式用逗号分隔
{filename="/var/log/nginx/pcb.access.log",job="nginxlogs"}

匹配运算符

  • = 等于
  • != 不相等
  • =~ 正则表达式匹配
  • !~ 不匹配正则表达式

Loki 过滤器

搜索表达式

  • 搜索表达式可以只是文本或正则表达式
  • 表达式接受RE2语法
  • 匹配项区分大小写

过滤器类型

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配
{filename="/var/log/nginx/pcb.access.log",job="nginxlogs"} |~ "\"nx_status\":200"

 
五、promtail 用法

客户端收集日志

将需要收集的日志挂载到 promtail 容器

  • 客户端仅启动 promtail 日志收集容器
  • -v 宿主机日志目录:/var/log/****

promtail 配置说明

  • 支持通配符 *, 表示所有,比如 *.log
  • 多个日志目录可以使用 {path1,path2,…pathN} 区分
  • 不同的 job 使用 targets 区分
  - targets:
      - localhost
    labels:
      job: logsname1
      __path__: /var/log/path1/*log

  - targets:
      - localhost
    labels:
      job: logsname2
      __path__: /var/log/path2/*log

注意事项

promtail 报 429 错误

收集的日志太多了,超过了 loki 的限制

level=warn ts=2021-12-02T06:27:01.372586524Z caller=client.go:349 component=client host=192.168.0.11:3100 msg="error sending batch, will retry" status=429 error="server returned HTTP status 429 Too Many Requests (429): entry with timestamp 2021-12-02 06:27:01.316127865 +0000 UTC ignored, reason: 'Per stream rate limit exceeded (limit: 3MB/sec) while attempting to ingest for stream '{filename=\"/var/log/nginx/nginx.log\", job=\"nginxlogs\"}' totaling 1697740B, consider splitting a stream via additional labels or contact your Loki administrator to see if the limt can be increased' for stream: {filename=\"/var/log/nginx/nginx.log\", job=\"nginxlogs\"},"

增加 Loki 限制

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  ingestion_rate_mb: 40
  ingestion_burst_size_mb: 20

参考: 

Retention | Grafana Loki documentation 

日志采集展示系统grafana+loki_pengpenhhh的博客-优快云博客_grafana loki

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴国进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值