Logstash:通过 lookups 来丰富数据

这篇具有很好参考价值的文章主要介绍了Logstash:通过 lookups 来丰富数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果你想了解更多关于 lookup 的内容,请参阅文章 “Elastic:开发者上手指南” 中的 “丰富数据及 lookup” 章节。在今天的文章中,我来总结在 Logstash 中一些常用的 lookups。如下的这些插件可以帮助你使用附加信息丰富数据,例如 GeoIP 和用户代理信息:

  • dns filter
  • elasticsearch filter
  • geoip filter
  • http filter
  • jdbc_static filter
  • jdbc_streaming filter
  • memcached filter
  • translate filter
  • useragent filter

Lookup 插件

dns filter

dns 过滤器插件执行标准或反向 DNS 查找。

以下配置对 source_host 字段中的地址进行反向查找,并将其替换为域名:

filter {
  dns {
    reverse => [ "source_host" ]
    action => "replace"
  }
}

我们可以使用如下的例子来进行测试:

logstash.conf

input {
  generator {
    message => '8.8.8.8'
    count => 1
  }
}
 
filter {
  dns {
    reverse => [ "message" ]
    action => "replace"
  }
}
 
output {
  stdout {
    codec => rubydebug
  }
}

使用 Logstash 运行上面的配置文件:

./bin/logstash -f logstash.conf

Logstash:通过 lookups 来丰富数据

 

elasticsearch filter

elasticsearch filter 将 Elasticsearch 中以前的日志事件的字段复制到当前事件。

以下配置显示了如何使用此过滤器的完整示例。 每当 Logstash 收到 “end” 事件时,它都会使用此 Elasticsearch filter 根据某些操作标识符找到匹配的 “start” 事件。 然后它将 @timestamp 字段从 “start” 事件复制到 “end” 事件的新字段中。 最后,结合使用 date filter 和 ruby 筛选器,示例中的代码计算两个事件之间的持续时间(以小时为单位)。

      if [type] == "end" {
         elasticsearch {
            hosts => ["es-server"]
            query => "type:start AND operation:%{[opid]}"
            fields => { "@timestamp" => "started" }
         }
         date {
            match => ["[started]", "ISO8601"]
            target => "[started]"
         }
         ruby {
            code => 'event.set("duration_hrs", (event.get("@timestamp") - event.get("started")) / 3600) rescue nil'
        }
      }

更为详细的介绍,请阅读文章 “Logstash:运用 Elasticsearch filter 来丰富地理数据”。

geoip filter

geoip 过滤器添加有关 IP 地址位置的地理信息。 例如:

filter {
  geoip {
    source => "clientip"
  }
}

在 Elastic Stack 8.x. 上,我们做如下的一个例子:

logstash.conf

input {
  generator {
    message => '8.8.8.8'
    count => 1
  }
}
 
filter {
  mutate {
    rename => {"message" => "[clientip][ip]"}
  }

  geoip {
    source => "[clientip][ip]"
    target => "geoip"
  }
} 
 
output {
  stdout {
    codec => rubydebug
  }
}

运行上面的 Logstash 配置文件:

./bin/logstash -f logstash.conf

Logstash:通过 lookups 来丰富数据

详细阅读文章 “Logstash:Logstash 入门教程 (二)”。

http filter

http 过滤器与外部 Web 服务/REST API 集成,并启用针对任何 HTTP 服务或端点的查找扩充。 此插件非常适合许多丰富用例,例如社交 API、情感 API、安全源 API 和业务服务 API。

更为详细的介绍,请阅读文章 “Logstash:HTTP 过滤器介绍”。

jdbc_static filter

jdbc_static 过滤器使用从远程数据库预加载的数据来丰富事件。

以下示例从远程数据库获取数据,将其缓存在本地数据库中,并使用查找来使用本地数据库中缓存的数据丰富事件。

filter {
  jdbc_static {
    loaders => [ (1)
      {
        id => "remote-servers"
        query => "select ip, descr from ref.local_ips order by ip"
        local_table => "servers"
      },
      {
        id => "remote-users"
        query => "select firstname, lastname, userid from ref.local_users order by userid"
        local_table => "users"
      }
    ]
    local_db_objects => [ (2) 
      {
        name => "servers"
        index_columns => ["ip"]
        columns => [
          ["ip", "varchar(15)"],
          ["descr", "varchar(255)"]
        ]
      },
      {
        name => "users"
        index_columns => ["userid"]
        columns => [
          ["firstname", "varchar(255)"],
          ["lastname", "varchar(255)"],
          ["userid", "int"]
        ]
      }
    ]
    local_lookups => [ (3)
      {
        id => "local-servers"
        query => "select descr as description from servers WHERE ip = :ip"
        parameters => {ip => "[from_ip]"}
        target => "server"
      },
      {
        id => "local-users" 
        query => "select firstname, lastname from users WHERE userid = :id"
        parameters => {id => "[loggedin_userid]"}
        target => "user" (4)
      }
    ]
    # using add_field here to add & rename values to the event root
    add_field => { server_name => "%{[server][0][description]}" }
    add_field => { user_firstname => "%{[user][0][firstname]}" } (5)
    add_field => { user_lastname => "%{[user][0][lastname]}" }
    remove_field => ["server", "user"]
    jdbc_user => "logstash"
    jdbc_password => "example"
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_driver_library => "/tmp/logstash/vendor/postgresql-42.1.4.jar"
    jdbc_connection_string => "jdbc:postgresql://remotedb:5432/ls_test_2"
  }
}
  1. 查询外部数据库以获取将在本地缓存的数据集。
  2. 定义用于构建本地数据库结构的列、类型和索引。 列名和类型应与外部数据库相匹配。
  3. 对本地数据库执行查找查询以丰富事件。
  4. 指定将存储查找数据的事件字段。 如果查找返回多列,则数据将作为 JSON 对象存储在字段中。
  5. 从 JSON 对象中获取数据并将其存储在顶级事件字段中,以便在 Kibana 中进行更轻松的分析。

更为详细的例子,请参考文章 “Logstash:Jdbc static filter plugin 介绍”。

jdbc_streaming filter

jdbc_streaming 过滤器使用数据库数据丰富事件。

以下示例执行 SQL 查询并将结果集存储在名为 country_details 的字段中:

filter {
  jdbc_streaming {
    jdbc_driver_library => "/path/to/mysql-connector-java-5.1.34-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydatabase"
    jdbc_user => "me"
    jdbc_password => "secret"
    statement => "select * from WORLD.COUNTRY WHERE Code = :code"
    parameters => { "code" => "country_code"}
    target => "country_details"
  }
}

更为详细的例子可一些参阅文章 “Logstash:运用 jdbc_streaming 来丰富我们的数据”。

memcached filter

Memcached 过滤器启用针对 Memcached 对象缓存系统的键/值查找扩充。 它支持读取 (GET) 和写入 (SET) 操作。 它是安全分析用例的显着补充。

更为详细的描述可以在文章中 “Logstash:运用 memcache 过滤器进行大规模的数据丰富” 看到。

translate filter

Translate 过滤器根据 hash 或文件中指定的替换值替换字段内容。 目前支持这些文件类型:YAML、JSON 和 CSV。

以下示例采用 response_code 字段的值,根据字典中指定的值将其转换为描述,然后从事件中删除 response_code 字段:

filter {
  translate {
    field => "response_code"
    destination => "http_response"
    dictionary => {
      "200" => "OK"
      "403" => "Forbidden"
      "404" => "Not Found"
      "408" => "Request Timeout"
    }
    remove_field => "response_code"
  }
}

详细阅读文章 “Logstash:Logstash translate 过滤器简介”。

useragent filter

useragent 过滤器将用户代理字符串解析为字段。

以下示例获取代理字段中的用户代理字符串,将其解析为用户代理字段,并将用户代理字段添加到名为 user_agent 的新字段中。 它还删除了原始代理字段

filter {
  useragent {
    source => "agent"
    target => "user_agent"
    remove_field => "agent"
  }
}

应用过滤器后,事件将丰富用户代理字段。 例如:

        "user_agent": {
          "os": "Mac OS X 10.12",
          "major": "50",
          "minor": "0",
          "os_minor": "12",
          "os_major": "10",
          "name": "Firefox",
          "os_name": "Mac OS X",
          "device": "Other"
        }

详细阅读文章 “Logstash:Logstash 入门教程 (二)” 以了解更多。文章来源地址https://www.toymoban.com/news/detail-412366.html

到了这里,关于Logstash:通过 lookups 来丰富数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过logstash实现mysql与es的双向数据同步

    参考题目 一种基于MySQL和Elasticsearch的数据同步方法及系统 基于MySQL和Elasticsearch的数据同步方法 一种基于MySQL和Elasticsearch的数据同步系统 基于MySQL和Elasticsearch的数据同步技术 目录 1【理论调研】 方案1:使用Logstash实现数据同步 方案2:使用Canal实现数据同步 方案3:使用Debe

    2024年02月15日
    浏览(32)
  • Google Bard 最速上手,这些要点也许是你想了解的

    昨晚,Google 对标 ChatGPT 的竞品 Bard 开放公众预览。得知消息后我连忙申请加入等待名单,跟预想中不同,Google 时隔一个多小时后便发邮件告知我「该试试 Bard 了」,跟前阵子 Bing AI Chat 的内测资格通过速度相比简直一个天上、一个地下。 和 ChatGPT 以及 Bing AI Chat 一样,Bard 的

    2024年02月09日
    浏览(41)
  • 通过logstash(6.8.6)将es(6.8.6)数据导入clickhouse

    编写logstash数据转换的配置文件 export-csv.yml 需要根据es中数据和导出的原始数据格式对应的clickhouse中字段类型对数据的要求在filter中对数据的处理 启动logstash, -f 指定配置文件不使用logstash默认配置文件路径 ./logstash-6.8.6/bin/logstash -f test.yml clickhouse中创建表, 字段类型需要注

    2024年02月13日
    浏览(42)
  • Excel:通过Lookup函数提取指定文本关键词

    函数公式 :=LOOKUP(9^9,FIND($G 2 : 2: 2 : G 6 , C 2 ) , 6,C2), 6 , C 2 ) , G 2 : 2: 2 : G$6) 公式解释 : lookup第一参数为9^9:代表的是一个极大值的数据,查询位置里面最接近这一个值的数据; lookup第二参数用find函数代替,目的就是查询我们的在对应文本找那个的位置; lookup第三参数

    2024年02月11日
    浏览(51)
  • Notion又出新功能?未来你想做的任何软件,都可以通过 Notion 来构建!# Notion AI...

    Notion 最终将能够「制造任何类型的工具」,或者能够与无数的软件集成。在未来的 5 到 10 年时间,Notion 可能成为世界的前端基础设施,负责搜索、通知和权限,你想做的任何软件,都可以通过 Notion 来构建。 ‍ —— Notion 创始人 Ivan Zhao 什么是 Notion AI ? Notion AI 是一个写作

    2024年02月09日
    浏览(62)
  • Ubuntu桌面图标指南:一文了解如果设置ubuntu 软件图标

    在Ubuntu系统中,我们经常可以看到桌面上的各种应用程序图标。这些图标其实是存放在 /usr/share/applications 目录下的 .desktop 文件。每一个应用程序都对应一个 .desktop 文件,这个文件决定了应用程序在桌面上的显示方式、名称、图标等属性。 1.1.1 .desktop文件的结构 .desktop 文件是

    2024年02月04日
    浏览(49)
  • 通过 SQL 实现海量 GIS 数据的轨迹关联计算,确定不了解下?

    作者:于成铭 | YMatrix 解决方案与架构总监 统计与分析轨迹和地理区域的关联问题,是 GIS 主要的应用类别之一。最早的 GIS 应用以桌面应用程序为主,但随着需处理应用越来越复杂,GIS 的开发框架也在逐年演进。就像复杂的数据操作和应用催生了以数据独立性为主旨的数据

    2024年02月10日
    浏览(35)
  • 关于账本数据库:你想知道的这里都有

    💕前言:十二月份出个openGuass集合专栏,带领大家浅浅的认识一下国产数据库吧💕 1. 什么是账本数据库 区块链大家想必都耳熟能详,比特币、以太坊甚至狗狗币等代币,作为区块链的代名词,不仅牵动着某些人的账户盈亏,甚至影响着市面的显卡、硬盘价格。但是作为数据

    2024年02月03日
    浏览(35)
  • 探索数据结构世界之排序篇章(超级详细,你想看的都有)

    - 文章开头必看 1.!!!本文排序默认都是排 升序 2.排序是否稳定值指指排完序之后相同数的相对位置是否改变 3.代码相关解释我都写在注释中了,方便对照着看 插入排序是一种高效的简单排序算法,它的工作原理是将一个未排序的元素插入到一个已排序的列表中,并保持列

    2024年02月08日
    浏览(46)
  • 如何基于运维事件中心通过 logstash 进行日志关键字监控

    日常运维过程中,很多场景都需要对日志进行监测,以便第一时间发现应用/业务相关异常,这是一种比较常见的监控需求,所以也有很多方法可以实现告警。对于简单的告警可以通过一些传统的监控工具实现,但对于体量和业务是非常复杂的中大型企业来说,在

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包