📙
iLogtail用户手册
1.8.4
1.8.4
  • 关于
    • 什么是iLogtail
    • 发展历史
    • 产品优势
    • 开源协议
    • 社区版和企业版的对比说明
  • 安装
    • 快速开始
    • Docker使用
    • Kubernetes使用
    • 守护进程
    • 发布记录
    • 支持的操作系统
    • 源代码
      • 下载
      • 编译
      • Docker镜像
      • 编译依赖
    • 镜像站
  • 概念
    • 关键概念
    • 数据流水线
  • 配置
    • 采集配置
    • 系统参数
    • 日志
  • 数据流水线
    • 概览
    • 插件版本管理
    • 输入
      • 文本日志
      • 脚本执行数据
      • 容器标准输出
      • 文本日志(debug)
      • MetricInput示例插件
      • 主机Meta数据
      • Mock数据-Metric
      • eBPF网络调用数据
      • 主机监控数据
      • MySQL Binlog
      • GO Profile
      • GPU数据
      • HTTP数据
      • ServiceInput示例插件
      • Journal数据
      • Kafka
      • Mock数据-Service
      • SqlServer 查询数据
      • OTLP数据
      • PostgreSQL 查询数据
      • Syslog数据
    • 处理
      • 添加字段
      • 添加云资产信息
      • 原始数据
      • 数据脱敏
      • 丢弃字段
      • 字段加密
      • 条件字段处理
      • 日志过滤
      • Go时间格式解析
      • Grok
      • Json
      • 日志转SLS Metric
      • 正则
      • 重命名字段
      • 分隔符
      • 键值对
      • 多行切分
      • 字符串替换
    • 聚合
      • 基础
      • 上下文
      • 按Key分组
      • 按GroupMetadata分组
    • 输出
      • Kafka(Deprecated)
      • kafkaV2
      • ClickHouse
      • ElasticSearch
      • SLS
      • 标准输出/文件
      • OTLP日志
      • Pulsar
      • HTTP
      • Loki
    • 加速
      • 分隔符加速
      • Json加速
      • 正则加速
  • 工作原理
    • 文件发现
    • 插件系统
  • 可观测性
    • 日志
  • 开发者指南
    • 开发环境
    • 日志协议
      • 协议转换
      • 增加新的日志协议
      • 协议
        • sls协议
        • 单条协议
    • 代码风格
    • 数据模型
    • 插件开发
      • 开源插件开发引导
      • Checkpoint接口
      • Logger接口
      • 如何开发Input插件
      • 如何开发Processor插件
      • 如何开发Aggregator插件
      • 如何开发Flusher插件
      • 如何生成插件文档
      • 插件文档规范
      • 纯插件模式启动
    • 测试
      • 单元测试
      • E2E测试
    • 代码检查
      • 检查代码规范
      • 检查文件许可证
      • 检查依赖包许可证
  • 贡献指南
    • 贡献指南
    • 开发者
    • 成就
  • 性能测试
    • 容器场景iLogtail与Filebeat性能对比测试
  • 管控工具
    • 使用介绍
    • 通信协议
    • 开发指南
  • Awesome iLogtail
    • 走近iLogtail社区版
    • iLogtail社区版使用入门
    • iLogtail社区版开发者指南
    • iLogtail社区版使用案例
Powered by GitBook
On this page
  • 简介
  • 版本
  • 配置参数
  • 样例
  • 进阶配置
  • 动态 Label
  • tag 重命名
  1. 数据流水线
  2. 输出

Loki

简介

flusher_loki flusher插件可以实现将采集到的数据,经过处理后,发送到 Loki。

版本

Alpha

配置参数

参数
类型
是否必选
说明

Type

String

是

插件类型

Convert

Struct

否

ilogtail数据转换协议配置

Convert.Protocol

String

否

ilogtail数据转换协议,可选值:custom_single,otlp_log_v1。默认值:custom_single

Convert.Encoding

String

否

ilogtail数据转换编码,可选值:json、none、protobuf,默认值:json

Convert.TagFieldsRename

Map

否

对日志中tags中的json字段重命名

Convert.ProtocolFieldsRename

Map

否

ilogtail日志协议字段重命名,可当前可重命名的字段:contents,tags和time

URL

String

是

Loki 推送地址,例如:http://localhost:3100/loki/api/v1/push

TenantID

String

否

Loki 的租户 ID(需要 Loki 开启该功能),默认为空,表示单租户模式

MaxMessageWait

Int

否

发送 batch 前的最长等待时间,默认 1 秒

MaxMessageBytes

Int

否

发送积累的最大的 batch 大小,默认 1024 * 1024 bytes

Timeout

Int

否

等待 Loki 响应的最大时间,默认 10 秒

MinBackoff

Int

否

重试之间的最短退避时间,默认 500毫秒

MaxBackoff

Int

否

重试的最长退避时间,默认 5分钟

MaxRetries

Int

否

最大重试次数,默认 10

DynamicLabels

String数组

两种Label至少选择一项

需要从日志中动态解析的标签列表,例如:content.field1

StaticLabels

Map

两种Label至少选择一项

需要添加到每条日志上的静态标签

样例

本样例采集/home/test-log/路径下的所有文件名匹配*.log规则的文件,并将采集结果发送到 Loki。在执行该任务之前,需要确保系统已经安装了Loki。在 ilogtail 同级的 user_yaml_config.d 文件夹下,创建如下的配置文件:

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test_log
    FilePattern: "*.log"
flushers:
  - Type: flusher_loki
    URL: http://<loki 服务的地址与端口>/loki/api/v1/push
    TenantID: ilogtail
    MaxMessageWait: 100000000
    MaxMessageBytes: 16
    Timeout: 1000000000000
    MinBackoff: 100000000000
    MaxBackoff: 1000000000000
    MaxRetries: 10
    StaticLabels:
      source: ilogtail

运行 ilogtail 并收集到日志后,在 Grafana 或 Logcli 中可以通过以下的命令查询日志:

{ source="ilogtail" }

进阶配置

以下面的一段日志为例,后来将展开介绍ilogtail loki flusher的一些高阶配置

2022-07-22 10:19:23.684 ERROR [springboot-docker] [http-nio-8080-exec-10] com.benchmark.springboot.controller.LogController : error log

接下来,我们通过ilogtail的processor_regex插件,将上面的日志提取处理后几个关键字段。

  • time

  • level

  • application

  • thread

  • class

  • message

最后推送到Loki的数据样例如下:

{
  "contents": {
    "class": "org.springframework.web.servlet.DispatcherServlet@initServletBean:547",
    "application": "springboot-docker",
    "level": "ERROR",
    "message": "error log",
    "thread": "http-nio-8080-exec-10",
    "time": "2022-07-20 16:55:05.415"
  },
  "tags": {
    "k8s.namespace.name":"java_app",
    "host.ip": "192.168.6.128",
    "host.name": "master",
    "log.file.path": "/home/test-log/test.log"
  },
  "time": 1664435098
}

动态 Label

针对上面写入的这种日志格式,如果想在 Loki 中根据application名称进行查询,那么需要进行如下的配置。

DynamicLabels:
  - content.application

flusher_loki 会将去除前缀后的字符串作为存入 Loki 的 label。之后,在 Loki 中即可以 {application="springboot-docker"} 进行查询。 DynamicLabels 表达式规则:

  • content.fieldname:content 代表从 contents 中解析指定字段值。

  • tag.fieldname:tag 代表从 tags 中解析指定字段值。

tag 重命名

ilogtail 中的 converter 支持通过配置对 tags 中的字段进行重命名。在 flusher_loki 中进行如下的配置,即可对存入 Loki 中动态 label 进行重命名:

flushers:
  - Type: flusher_loki
    URL: http://<loki 服务的地址与端口>/loki/api/v1/push
    DynamicLabels:
      - tag.host.name
    Convert:
      TagFieldsRename:
        host.name: my.host.name

之后在 Loki 中进行查询时,可以通过重命名后的 label, {my.host.name="master"} 进行查询。

PreviousHTTPNext加速

Last updated 1 year ago