leoxtc/jsm-tui
GitHub: leoxtc/jsm-tui
为 Jira Service Management 告警打造的终端 UI,让值班工程师可以完全通过键盘快速处理告警而无需打开浏览器。
Stars: 0 | Forks: 0
# jsm-tui
一个专为 Jira Service Management 告警设计的终端优先 UI,面向生活在 shell 中的值班工程师。
`jsm-tui` 专为键盘驱动的事件响应而设计:快速刷新、低视觉干扰,且最常用的操作始终只需按下一个键。
## 功能特性
- 以紧凑表格形式列出未解决的告警
- 快速键盘工作流,支持确认、关闭和查看详情
- 可配置间隔的自动刷新
- 针对 确认/关闭 操作的乐观 UI 更新
- 告警详情模态框,包含可点击的 URL 和 runbook 快捷方式
- 专注于 JSM API 故障排查的基于文件的日志记录
列:
- `Prio`
- `Status`
- `Age`
- `Acked By`
- `Message`
## 为什么终端用户喜欢它
- 键盘优先的 UX,极少依赖鼠标
- 简洁、高密度的布局,契合真实的值班工作流
- 快速反馈循环,无需切换上下文到浏览器标签页
- 易于通过 SSH/tmux 在远程主机上运行
## 系统要求
- Python 3.11+
- Jira Service Management Ops API 访问权限
## 快速开始
1. 创建并激活虚拟环境。
2. 安装该软件包。
3. 设置环境变量。
4. 运行应用程序。
```
python -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env
set -a; source .env; set +a
jsm-tui
```
## 操作控制
- `r`: 刷新告警
- `a`: 确认选中的告警
- `c`: 关闭选中的告警
- `v`: 查看选中告警的描述
- `enter` 或双击: 打开选中告警的详情
- `q`: 退出
在详情模态框中:
- `o`: 打开 runbook (如果可用)
- `d`, `esc`, `q`, 或 `v`: 关闭模态框
## 环境变量
- `JSM_CLOUD_ID` (必填)
- `JSM_API_EMAIL` + `JSM_API_TOKEN` (必填,除非使用 bearer token)
- `JSM_BEARER_TOKEN` (可选的替代认证方式)
- `JSM_PAGE_SIZE` (可选,默认 `100`,最大 `500`)
- `JSM_REFRESH_INTERVAL_SECONDS` (可选,默认 `30`)
- `JSM_LOG_LEVEL` (可选,默认 `INFO`)
- `JSM_LOG_FILE` (可选,默认 `logs/jsm-tui.log`)
- `JSM_LOG_HTTP_BODY` (可选,`true/false`,默认 `false`;记录截断后的 API 错误主体)
## 如何查找 `JSM_CLOUD_ID`
使用以下方法之一:
1. 通过 `curl` 从你的 Atlassian 站点获取:
```
curl -s https://.atlassian.net/_edge/tenant_info
```
在 JSON 响应中查找 `cloudId` 值。
2. 从 Atlassian Admin URL 获取:
- 打开 `https://admin.atlassian.com`
- 选择你的组织/站点
- 在许多管理页面中,URL 包含 `/s//...`
- 复制 `/s/` 之后的 UUID 值
## 开发
```
pip install -e .[dev]
ruff check .
mypy
pytest
```
## API 参考
- 告警 REST 文档: https://developer.atlassian.com/cloud/jira/service-desk-ops/rest/v2/api-group-alerts/
- OpenAPI 规范: https://dac-static.atlassian.com/cloud/jira/service-desk-ops/swagger.v3.json?_v=1.0.36
标签:Jira Service Management, JSM, Mutation, On-Call, Python, SSH, TUI, 事故处理, 低延迟, 可视化, 后端运维, 告警管理, 无后门, 终端用户界面, 网络调试, 自动化, 运维工具, 远程管理, 逆向工具, 键盘驱动