You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.1 KiB
64 lines
2.1 KiB
package console
|
|
|
|
import (
|
|
"time"
|
|
|
|
"yunyan/pb"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 「统计日志」面板查询接口:读 console 从 NATS 收到的埋点接收流水(statlog:recv:<day>)。
|
|
// 数据在 console 自己的 Redis,与选中应用无关,故走全局、不读 X-App-Id(在 handleWeb 中先于设备域分派)。
|
|
|
|
// getStatLogs 返回某接收日的接收流水(最新在前),可按 level 过滤。day 缺省取当天。
|
|
func (this *serverComp) getStatLogs(c *gin.Context) {
|
|
var req struct {
|
|
Day uint32 `json:"day"` // 接收日 YYYYMMDD,缺省=当天
|
|
Level string `json:"level"` // info/warn/error,空=不过滤
|
|
Limit int `json:"limit"` // 返回上限,缺省取配置 RecvLogCap
|
|
}
|
|
_ = c.ShouldBindJSON(&req)
|
|
day := req.Day
|
|
if day == 0 {
|
|
day = statDayNumber(time.Now())
|
|
}
|
|
limit := req.Limit
|
|
if limit <= 0 {
|
|
limit = this.options.Stat.RecvLogCap
|
|
}
|
|
entries, total, err := readRecvLogs(day, req.Level, limit)
|
|
if err != nil {
|
|
writeErr(c, pb.ErrorCode_DBError, err.Error())
|
|
return
|
|
}
|
|
// 记录里已带应用名(App)、是否已注册(Registered)与是否落库(Level),均在接收时按当时注册表标注,无需读时再查库。
|
|
writeOK(c, gin.H{
|
|
"day": day, // 实际查询的接收日
|
|
"total": total, // 该日 Redis 中保留的总条数(未过滤)
|
|
"count": len(entries), // 本次返回条数(过滤后)
|
|
"entries": entries, // 最新在前
|
|
})
|
|
}
|
|
|
|
// clearStatLogs 清空某接收日的「统计日志」接收流水(仅清 console 自己 Redis 里的核对流水,
|
|
// 不动统计累加分区 / stats_global_day)。用于现场核对:清掉旧记录后重新观察埋点是否正常进来。
|
|
func (this *serverComp) clearStatLogs(c *gin.Context) {
|
|
var req struct {
|
|
Day uint32 `json:"day"` // 接收日 YYYYMMDD,缺省=当天
|
|
}
|
|
_ = c.ShouldBindJSON(&req)
|
|
day := req.Day
|
|
if day == 0 {
|
|
day = statDayNumber(time.Now())
|
|
}
|
|
n, err := delRecvLogs(day)
|
|
if err != nil {
|
|
writeErr(c, pb.ErrorCode_DBError, err.Error())
|
|
return
|
|
}
|
|
writeOK(c, gin.H{
|
|
"day": day, // 实际清理的接收日
|
|
"cleared": n, // 被清条数
|
|
})
|
|
}
|
|
|