根据 https://manual.nssurge.com/others/http-api.html
Requests
GET /v1/requests/recent
List recent requests.
##3# 目的:
保存Requests 数据,进一步加工、分析。
想知道规则匹配速度、节点历史latency情况、总流量情况(因为每次Surge重启就刷了前次累计)
etc
每次GET,得到什么周期内的数据?
目前执行一次GET,出来的是一大批JSON格式数据,即 Surge Dashboard里的 “最近请求”
间隔(例如5秒)执行一次,得到的数据,目前看来是 【前次+5秒内的动态 - 丢弃(?)】的数据
Recent的数据, 多久会被丢弃?
有无可能实现:得到实施不重复log?
A:有接口实时吐出数据,就像syslog可以用UDP或TCP方式,实时传输到其他日志系统。
B:GET的方式,加入参数,每次得到最新数据
BTW, 让GPT-4帮忙写的 get recent requests.
<!DOCTYPE html>
<html>
<head>
<title>Surge requests/recent Data</title>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
async function fetchTrafficData() {
const SURGE_API_ENDPOINT = 'http://192.168.1.200:6170/v1/requests/recent'; // Replace with your Surge API endpoint
const API_KEY = '000'; // Replace with your Surge API key
try {
const response = await axios.get(SURGE_API_ENDPOINT, {
headers: { 'X-Key': API_KEY }
});
console.log('Fetched Traffic Data:', response.data);
document.getElementById('data').textContent = JSON.stringify(response.data, null, 2);
} catch (error) {
console.error('Error fetching traffic data from Surge:', error);
document.getElementById('data').textContent = 'Error fetching data';
}
}
document.addEventListener('DOMContentLoaded', function() {
fetchTrafficData();
});
</script>
</head>
<body>
<h1>Surge requests/recents Data</h1>
<pre id="data">Loading...</pre>
</body>
</html>