news 2026/7/5 16:00:48

sysSentry插件生态建设:如何开发Python、C、Shell多语言巡检模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sysSentry插件生态建设:如何开发Python、C、Shell多语言巡检模块

sysSentry插件生态建设:如何开发Python、C、Shell多语言巡检模块

【免费下载链接】sysSentrysysSentry is a system inspection framework used to manage system inspection tasks.项目地址: https://gitcode.com/openeuler/sysSentry

前往项目官网免费下载:https://ar.openeuler.org/ar/

sysSentry是openEuler社区推出的系统巡检框架,支持Python、C、Shell等多语言插件开发,帮助开发者快速构建自定义系统巡检模块。本文将详细介绍插件开发全流程,从环境准备到功能实现,助你轻松上手多语言巡检插件开发。

插件开发环境准备

基础环境配置

开发sysSentry插件前需准备以下环境:

  • openEuler操作系统
  • 开发工具链(Python 3.7+、GCC、Shell)
  • sysSentry核心依赖包
# 安装基础依赖 yum install -y pysentry_notify libxalarm libxalarm-devel

项目结构解析

sysSentry插件采用模块化设计,典型目录结构如下:

src/sentryPlugins/ ├── ai_block_io/ # Python巡检插件示例 ├── bmc_ras_sentry/ # C语言插件示例 ├── sentry_msg_monitor/ # Shell插件示例 └── __init__.py

插件配置文件存放于config/plugins/目录,任务定义文件位于config/tasks/目录,如ai_block_io.ini和ai_block_io.mod。

sysSentry插件生态架构图,展示多语言插件与核心框架的交互关系

插件配置文件编写

配置文件基础格式

所有插件需在/etc/sysSentry/tasks/目录下创建.mod配置文件,格式示例:

[common] enabled=yes # 是否启用插件 task_start=/usr/bin/ai_block_io # 启动命令 task_stop=pkill -f ai_block_io # 停止命令 type=period # 任务类型(oneshot/period) interval=10 # 周期执行间隔(秒) onstart=yes # 是否随服务自动启动

关键配置项说明

配置项必选说明
enabled"yes"启用插件,"no"禁用插件
type"oneshot"一次性任务,"period"周期性任务
task_start插件启动命令路径
task_stop插件停止命令,支持$pid占位符
interval周期任务执行间隔(秒),默认3秒

Python插件开发详解

开发模板与示例

Python插件推荐使用类封装结构,以下是AI块设备IO检测插件的核心实现:

# src/sentryPlugins/ai_block_io/ai_block_io.py class SlowIODetection: def __init__(self, config_parser): self._config_parser = config_parser self.__init_detector() # 初始化检测逻辑 def launch(self): while True: io_data = get_io_data_from_collect_plug() # 获取IO数据 slow_events = self.detect_slow_io(io_data) # 检测慢IO事件 for event in slow_events: Xalarm.major(event) # 上报告警 time.sleep(self._config_parser.period_time)

告警上报实现

使用xalarm_report接口上报告警:

from xalarm.sentry_notify import xalarm_report, MAJOR_ALM, ALARM_TYPE_OCCUR ALARM_ID = 1002 # 慢IO告警ID alarm_msg = { "alarm_source": "ai_block_io", "driver_name": "sda", "io_type": "write", "reason": "high_press" } xalarm_report(ALARM_ID, MAJOR_ALM, ALARM_TYPE_OCCUR, str(alarm_msg))

结果上报接口

通过report_result接口返回巡检结果:

from syssentry.result import ResultLevel, report_result # 上报成功结果 report_result("ai_block_io", ResultLevel.PASS, '{"status": "normal"}') # 上报告警结果 report_result("ai_block_io", ResultLevel.MAJOR_ALM, '{"error": "slow_io_detected"}')

C语言插件开发指南

开发环境配置

安装C语言开发依赖:

yum install -y libxalarm libxalarm-devel

告警上报示例

C语言插件使用xalarm_Report接口上报告警:

#include <xalarm/register_xalarm.h> int main() { char *msg = "{\"alarm_source\":\"bmc_ras_sentry\",\"reason\":\"hardware_error\"}"; int ret = xalarm_Report(1015, MAJOR_ALM, ALARM_TYPE_OCCUR, msg); if (ret == -1) { printf("Alarm report failed\n"); } return 0; }

编译命令:gcc bmc_ras_sentry.c -o bmc_ras_sentry -lxalarm

结果上报实现

使用report_result接口上报巡检结果:

#include <xalarm/register_xalarm.h> int main() { enum RESULT_LEVEL level = RESULT_LEVEL_PASS; const char *details = "{\"status\":\"normal\"}"; int ret = report_result("bmc_ras_sentry", level, details); return ret; }

Shell插件快速开发

简单Shell插件示例

Shell插件通过标准输出和退出码与框架交互:

#!/bin/bash # src/sentryPlugins/sentry_msg_monitor/sentry_msg_monitor.sh # 执行巡检逻辑 check_bmc_logs() { # 检查BMC日志 if grep -q "ERROR" /var/log/bmc.log; then return 1 # 发现错误 fi return 0 } # 主逻辑 check_bmc_logs result=$? # 上报结果 if [ $result -eq 0 ]; then echo '{"result": "PASS"}' exit 0 else echo '{"result": "MAJOR_ALM", "error": "bmc_error_detected"}' exit 1 fi

配置文件示例

Shell插件的.mod配置文件:

[common] enabled=yes task_start=/etc/sysSentry/plugins/sentry_msg_monitor.sh task_stop=pkill -f sentry_msg_monitor.sh type=period interval=30

插件调试与测试

加载插件命令

使用sentryctl工具管理插件:

# 加载插件 sentryctl load ai_block_io # 查看插件状态 sentryctl list # 获取告警信息 sentryctl get_alarm ai_block_io

使用sentryctl加载CPU巡检插件的操作界面

常见错误排查

  1. 配置文件错误:检查.mod文件格式,确保必选字段存在

    # 验证配置文件 cat /etc/sysSentry/tasks/ai_block_io.mod
  2. 权限问题:确保插件可执行且具有必要权限

    chmod +x /usr/bin/ai_block_io
  3. 参数错误:查看日志确认参数是否正确

    tail -f /var/log/sysSentry/ai_block_io.log

插件参数错误时的日志输出示例

插件发布与贡献

代码规范

  • Python代码遵循PEP 8规范
  • C代码遵循GNU编码标准
  • Shell脚本使用shellcheck检查语法

贡献流程

  1. Fork项目仓库:git clone https://gitcode.com/openeuler/sysSentry
  2. 创建特性分支:git checkout -b feature/your_plugin
  3. 提交代码:git commit -m "Add your plugin description"
  4. 提交PR到主仓库

总结与最佳实践

开发sysSentry插件的核心要点:

  1. 多语言支持:根据场景选择合适语言,Python适合数据分析,C适合高性能检测,Shell适合简单脚本
  2. 配置规范:严格遵循.mod配置文件格式,确保框架正确识别
  3. 接口使用:正确调用告警和结果上报接口,确保监控数据有效传递
  4. 日志规范:将日志输出到/var/log/sysSentry/目录,格式统一为<时间戳> - <级别> - <消息>

通过本文介绍的方法,你可以快速开发出符合sysSentry规范的多语言巡检插件,丰富系统监控能力。更多开发细节请参考开发者指南。

【免费下载链接】sysSentrysysSentry is a system inspection framework used to manage system inspection tasks.项目地址: https://gitcode.com/openeuler/sysSentry

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 16:00:21

cci-job-client实战教程:从零开始搭建自动化测试工作流

cci-job-client实战教程&#xff1a;从零开始搭建自动化测试工作流 【免费下载链接】cci-job-client A LKP jobs client for Compass-ci: submit LKP jobs and get the status of the LKP jobs 项目地址: https://gitcode.com/openeuler/cci-job-client 前往项目官网免费…

作者头像 李华
网站建设 2026/7/3 13:32:34

神经元结构图怎么画:带标注的神经细胞图画法

神经元结构图怎么画&#xff1a;带标注的神经细胞图画法 神经元结构图看着简单&#xff0c;真要标注起来却容易出错。形状大家都熟悉&#xff0c;但每个部分都有专门的名称&#xff0c;信号只朝一个方向传导&#xff0c;而且运动神经元、感觉神经元和中间神经元的画法各不相同…

作者头像 李华
网站建设 2026/7/3 22:09:38

2026免费去水印工具推荐!电脑手机在线工具优缺点对比

日常刷短视频、保存精美图片时&#xff0c;自带的水印往往会影响素材观感&#xff0c;很多个人用户都在寻找安全无广告、免费好用的图片视频去水印工具。2026年市面上的去水印工具品类繁杂&#xff0c;涵盖微信小程序、手机APP、电脑客户端、在线网页四大类型&#xff0c;不同工…

作者头像 李华
网站建设 2026/7/3 11:42:52

Memlink与libvirt集成实战:监听虚拟机事件实现动态内存管理

Memlink与libvirt集成实战&#xff1a;监听虚拟机事件实现动态内存管理 【免费下载链接】memlinkd A system enables the host to detect and reclaim idle memory inside guests, overcoming virtualization isolation to improve memory utilization. 项目地址: https://gi…

作者头像 李华