Elasticsearch-核心篇(13)-Logstash数据采集

1,685 阅读2分钟

一、日志文件采集

  1. 参考文档
  2. 可以从日志文件中采集数据
  3. 自定义配置文件logstash.conf配置文件,配置文件采集信息
input {
    # 从文件读取日志信息
    file{
        path => "日志文件路径"
        codec => plain {
          charset => "UTF-8"
        }
    }
}

output {
	# 输出到es
	elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash"
    }
}

二、MySQL数据采集

  1. 可以将MySQL数据导入到ES中,时间es检索的是数据库中的数据信息
  2. 导入mysql的驱动包:mysql-connector-java-8.0.20.jar,并确定数据库服务可用
    • 将jar包上传到**/opt/es/logstash/logstash-7.8.0/logstash-core/lib/jars**
  3. 在logstash目录下修改配置文件内容如下
input {
    # 从数据库中读取数据
    jdbc {
        # 数据库驱动地址
        jdbc_driver_library => "./repository/mysql-connector-java-5.1.47.jar"
        # 驱动包名称
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        # 连接地址
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/logstash"
        # 数据库用户名
        jdbc_user => "root"
        # 数据库密码
        jdbc_password => "tianxin"
        # 获取数据SQL
        statement => "select * from logstash where id > :sql_last_value"
        # 可以将SQL定义到文件中
        #statement_filepath => "./config/jdbc.sql"
        # 同步频率(分 时 天 月 年),默认一分钟执行一次
        schedule => "*/1 * * * *"
        # 记录上次执行结果,将会保存到last_run_metadata_path配置文件中,不建议配置
        # 如果配置为true将会导致磁盘受到两倍IO压力
        #record_last_run => false
        # 数据库自增字段,用来增量记录,通常是主键
        use_column_value => true
        # 查询字段类型,此处为数值,时间戳为timestamp
        tracking_column_type => "numeric"
        # 查询条件的字段
        tracking_column => "id"
        # 记录最后一次查询的id,初始数值默认0,时间戳为1970后的时间戳
        last_run_metadata_path => "./repository/last_run_metadata.txt"
        # 是否清除last_run_metadata_path值,如果为true,表示每次都做全量同步
        clean_rum => false
    }
}

output {
    # 输出到es
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash"
        # 文档id与数据库id字段关联
        document_id => "%{id}"
        # 使用模板,可以提升效率
        template_overwrite => true
    }
}

三、TCP数据采集

  1. 可以采集TCP端口数据信息
  2. 在logstash目录下修改配置文件内容如下
input {
    # 监听TCP端口信息
    tcp {
        port => 4560
        codec => json_lines
    }
}

output {
    # 输出到es
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash"
    }
}