无法连接 Java 与 splunk 云
Unable to connect Java with splunk cloud
我想将我的 java 程序连接到 Splunk Cloud 并将日志发送到那里。
我尝试连接 Splunk Enterprise(安装在我的本地计算机上)。在这种情况下,它已成功连接,我也可以在那里看到日志。
我不知道为什么我无法将我的 java 程序连接到 Splunk Cloud。
我的代码是这样的。
Map<String, Object> connectArgs= new HashMap<String, Object>();
HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2);
connectArgs.put("host", "xxx.splunkcloud.com"); //this is the part of the url what I found in the url of my splunk cloud account.
connectArgs.put("username", "un");
connectArgs.put("password", "pswd");
connectArgs.put("scheme", "https"); // I tried http also here
connectArgs.put("port", 8089); // I tried 8088 too nothing works
Service splunkService= Service.connect(connectArgs);
Args logArgs= new Args();
logArgs.put("sourcetype", "helloWorldSplunk");
Receiver receiver= splunkService.getReceiver();
receiver.log("main", logArgs, "Hello from java SDE program to Splunk");
System.out.println("END");
执行上述代码时出现的错误=>
Exception in thread "main" java.lang.RuntimeException: Connection timed out: connect
at com.splunk.HttpService.send
此外我还有一个问题:
如何将我的 JavaEE 应用程序连接到 Splunk?我和上面的程序一样吗?或者不同的东西。
这可能是由于您网络中的防火墙问题,或者您可能 运行 在公司代理后面。你能确定你已经验证了吗?
就将您的日志传送到 splunk 实例而言,您需要将日志转发工具(如通用转发器)安装在与您的应用程序相同的环境中,以将应用程序日志转发到远程 splunk 服务器。
此外,作为最佳实践,请将日志转发与您的应用程序分离。您的应用程序应该只将日志写入文件系统。日志处理器或转发器应将其发送到远程服务器以供摄取。原因是,您以后可能会改变主意使用 logstash 或 datadog,在这种情况下,如果您不必接触您的应用程序。
如果您尝试发送到 Splunk 的 HTTP 事件收集器(根据对端口 8088 的引用推测),那么您将需要正确的 URL。确切的 URL 取决于您使用的是免费还是付费 Splunk Cloud 帐户以及该帐户的托管位置(AWS 或 Google)。
The standard form for the HEC URI in Splunk Cloud Platform free trials is as follows:
<protocol>://inputs.<host>:<port>/<endpoint>
The standard form for the HEC URI in Splunk Cloud Platform is as follows:
<protocol>://http-inputs-<host>:<port>/<endpoint>
The standard form for the HEC URI in Splunk Cloud Platform on Google Cloud is as follows:
<protocol>://http-inputs.<host>:<port>/<endpoint>
Where:
<protocol> is either http or https
You must add http-inputs- before the <host>
<host> is the Splunk Cloud Platform instance that runs HEC
<port> is the HEC port number
8088 on Splunk Cloud Platform free trials
443 by default on Splunk Cloud Platform instances
我想将我的 java 程序连接到 Splunk Cloud 并将日志发送到那里。
我尝试连接 Splunk Enterprise(安装在我的本地计算机上)。在这种情况下,它已成功连接,我也可以在那里看到日志。
我不知道为什么我无法将我的 java 程序连接到 Splunk Cloud。
我的代码是这样的。
Map<String, Object> connectArgs= new HashMap<String, Object>();
HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2);
connectArgs.put("host", "xxx.splunkcloud.com"); //this is the part of the url what I found in the url of my splunk cloud account.
connectArgs.put("username", "un");
connectArgs.put("password", "pswd");
connectArgs.put("scheme", "https"); // I tried http also here
connectArgs.put("port", 8089); // I tried 8088 too nothing works
Service splunkService= Service.connect(connectArgs);
Args logArgs= new Args();
logArgs.put("sourcetype", "helloWorldSplunk");
Receiver receiver= splunkService.getReceiver();
receiver.log("main", logArgs, "Hello from java SDE program to Splunk");
System.out.println("END");
执行上述代码时出现的错误=>
Exception in thread "main" java.lang.RuntimeException: Connection timed out: connect
at com.splunk.HttpService.send
此外我还有一个问题:
如何将我的 JavaEE 应用程序连接到 Splunk?我和上面的程序一样吗?或者不同的东西。
这可能是由于您网络中的防火墙问题,或者您可能 运行 在公司代理后面。你能确定你已经验证了吗?
就将您的日志传送到 splunk 实例而言,您需要将日志转发工具(如通用转发器)安装在与您的应用程序相同的环境中,以将应用程序日志转发到远程 splunk 服务器。
此外,作为最佳实践,请将日志转发与您的应用程序分离。您的应用程序应该只将日志写入文件系统。日志处理器或转发器应将其发送到远程服务器以供摄取。原因是,您以后可能会改变主意使用 logstash 或 datadog,在这种情况下,如果您不必接触您的应用程序。
如果您尝试发送到 Splunk 的 HTTP 事件收集器(根据对端口 8088 的引用推测),那么您将需要正确的 URL。确切的 URL 取决于您使用的是免费还是付费 Splunk Cloud 帐户以及该帐户的托管位置(AWS 或 Google)。
The standard form for the HEC URI in Splunk Cloud Platform free trials is as follows:
<protocol>://inputs.<host>:<port>/<endpoint>
The standard form for the HEC URI in Splunk Cloud Platform is as follows:
<protocol>://http-inputs-<host>:<port>/<endpoint>
The standard form for the HEC URI in Splunk Cloud Platform on Google Cloud is as follows:
<protocol>://http-inputs.<host>:<port>/<endpoint>
Where:
<protocol> is either http or https
You must add http-inputs- before the <host>
<host> is the Splunk Cloud Platform instance that runs HEC
<port> is the HEC port number
8088 on Splunk Cloud Platform free trials
443 by default on Splunk Cloud Platform instances