微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Groovy:导出数据 - 如何设置从现在到过去某个时间点的 unix 开始时间?

如何解决Groovy:导出数据 - 如何设置从现在到过去某个时间点的 unix 开始时间?

我目前正在从 Grafana 导出数据。我使用一个看起来像这样的脚本来做到这一点:

JsonSlurper slurper = new JsonSlurper()

println "Collect list of servers:"

def result = slurper.parse(new URL('http://xyz'))

def servers = [:].withDefault { [] }
result.data.each{ it -> 
    servers[it.server] = "${it.server};${it.app};${it.team}" 
}
servers.sort().each { k,v -> println v}


println "Collect data for servers:"



Date currentDate = new Date();
Date fromDate = currentDate - 30
long unixTimeNow = currentDate.getTime() / 1000
long unixFromDate = fromDate.getTime() / 1000
long stepSec = 7200

boolean header = true
servers.sort().each{ server,label ->

 File resultFile = new File("C:\\Users\\GrafanaExport${server}.csv")
 if(resultFile.exists()) {
        resultFile.delete()
    }
    
    def queries = [
        ['node_load1',"http://abc{server}.start${unixFromDate}&end=${unixTimeNow}&step=${stepSec}"],]
    
    def resultTable = [:].withDefault { [";",";",";"] }
    queries.eachWithIndex { q,i ->
        println(q)
        result = slurper.parse(new URL(q[1]))
        result?.data?.result[0]?.values?.each{ it ->
            resultTable[it[0]][i] = it[1] + ";"
        }
    }

    if(header) {
        resultFile << "timestamp;" + queries.collect{it[0]}.join(';') + '\n'
        header = false
    }
    resultFile << label + '\n'
    resultTable.sort().each { k,v -> 
        resultFile << "${k};${v.join('')}\n"
    }
}

这很好用,但我想要得到的不是从现在到前一段时间的数据,而是从某个时间戳到前一段时间的数据。因为以前我已经导出了数据,我想为数据获取相同的日期/时间戳。先前导出的数据带有此时间戳(示例时间戳的片段):

enter image description here

这意味着数据每两小时导出一次(因为这是一个 7200 秒的步骤),并且每隔一小时在每个完整和 unix 时间导出一次。我现在想知道我需要如何修改我的代码才能获得与以前相同时间戳的数据?

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。