前言
上一篇文章介绍了 《ElasticSearch7.7.1集群搭建 & Kibana安装》,今天说一下 Logstash的安卓和配置;
Logstash是一个开源的数据收集引擎,具有实时管道功能。它可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。Logstash常用于日志关系系统中做日志采集设备。
Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs。Inputs负责产生事件,常用如File、syslog、redis、beats(如Filebeats);filters负责数据处理与转换,常用如grok、mutate、drop、clone、geoip;outputs负责数据输出,常用如elasticsearch、file、graphite、statsd。其中inputs和outputs支持codecs(coder&decoder),使得logstash可以更好更方便的与其他有自定义数据格式的运维产品共存,比如graphite、fluent、netflow、collectd,以及使用msgpack、json、edn等通用数据格式的其他产品等。
简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
一、Logstash 下载&安装
在服务器上直接通过
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.7.1.tar.gz
下载到安装路径(/usr/local/webserver), 也可以在我的资源来进行下载
$ tar zxvf logstash-7.7.1.tar.gz
$ cd logstash-7.7.1 目录结构如下
测试安装是否成功
$ ./bin/logstash -e 'input { stdin {} } output { stdout {} }'
二 Logstash 项目实践简述
1、Mysql 读取数据到 ElasticSearch7.7.1集群
首先我们在 logstash-7.7.1 /config-mysql 目录 用于存放配置文件
1.1、input 部分说明,jdbc 可以配置多个配置不同的 tags
input {
stdin {
}
#search
jdbc {
# 数据库链接配置
jdbc_connection_string => "jdbc:mysql://10.10.1.1:3306/web_db?zeroDr=CONVERT_TO_NULL&characterEncoding=utf-8"
# 数据库用户名密码
jdbc_user => "app_dba"
jdbc_password => "coaaBtLc0n"
# 链接数据库的jar包的位置
jdbc_driver_library => "/data/software/logstash-7.7.1/mysql-connector-java-8.0.11.jar"
# mysql的 Driver
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "3000"
lowercase_column_names => "false"
record_last_run => true
use_column_value => "true"
tracking_column => "updatetime"
#执行获取数据的sql语句
statement => "select * from logstash_search where updatetime > :sql_last_value order by updatetime"
schedule => "* * * * *"
#tags
tags => "jdbc_logstash_search"
#数据记录执行日志,主要就是记录 sql_last_value 变量的值
last_run_metadata_path => "/data/software/logstash-7.7.1/data_config/last_run_value_search.log"
}
}
1.2、filter 部分,通过 tags 做判断进行格式处理
filter {
#===================search
if "jdbc_logstash_search" in [tags]{
json {
source => "location"
}
mutate {
remove_field => ["@version","@timestamp","type","updatetime"]
}
}
}
1.3、output部分,通过tags判断输出到不到的数据存储位置
output {
stdout {
codec => "json_lines"
}
#search
if "jdbc_logstash_search" in [tags]{
elasti