splunk pyhton数据接口

匿名 (未验证) 提交于 2019-12-03 00:18:01

1.通过接口,执行查询语句,并将获取到的查询结果存在字典中

import splunklib.client as client import splunklib.results as results  #定义连接信息 HOST="localhost"#splunk服务器地址 PORT=8089#端口 USERNAME="admin"#登录名 PASSWORD="passwd"#密码  #定义查询语句 search_spl="index=test earliest=0 |stats count by visitorid,referer_type,campain |sort 20 -count"  #从splunk中查询数据,并将结果保存在字典中 def get_dict_data(search_spl):     #配置连接     service = client.connect(         host=HOST,         port=PORT,         username=USERNAME,         password=PASSWORD         )     #执行查询语句     rr = results.ResultsReader(service.jobs.export("search "+search_spl))     for result in rr:         if isinstance(result,results.Message):             print '%s: %s' %(result.type,result.message)         elif isinstance(result, dict):             #定义一个字典,将每条数据存入字典中             res_data={}             for key in result.keys():                 res_data[key]=result[key]             print(res_data)     assert rr.is_preview == False   if __name__=='__main__':     get_dict_data(search_spl)

2.在splunk中配置任务计划,通过接口获取任务计划执行后的结果

import time,re import splunklib.client as client import splunklib.results as results  #配置splunk连接信息 HOST = "localhost" PORT =8089 USERNAME = "admin" PASSWORD = "passwd"  #定义splunk中计划任务执行的时间间隔(分钟) cron_gap_min=5  #通过SDK连接到splunk上 service = client.connect(     host=HOST,     port=PORT,     username=USERNAME,     password=PASSWORD,     app="search")  #定义需要查找的任务名 match_string="test"  #获取splunk中所有的任务 jobs = service.jobs #当前程序执行的时间 now_time=int(round(time.time()))  #将数据导出为csv文本 def get_csv_data():     for job in jobs:         #使用正则寻找所有此定时任务产生的任务(活动-任务中能看到的任务)         if re.search(match_string,job.sid):             #splunk中任务执行的时间             run_time=re.findall("\d{10}",job.sid)[0]             run_time=int(run_time)             #通过对时间的比较找到最近一次运行             if now_time-run_time < cron_gap_min*60:                 #等到任务完成                 while not job.is_done():                     time.sleep(1)                 rr = results.ResultsReader(job.results())                 with open('result.csv','w+') as fh:                     for result in rr:                         key=result.keys()                         n=len(key)                         for i in range(n-1):                             fh.write(result[key[i]]+",")                         fh.write(result[key[n-1]]+"\n")     print("任务完成...")  #将数据转化为字典形式 def get_dict_data():     for job in jobs:         #使用正则寻找所有此定时任务产生的任务(活动-任务中能看到的任务)         if re.search(match_string,job.sid):             #splunk中任务执行的时间             run_time=re.findall("\d{10}",job.sid)[0]             run_time=int(run_time)             #通过对时间的比较找到最近一次运行             if now_time-run_time < cron_gap_min*60:                 #等到任务完成                 while not job.is_done():                     time.sleep(1)                 rr = results.ResultsReader(job.results())                 for result in rr:                     #定义一个字典,将每条数据存入字典中                     res_data={}                     for key in result.keys():                         res_data[key]=result[key]                     return res_data     print("任务完成...")  if __name__=='__main__':     data=get_dict_data() 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!