logstash:运用logstash对serviceapi数据进行分析(代码片段)

中国社区官方博客 中国社区官方博客     2023-01-09     425

关键词:

我记得在之前的文章 “Logstash:使用 ELK 堆栈进行 API 分析” 运用 Logstash 对一些指标的 API 进行分析。在今天的练习中,我将展示如何使用 Logstash 来对一些日志类的 Service API 进行分析。我们知道在很多的时候,我们可以很快速地运用一些脚本对一些 Service API 进行数据分析。这对于我们快速地分析一些数据进行分析是有帮助的。在数据导入中,我们可以使用 Logstash 所提供的丰富的 filter 来对数据进行清洗,丰富,转换等。

在今天的练习中,我将使用 shodan.io 网站为例:

 Shodan 是一个万物互联的搜索引擎。在上面,我们搜索 china 这个单词的时候,它会显示那些主机中有这个单词的显示。关于 Shodan,我这里就不做更多的介绍。Shodan 实际上也提供一种 Service API 的接口并供我们的客户端进行调用。我们可以在地址来申请一个开发者账号,并得到开发者秘钥。

在下面,我使用一个 Python 的应用程序来获取查询的结果:

shodan_scanner.py

import os
from shodan import Shodan
import time
import requests
import pprint
import sys
import logging

logging.basicConfig(level=logging.INFO,
                    filename='shodan.log',
                    format='%(message)s')

# api_key = os.environ[SHODAN_API_KEY]
api_key = "YOUR DEVELOPER KEY"
api = Shodan(api_key)

search = sys.argv[1]

# Search Shodan
results = api.search(search)

# print(f"Total count: len(results['matches'])")

# Show the results
for result in results['matches']:
    ip_address = result['ip_str']
    domains = result['domains']
    logging.info('"ip_addr":"","domains":""'.format(ip_address, domains))
    time.sleep(1)

为了运行上面的应用,我们必须安装 shodan:

pip3 install shodan

我们可以通过如下的方式来运行:

python3 shodan_scanner.py "china" > shodan.log

在上面,我们搜索 china 这个单词,并把搜索的结果保存到 shodan.log  里。等我们运行完后,我们可以在 shodan.log 文件里查看到如下的这样的日志:

shodan.log

"ip_addr":"46.171.98.231","domains":"['tpnet.pl']"
"ip_addr":"50.212.192.99","domains":"[]"
"ip_addr":"189.68.169.82","domains":"['telesp.net.br']"
"ip_addr":"157.25.97.179","domains":"[]"
"ip_addr":"116.106.51.100","domains":"['viettel.vn']"
"ip_addr":"147.161.68.134","domains":"['adamo.es']"
"ip_addr":"37.252.122.48","domains":"['tilaa.com']"
"ip_addr":"134.73.16.32","domains":"['smbccojp14.com']"
"ip_addr":"177.182.214.4","domains":"['virtua.com.br']"
"ip_addr":"115.72.1.76","domains":"['viettel.vn']"
"ip_addr":"118.70.44.0","domains":"[]"
"ip_addr":"113.165.201.60","domains":"['vnpt.vn']"
"ip_addr":"45.201.208.251","domains":"[]"
"ip_addr":"42.119.67.22","domains":"[]"
"ip_addr":"14.166.150.83","domains":"['vnpt.vn']"
"ip_addr":"181.46.231.207","domains":"['telecentro-reversos.com.ar']"
"ip_addr":"109.50.128.189","domains":"['netcabo.pt']"
"ip_addr":"81.193.147.140","domains":"['telepac.pt']"
"ip_addr":"41.38.136.142","domains":"['tedata.net']"
"ip_addr":"85.187.243.54","domains":"['villagenet-bg.com']"
"ip_addr":"103.217.236.75","domains":"[]"
"ip_addr":"115.79.68.162","domains":"['viettel.vn']"

从上面,我们可以看到,它有一个叫做 ip_addr 这样的 IP 地址。我们可以使用 Logstash 所提供的 geoip 过滤器来丰富这个数据。

logstash.conf

input 
  file 
    path => [ "/Users/liuxg/python/shodan/shodan.log" ]
    start_position => "beginning"
    sincedb_path => "/dev/null"
    codec   => "json"
  


filter 
    geoip 
        source => "ip_addr"
        target => "geo"
    

    if [geo][latitude] and [geo][logitude] 
        mutate 
            add_field => 
                "location" => ["%[geo][latitude],%[geo][logitude]"]
            
        
        mutate 
            convert => 
                "location" => "float"
            
        
    



output  
  stdout 
    codec => rubydebug
    

  elasticsearch 
      hosts => ["http://localhost:9200"]
      index => "shodan"
  

在上面,我们通过 file input 把数据导入。在使用时,你需要使用自己的文件路径来代替上面的 path。在上面,我使用了 geoip 这个过滤器来对数据进行丰富。

在运行上面的 Logstash pipeline 之前,我们在 Kibana 中打入如下的命令:

PUT shodan

  "mappings": 
    "properties": 
      "geo": 
        "properties": 
          "location": 
            "type": "geo_point"
          
        
      
    
  

上面的命令定义了 geo.location 的数据类型。它是一个 geo_point 的数据类型。

我们可以使用如下的命令来运行 Logstash:

sudo ./bin/logstash -f logstash.conf

我们可以在 Logstash 运行的 terminal 中看到如下的输出:

从上面,我们可以看出来,通过 geoip 的使用,我们得到了更多的关于位置的字段。

我们需要为 shaodan 索引创建一个索引模式。我们在 Discover 中可以对这些数据进行查找:

 

由于它也有位置字段,我们也可以使用 Maps 应用来对文档的位置来进行显示:

beats:运用logstash来加工metricbeat数据(代码片段)

在我之前的教程“Logstash:Logstash入门教程(二)”,我详述了如何使用Logstash来处理数据。在那个教程的最后的部分,我也讲述了如何使用Filebeat把数据送到Logstash并对数据进行加工。在今天的教程中,我... 查看详情

logstash:运用jdbc_streaming来丰富我们的数据

需要学习的地方:使用logstash获取数据后,然后根据这些数据再从MySQL数据库中进行匹配,增加一些数据到logstash的数据流中,然后输出到es在IoT物联网时代,我们经常会遇到从传感器采集数据的情况。这些传感器,可以上传物联... 查看详情

logstash:使用logshark来调试logstash及filebeatpipelines(代码片段)

我们知道Logstash及Filebeat在Elasticsearch数据摄入及清理中起到非常大的作用。它们是常用的工具用来对数据进行处理。我们可以运用Logstash丰富的过滤器来处理数据,我们也可以使用Filebeat的processors来处理数据。使用这些工具&#x... 查看详情

logstash:使用logshark来调试logstash及filebeatpipelines(代码片段)

我们知道Logstash及Filebeat在Elasticsearch数据摄入及清理中起到非常大的作用。它们是常用的工具用来对数据进行处理。我们可以运用Logstash丰富的过滤器来处理数据,我们也可以使用Filebeat的processors来处理数据。使用这些工具&#x... 查看详情

logstash5.x安装及简单运用

LogstashrequiresJava8.Java9isnotsupported.1、检测是否安装了java环境[[email protected]~]#java-versionjavaversion"1.8.0_144"Java(TM)SERuntimeEnvironment(build1.8.0_144-b01)JavaHotSpot(TM)64-BitServerVM(build 查看详情

beats:运用filebeat来对微服务api进行分析(代码片段)

在之前的文章“Logstash:使用ELK堆栈进行API分析”,我展示了如何使用Logstash的http_pollerinputplugin来对微服务的API数据进行分析。如果我们只是为了对微服务的数据采集使用Logstash,感觉有些Logstash有些大材小用了,... 查看详情

logstash:运用elasticsearchfilter来丰富地理数据(代码片段)

我们知道丰富数据对于很多的应用来说非常重要。这涉及到访问不同的表格,并进行搜索匹配。找到最为相近的结果并进行丰富数据。针对Elasticsearh来说,我们可以通过enrichprocessor来进行丰富。你可以阅读我之前的文章... 查看详情

logstash:运用elasticsearchfilter来丰富地理数据(代码片段)

我们知道丰富数据对于很多的应用来说非常重要。这涉及到访问不同的表格,并进行搜索匹配。找到最为相近的结果并进行丰富数据。针对Elasticsearh来说,我们可以通过enrichprocessor来进行丰富。你可以阅读我之前的文章... 查看详情

elasticsearch:运用python实时通过logstash写入日志到elasticsearch(代码片段)

...录Python应用日志在今天的文章中,我将分享如何使用Logstash把日志文件发送到Elasticsearch。使用 查看详情

logstash:如何运用elasticstack结合rssfeeds告知可能性(代码片段)

作者:JordynShort,DaveSanchez,ConnieCrites作为Elasticians,我们有机会观察各种Elastic用例。作为前SOC分析师,我们发现自己被安全用例所吸引。我们一直在寻找利用ElasticStack为Elastic和网络安全社区增加价值的方法。... 查看详情

logstash:如何运用elasticstack结合rssfeeds告知可能性(代码片段)

作者:JordynShort,DaveSanchez,ConnieCrites作为Elasticians,我们有机会观察各种Elastic用例。作为前SOC分析师,我们发现自己被安全用例所吸引。我们一直在寻找利用ElasticStack为Elastic和网络安全社区增加价值的方法。... 查看详情

logstash同步mysql数据到elasticsearch(代码片段)

目录1MySql数据到Elasticsearch1.1下载logstash1.2解压logstash1.3在logstash目录创建mysql文件夹1.4将mysql驱动文件和数据库查询文件放进mysql中1.5在config目录下创建mysqltoes.conf文件1.6mysqltoes.conf配置1.7启动logstash2配置语法讲解3启动方式4filebeat基... 查看详情

logstash实践(代码片段)

 Logstash简介一个开源的数据收集引擎,具有实时数据传输能力,可以统一过滤来自不同源的数据,并按照开发者制定的规范输出到目的地。顾名思义,Logstash收集数据对象就是日志文件,由于日志文件来源众多(如,系统日... 查看详情

logstash对配置文件conf敏感信息,密码等加密(代码片段)

logstash的配置文件conf经常会涉及敏感信息,比如ES,mysql的账户密码等,以下使用logstash导入mysql为例子,加密隐藏mysql的密码。在向keystore中添加key及其secret值之后,你可以在配置敏感设置时使用key代替secret值。引用key的语法与环... 查看详情

轻松测试logstash的配置文件(代码片段)

...会极大的降低这种风险。本文将介绍一个可以自动化测试logstash配置文件的工具,让大家可以像写单元测试用例一样为logstash配置文件创建测试case,并以快速迭代的方式变更logstash配置文件。噩梦在很多真实环境中,变更logstash的... 查看详情

logstash:配置例子(代码片段)

...式的日志来做一个说明,希望对大家有所帮助。关于Logstash,我之前有做一个meetup。里面还含有一个完整的例子。你可以在如下的地址进行查看:Logstash:Logstash入门教程(一) Logstash&# 查看详情

logstash:配置例子(代码片段)

...式的日志来做一个说明,希望对大家有所帮助。关于Logstash,我之前有做一个meetup。里面还含有一个完整的例子。你可以在如下的地址进行查看:Logstash:Logstash入门教程(一) Logstash&# 查看详情

elk之logstash学习(代码片段)

Logstash最强大的功能在于丰富的过滤器插件。此过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理。甚至添加独特的事件到后续流程中。1、logstash基本语法组成logstash主要由三部分组成:in... 查看详情