我正在尝试使用Java SDK连接Splunk,但我收到连接拒绝异常。
Map<String, Object> connectionArgs = new HashMap<String, Object>();
connectionArgs.put("host", "mydomain.com");
connectionArgs.put("username", "admin");
connectionArgs.put("password", "passxxx");
connectionArgs.put("port", 8089);
connectionArgs.put("scheme", "https");
Service splunkService = Service.connect(connectionArgs);
当我使用带有上述网址的浏览器时,e,https://mydomain.com我可以使用上述凭据登录,但是通过Java sdk,我无法连接。我调试了代码,在HttpService.java类中,URL被构造为 https://mydomain.com:8089/services/auth/login
我不明白为什么URL会像这样构建。请尽早帮助我解决问题。感谢
答案 0 :(得分:0)
SPLUNK SDK有一些令人讨厌的错误。尝试通过BASH使用CURL从SPLUNK Rest API获取数据。它看起来很复杂,但效果很好。您将加快开发和调试时间。
以下代码段效果很好:
SPLUNK_API="https://splunk.you.de:8089/services/search"
curl -s -k -u user:password $SPLUNK_API/jobs -d output_mode=csv --data-urlencode 'search=search sourcetype="tomcat-access.log" RC>0 | timechart avg(runtime) by xyz ' -d earliest_time=$START_TIME -d latest_time=$END_TIME -d exec_mode=oneshot -o splunk-responsetime.csv
答案 1 :(得分:0)
我不明白为什么URL会像这样构建。
嗯,这是因为splunk.jar中的Service.login(String username, String password)
方法将其设为硬编码:
ResponseMessage response = post("/services/auth/login", args);
如果要更改URL,则应从here下载splunk SDK,更改URL,创建jar并在项目中使用它。
OR
您可以创建自己的类,扩展Service
类,然后覆盖您想要的方法。