通过日志易平台搜索各类日志数据,支持安全告警分析、网络设备日志、系统日志等多种场景。
http://10.20.51.16adminMIma@sec2025GET /api/v3/search/sheets/yotta(默认)scripts/logeasy_search.py```bash
python logeasy_search.py "query" --time 1h --limit 100
python logeasy_search.py "appname:sip alarm" --time 12h --limit 50
```
--time (1h/24h/7d/30m), --limit (条数,默认100), --index (默认yotta), --raw (原始JSON)time_range=now-1h,now(相对时间)| top)不受 limit 限制,可统计全量分布data_inspection_failed 500 错误| 日志源 | 查询条件 | 关键字段 | 说明 |
|---|---|---|---|
| -------- | ---------- | ---------- | ------ |
| SIP 态势感知 | appname:sip | sip.attack_ip, sip.suffer_ip, sip.attack_type_name 等 | 安全告警,详见 logeasy-sip skill |
| 飞廉 | logtype:feilian | feilian.content.client_ip, feilian.content.connection_ip | VPN/连接日志 |
| H3C 交换机 | appname:switch tag:h3c_newbase | raw_message(非结构化) | 交换机 syslog |
| 日志易自身 | appname:rizhiyi | remote_addr | 系统日志 |
| 其他网络设备 | appname:switch | raw_message | 各类交换机/路由器 |
# 所有 SIP 告警
python logeasy_search.py "appname:sip alarm" --time 12h --limit 50
# 攻击成功的高危告警
python logeasy_search.py "appname:sip sip.attack_state:1" --time 1h --limit 20
# 所有 H3C 交换机日志
python logeasy_search.py "appname:switch tag:h3c_newbase" --time 12h --limit 100
# 特定告警类型(ARP冲突、风扇异常等)
python logeasy_search.py "appname:switch tag:h3c_newbase ARP_SENDER_IPCONFLICT" --time 12h --limit 20
# 特定设备
python logeasy_search.py "appname:switch tag:h3c_newbase hostname:10.5.1.43" --time 1h --limit 20
# 飞廉连接日志
python logeasy_search.py "logtype:feilian" --time 1h --limit 20
# 特定客户端IP
python logeasy_search.py "logtype:feilian client_ip:10.45.123.44" --time 1h --limit 20
# 关键词搜索(全文匹配)
python logeasy_search.py "关键词" --time 1h --limit 20
# 按主机搜索
python logeasy_search.py "hostname:10.20.51.11" --time 1h --limit 20
# 字段搜索(部分字段支持)
python logeasy_search.py "appname:sip sip.suffer_ip:10.10.185.8" --time 1h --limit 20
聚合查询用于全量统计,不受 100 条限制:
# 按攻击类型分布
search("appname:sip sip.attack_type_name:* | top sip.attack_type_name", time_range="now-12h,now")
# 按主机分布
search("appname:switch tag:h3c_newbase hostname:* | top hostname", time_range="now-12h,now")
# 按日志级别分布
search("appname:switch tag:h3c_newbase %%*/*/* | ...", time_range="now-12h,now")
<priority>Mar 25 11:45:52 2026 设备名 %%模块/级别/事件: 事件详情
ITC-C15-U16-Border-Leaf-1、DMZ-C13-U38-10G-ASW-2ARP(ARP事件)、DEV(设备)、SEC(安全)| 告警关键词 | 严重度 | 说明 |
|---|---|---|
| ------------ | -------- | ------ |
ARP_SENDER_IPCONFLICT | ⚠️ 中 | ARP发送者IP冲突 |
DUPIFIP | ⚠️ 中 | 重复地址检测 |
FAN_DIRECTION_NOT_PREFERRED | ℹ️ 低 | 风扇方向非首选 |
LINK_UPDOWN | ⚠️ 中 | 链路上下行变化 |
CPU_HIGH | 🔴 高 | CPU使用率过高 |
import urllib.request, urllib.parse, json, sys, base64
sys.stdout.reconfigure(encoding='utf-8')
USER = 'admin'
PASS = 'MIma@sec2025'
CRED = base64.b64encode(f'{USER}:{PASS}'.encode()).decode()
HEADERS = {'Authorization': f'Basic {CRED}'}
BASE = 'http://10.20.51.16/api/v3/search/sheets/'
def search(query, time_range='now-1h,now', limit=100):
"""搜索日志"""
url = f'{BASE}?query={urllib.parse.quote(query)}&time_range={urllib.parse.quote(time_range)}&index_name=yotta&limit={limit}'
req = urllib.request.Request(url, headers=HEADERS)
resp = urllib.request.urlopen(req, timeout=60)
return json.loads(resp.read())
def count(query, time_range='now-1h,now'):
"""计数"""
r = search(query, time_range, limit=1)
return r.get('results', {}).get('total_hits', 0)
client_ip:10.x.x.x 这类字段搜索可能返回0条,用关键词搜索代替; 不要用 &&,多行代码写文件再执行alarm 关键字全文匹配feilian.content. 前缀,如 feilian.content.client_ipsip.attack_ip(不是 sip.ip,sip.ip 是探针自身IP)共 1 个版本
暂无安全检测报告