Day 5:任务调度器 —— 建立后台数据输入流与“心跳”机制

0 阅读4分钟

🚀 Day 5:任务调度器 —— 建立后台数据输入流与“心跳”机制 (Data Inputs)

今日目标:理解 Data Input(数据输入)的底层调度原理。我们将顺应 AOB 的强制参数规则配置输入界面,编写 Python 探针代码,并在前端真实启动任务。最终,我们要去 Splunk 的内部日志中,亲眼见证代码被系统定时“唤醒”的运行轨迹。


🧠 极客白话:什么是 Data Input 与“心跳”机制?

对于初学者来说,Data Input 听起来像是一个让你填表单的界面。但在极客眼里,它是 Splunk 插件的**“心脏起搏器”**!

  • 频率 (Interval) = 心率:你在界面上设置的 60 秒间隔,本质上是在给系统设定一个“定时唤醒闹钟”。
  • 执行 (Execution) = 心跳:每隔 60 秒,Splunk 底层调度器(ExecProcessor)就会自动去唤醒并执行一次你的 Python 脚本(collect_events 函数),就像心脏跳动一样。
  • 探针 (Probe) 的意义:在正式拉取大数据之前,我们必须先在脚本里装一个“探针”,确认这个唤醒机制是活着的。

今天,我们要为 AI 引擎注入第一股动力:让它按时睁开眼睛!


🛠️ Step 1:配置前端 UI (化被动为主动)

AOB 有一个硬性系统规定:数据输入模块必须至少保留一个自定义参数,否则无法保存并进入下一步。既然不能删光,我们就把它改造成一个有用的“探针字段”。

  1. 进入 AOB 项目:在 Splunk 首页进入 Splunk Add-on Builder,打开我们的 PEAK-llm-analyzer 项目。
  2. 定位配置页:点击顶部导航栏的 Configure Data Collection
  3. 编辑任务模板:找到 Day 4 创建的 PEAK AI Hunter,点击右侧的 Edit 进入向导。
  4. 改造参数 (Tab 2):切换到 Data Input Parameters 标签页。
    • 点击画布上那个无法删除的“Text Input”。
    • 在右侧属性面板修改:Internal Name 改为 custom_messageDisplay Label 改为 Custom Heartbeat MessageDefault value 改为 Alive
  5. 进入下一关:点击页面右上角的绿色 Next > 按钮。

💻 Step 2:注入“心跳探针”代码 (Define & Test 页面)

此时你进入了代码实验室。右侧的编辑器是我们的主战场。

  1. 清理默认代码:定位到 def collect_events(helper, ew):,删除其下方所有占位符。
  2. 注入探针代码:粘贴以下经过逻辑修正的代码。
    • ⚠️ 极客避坑指南:必须使用 helper.get_arg 而不是 get_param 来读取数据输入的变量,否则代码会静默崩溃!
def collect_events(helper, ew):
    """Implement your data collection logic here"""
    import time
    import datetime
    
    try:
        # 1. Get the current execution time (The moment of heartbeat)
        current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        
        # 2. Get the specific instance name (Stanza)
        stanza_name = helper.get_input_stanza_names()
        
        # 3. Get the target index (Where data will be queried/stored)
        target_index = helper.get_output_index() or "default_test_index"
        
        # 4. Read the custom parameter (MUST use get_arg for Data Inputs!)
        custom_msg = helper.get_arg("custom_message")
        
        # 5. Construct the heartbeat log payload
        log_msg = f"[PEAK AI Hunter Heartbeat] Time: {current_time} | Task: {stanza_name} | Target Index: {target_index} | Custom Msg: {custom_msg} | Status: Scheduler awakened the Python script."
        
        # 6. Write to Splunk's internal logs for verification
        helper.log_info(log_msg)
        
    except Exception as e:
        helper.log_error(f"Heartbeat execution error: {str(e)}")
  1. 防崩测试 (Test):在左侧输入框随便填个词,点击右上角绿色的 Test
    • 极客经验:如果显示绿色的 Done 且没有报错,说明语法正确。此时虽然看不到日志输出(因为写进了底层文件),但代表逻辑已跑通。
  2. 固化代码 (Save)必须点击右上角的 Save 按钮。

🔍 Step 3:在前端创建任务,检索真实的“心跳”

代码只是“图纸”,现在我们要招募一个“实体工人”来正式启动它。

  1. 回到应用:返回 Splunk 首页,进入我们的应用 PEAK-llm-analyzer
  2. 创建输入:点击 Inputs 标签页 -> Create New Input -> PEAK AI Hunter
  3. 填入参数
    • Name: my_first_heartbeat
    • Interval: 60
    • Index: main
    • Custom Heartbeat Message: Engine Started
  4. 保存激活:点击 Add。现在后台调度器已经接管了你的代码。

🎯 Step 4:终极闭环 —— 日志验收

等待一到两分钟。点击顶部的 Search (搜索) 标签页,输入以下极客搜索命令:

index=_internal "[PEAK AI Hunter Heartbeat]"

🎉 成功标志: 你会看到包含 Engine Started 关键词的绿色日志,精准地每隔 60 秒出现一次

恭喜! 你的 AI 引擎心脏已经开始跳动。明天(Day 6),我们将在这个定时醒来的代码中加入 Splunk SDK,让它在每次跳动时去抓取真实的业务日志!