You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Splunk API执行搜索查询时遇连接拒绝错误求助

问题:Splunk API调用出现ConnectionRefusedError: [Errno 111] Connection refused

我尝试通过API在Splunk中执行搜索查询,参考官方文档的示例代码,在Jupyter Notebook运行时遇到了连接拒绝的错误。

我的代码如下:

from __future__ import print_function
from future import standard_library
standard_library.install_aliases()
import urllib.request, urllib.parse, urllib.error
import httplib2
from xml.dom import minidom

baseurl = 'https://localhost:8089'
userName = 'username'
password = 'password'
searchQuery = '| inputcsv foo.csv | where sourcetype=access_common | head 5'

# Authenticate with server.
# Disable SSL cert validation. Splunk certs are self-signed.
serverContent = httplib2.Http(disable_ssl_certificate_validation=True).request(baseurl + '/services/auth/login','POST', headers={}, body=urllib.parse.urlencode({'username':userName, 'password':password}))[1]
sessionKey = minidom.parseString(serverContent).getElementsByTagName('sessionKey') [0].childNodes[0].nodeValue

# Remove leading and trailing whitespace from the search
searchQuery = searchQuery.strip()

# If the query doesn't already start with the 'search' operator or another
# generating command (e.g. "| inputcsv"), then prepend "search " to it.
if not (searchQuery.startswith('search') or searchQuery.startswith("|")):
    searchQuery = 'search ' + searchQuery
print(searchQuery)

# Run the search.
# Again, disable SSL cert validation.
print(httplib2.Http(disable_ssl_certificate_validation=True).request(baseurl + '/services/search/jobs','POST', headers={'Authorization': 'Splunk %s' % sessionKey},body=urllib.parse.urlencode({'search': searchQuery}))[1])

错误信息:

ConnectionRefusedError: [Errno 111] Connection refused

恳请各位提供帮助。


解决方案

这个错误核心是你的Jupyter Notebook无法成功连接到Splunk的REST API服务,我给你梳理几个最常见的排查和修复方向:

  • 确认Splunk服务是否正常运行
    先检查你的Splunk实例是否已经启动。如果Splunk在本地机器,可以通过命令行(Linux用systemctl status splunk,Windows打开服务管理器)查看状态;如果在远程服务器,联系运维确认服务状态。没启动的话先启动Splunk再重试。

  • 检查API端口是否正确且未被拦截
    Splunk默认REST API端口是8089,但如果你的Splunk修改过端口配置,那baseurl里的端口就不对了。可以去Splunk安装目录下的etc/system/local/server.conf文件,找到[httpServer]段的sslPort配置确认端口号。另外,如果是跨机器连接,要检查Splunk所在机器的防火墙是否开放了8089端口,避免连接被防火墙阻断。

  • 确认localhost是否匹配Splunk部署位置
    如果你的Splunk不是运行在Jupyter Notebook所在的本地机器上,那baseurl里的localhost就错了,得换成Splunk所在机器的实际IP地址或主机名。比如Splunk部署在192.168.1.100,就把baseurl改成https://192.168.1.100:8089。

  • 测试端口连通性
    在Jupyter所在机器上用telnet localhost 8089或者curl -k https://localhost:8089/services/auth/login命令测试端口是否能连通。如果这些命令也连不上,那基本是网络或Splunk服务的问题,和代码无关;如果能连通,再回头排查代码里的认证参数是否正确。

  • 临时排查SSL配置问题(可选)
    虽然你代码里禁用了SSL证书验证,但极端情况下Splunk的SSL配置异常也可能导致连接失败。可以先尝试关闭Splunk的SSL:修改server.conf里[httpServer]段的enableSplunkWebSSL为false,重启Splunk后,把baseurl改成http://localhost:8080(默认非SSL端口)试试。如果能正常连接,再针对性排查SSL证书或配置的问题。


内容的提问来源于stack exchange,提问作者DIVYA C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 07:27:43