InfluxDB从入门到精通:使用logstash解析日志文件写入数据到InfluxDB

经过上一篇文章,我们对InfluxDB已经有了基本的了解,接下来看看如何实现:读取日志文件并写入数据到InfluxDB中。

1.方案设计

1.1.整体流程图

由Logstash监听应用服务的日志文件变更,读取数据并进行处理后,写入到InfulxDB中。
在这里插入图片描述

1.2.Logstash流程

Logstash是一个开源的数据收集引擎,具有实时流水线功能。它通过插件的方式提供各类输入、过滤、输出数据的处理方式。
在这里插入图片描述

2.实现步骤

2.1.安装logstash

docker pull docker.elastic.co/logstash/logstash:8.8.2

2.2.配置文件

1.logstash配置

在 /data/logstash/config 路径下创建 logstash.yml 作为 logstash 的配置文件,详细配置项:https://www.elastic.co/guide/en/logstash/8.8/logstash-settings-file.html

node.name: logstash2023
path.logs: /usr/share/logstash/logs
log.level: debug
2.流水线定义

在 /data/logstash/pipeline 路径下创建 logstash.conf,配置数据处理流程,输出仅打印了日志,稍后会增加写入InfluxdDB步骤。

input {
	file{
		path => "/usr/share/logstash/data/test.log"
		start_position => "beginning"
	}
}

filter {
  grok {
    match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:loglevel}\] - %{GREEDYDATA:log_json}" }
  }
  json {
	source => "log_json"
  }
  mutate {
    remove_field => ["message", "path", "original"]
  }
}

output {
	stdout {
        codec => rubydebug
    }
}
3.流水线配置

在 /data/logstash/config 路径下创建 pipelines.yml,增加以下配置:

- pipeline.id: main
  path.config: /usr/share/logstash/pipeline/logstash.conf

2.3.启动logstash

docker run -it --network host --name logstashV2 -v /data/logstash/config:/usr/share/logstash/config -v /data/logstash/data:/usr/share/logstash/data -v /data/logstash/pipeline:/usr/share/logstash/pipeline  --privileged=true -d docker.elastic.co/logstash/logstash:8.8.2

2.4.写入日志

在日志文件中写入以下内容,从日志可以看到解析之后的数据。

[2023-07-14T10:22:15.810] [INFO] - {"flowId":"1","requestId":"r1","node":"e76c4bd185a45bd7"}

2.5.安装插件

开发文档提供的Influxdb output plugin插件,处于无人维护状态,因此并不支持InfluxDB 2.x版本,所以这里安装的是logstash-output-influx-v2插件。从以下仓库下载编译好的gem文件,上传到/data/logstash/data目录下,在容器中执行:

bin/logstash-plugin install /usr/share/logstash/data/logstash-output-influx_v2-1.0.1.gem

插件地址:
https://github.com/ahxinin/logstash-output-influx-v2

2.6.写入InfluxdDB

编辑 logstash.conf文件,修改output配置:

output {
	stdout {
        codec => rubydebug
    }
	
    influx_v2 {
		url => "http://127.0.0.1:8086"
		org =>  "org"
		token => "token"
		bucket => "logstash"
		measurement => "log"
		excludes => ['log_json']
		tags => ['flowId']
    }
}

重启容器,新的日志内容将会通过流水线写入到InfluxDB中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值