账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    logstash 自定义template无效
    72
    0
    logstash配置指定了一个自定义的template,启动logstash后,通过es rest _template/?pretty未找到我设置的模板,数据在拉取到es自动映射时也未按照我模板配置的规则动态映射模板配置了string字段的分析器为ik_max_word,启动logstash控制台未发现相关异常日志,以下为我的配置文件,麻烦各位老哥帮我看下情况logstash配置:input { jdbc { # 设置 MySql/MariaDB 数据库url以及数据库名称 jdbc_connection_string => "jdbc:mysql://192.168.1.8:3306/foodie-shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false" # 用户名和密码 jdbc_user => "root" jdbc_password => "qq1432779875" # 数据库驱动所在位置,可以是绝对路径或者相对路径 jdbc_driver_library => "/usr/local/logstash-7.15.2/sync/mysql-connector-java-8.0.26.jar" # 驱动类名 jdbc_driver_class => "com.mysql.cj.jdbc.Driver" # 开启分页 jdbc_paging_enabled => "true" # 分页每页数量,可以自定义 jdbc_page_size => "1000" # 执行的sql文件路径 statement_filepath => "/usr/local/logstash-7.15.2/sync/items.sql" # 设置定时任务间隔 含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务 schedule => "* * * * *" # 索引类型 type => "_doc" # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件 use_column_value => true # 记录上一次追踪的结果值 last_run_metadata_path => "/usr/local/logstash-7.15.2/sync/track_time" # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间 tracking_column => "updated_time" # tracking_column 对应字段的类型 tracking_column_type => "timestamp" # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录 clean_run => false # 数据库字段名称大写转小写 lowercase_column_names => false }}output { elasticsearch { # es地址 hosts => ["192.168.207.138:9200"] # 同步的索引名 index => "foodie-items-ik" # 设置_docID和数据相同 document_id => "%{id}" # document_id => "%{itemId}" template_name => "esik" template => "/usr/local/logstash-7.15.2/sync/logstash-ik.json" template_overwrite => false manage_template => false } # 日志输出 stdout { codec => json_lines }}logstash-ik.json{ "order":0, "version": 1, "index_patterns": ["*"], "settings": { "index": { "refresh_interval": "5s" } }, "mappings": { "_default_": { "dynamic_templates": [ { "message_field": { "path_match": "message", "match_mapping_type": "string", "mapping": { "type": "text", "norms": false } } }, { "string_fields": { "match": "*", "match_mapping_type": "string", "mapping": { "type": "text", "norms": false, "analyzer": "ik_max_word", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } ], "properties": { "@timestamp": { "type": "date" }, "@version": { "type": "keyword" }, "geoip": { "dynamic": true, "properties": { "ip": { "type": "ip" }, "location": { "type": "geo_point" }, "latitude": { "type": "half_float" }, "longitude": { "type": "half_float" } } } } } }, "aliases": {}}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不读书的书虫 普通会员 1楼

      Logstash 作为一个数据收集和过滤工具,它并不支持自定义模板。 Logstash 通过日志文件来收集和处理数据,而这些日志文件是由用户的文本、命令行参数或其他格式的输入流产生的。

      如果你想要自定义日志文件的格式,你可以使用 Logstash 的 filterchannel 部分。在 filter 部分中,你可以定义你的自定义中间件,这些中间件可以接收来自各种数据源的数据,并将这些数据格式化为 Logstash 需要的格式。

      channel 部分中,你可以定义你的日志文件的输出通道。你可以将这些通道连接到一个 filter 中,以便在日志文件被发送到这些通道之前,进行一些预处理。

      例如,你可以定义一个自定义中间件,这个中间件会将输入的文本转换为符合你要求的格式。然后,你可以将这个中间件的输出连接到一个 filter 中,以便在日志文件被发送到你的日志文件输出通道之前,进行一些预处理。

      请注意,你需要确保你的中间件能够正确处理各种输入格式,并且能够将输入的文本转换为符合你要求的格式。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部