1

我在使用 splunk 和 java splunk SDK 的“地理位置查找脚本(由 MAXMIND 提供支持)”应用程序时遇到了一个奇怪的行为,我想我遗漏了一些东西,但我在 Internet 上找不到任何解决方案。

当我通过本地 splunk 服务器启动搜索时,我会通过以下字段得到正确答案:

  • 客户国家
  • client_lat
  • client_lon

但是当我使用自己的应用程序发送相同的请求时,我没有任何这些字段。

这是我发送的请求:

* | rex field=_raw "(?<ip>\d+\.\d+\.\d+\.\d+)" | lookup geoip clientip as ip

这是我的代码应用程序:

def connectionParameters = [host: 'host', username: 'user' ,password: 'pass']
        Service service = Service.connect(connectionParameters)

        String mySearch = 'search * | rex field=_raw "(?<ip>\d+\.\d+\.\d+\.\d+)" | lookup geoip clientip as ip'
        JobArgs jobargs = new JobArgs();
        jobargs.setExecutionMode(JobArgs.ExecutionMode.BLOCKING);
        Job job = service.getJobs().create(mySearch, jobargs);

        // Specify JSON as the output mode for results
        JobResultsArgs resultsArgs = new JobResultsArgs();
        resultsArgs.setOutputMode(JobResultsArgs.OutputMode.JSON);

        // Display results in JSON using ResultsReaderJson
        InputStream results = job.getResults(resultsArgs);
        ResultsReaderJson resultsReader = new ResultsReaderJson(results);
        def event
        while (event = resultsReader.getNextEvent()) {
            for (String key: event.keySet()) {
                System.out.println("   " + key + ":  " + event.get(key));
            }
        }
        resultsReader.close();

在控制台输出上,我得到这个:

   _sourcetype:  access_combined_wcookie
   index:  main
   host:  127.0.0.1
   _cd:  0:347390
   _serial:  99
   _si:  Snite
main
   splunk_server:  Snite
   linecount:  1
   _indextime:  1371115534
   source:  Sampledata.zip:.\apache2.splunk.com/access_combined.log
   _raw:  10.2.91.40 - - [12/Jun/2013:23:37:44] "GET /flower_store/category.screen?category_id=GIFTS
 HTTP/1.1" 200 10567 "http://mystore.splunk.com/flower_store/cart.do?action=purchase&itemId=EST-26&J
SESSIONID=SD5SL10FF8ADFF3" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070223 Cent
OS/1.5.0.10-0.1.el4.centos Firefox/1.5.0.10" 1347 2752
   _kv:  1
   sourcetype:  access_combined_wcookie
   _bkt:  main~0~4A7411B3-FDE3-4CE1-8118-E7D35D2F6C72
   _time:  2013-06-12T23:37:44.000+02:00

我错过了什么?

斯奈特

4

1 回答 1

0

我找到了阅读本主题的解决方案。

所以这是我最后的要求:

search * | rex field=_raw "(?<clientip>\d+\.\d+\.\d+\.\d+)" | lookup geoip clientip OUTPUT client_lat as lat client_lon as lon | table lat lon

OUTPUT 部分似乎指示提取哪些字段,而表格部分将具体字段放在响应中(仅这些字段)。

这是我的回复(格式化到我的控制器中):

[[lon:2.0, lat:46.0], [lon:2.0, lat:46.0], [lon:2.0, lat:46.0], [lon:2.0, lat:46.0], [lon:-116.6167,
 lat:31.8667], [lon:-116.6167, lat:31.8667], [lon:-116.6167, lat:31.8667], [lon:-116.6167, lat:31.86
67]]
于 2013-07-01T11:20:34.390 回答