Files
hudi-service/service-web/src/main/resources/static/common/info.js

132 lines
3.7 KiB
JavaScript

function commonInfo() {
return {
// baseUrl: 'http://132.126.207.131:35690/hudi_services/service_web',
baseUrl: '/hudi_services/service_web',
loki: {
grafanaUrl: 'http://132.126.207.125:35700',
hudi: {
datasource: 'f648174e-7593-45cf-8fe8-8f8d5cf0fdde',
},
service: {
datasource: 'b6fee51c-facd-4261-a0eb-8c69a975fba3',
}
},
}
}
/**
* Queries
* {datasource, queryMap}
*/
function generateLokiPanel(queries) {
return {
LWF: {
queries: [
...queries.map(item => {
let name = item['name']
let datasource = item['datasource']
let queryMap = item['queryMap']
let query = Object.keys(queryMap)
.sort()
.map(key => `${key}="${queryMap[key]}"`)
let match = "\\d{4}-(?P<time>\\d{2}-\\d{2}\\s*\\d{2}:\\d{2}:\\d{2}).+#@#\\s*(?P<content>[\\w\\W]+)"
let format = "{{.time}} [{{.host}}] [{{.level}}] [{{.app}}] {{.content}}"
// language=TEXT
let expression = `{${query.join(",")}}\n| regexp "${match.replaceAll('\\', '\\\\')}"\n| line_format \`${format}\``
return {
refId: name,
expr: expression,
queryType: "range",
datasource: {
type: "loki",
uid: datasource
},
editorMode: "code"
}
})
],
range: {
from: "now-1h",
to: "now"
}
}
}
}
function generateQuery(name, datasource, queryMap) {
return {
name: name,
datasource: datasource,
queryMap: queryMap,
}
}
function generateLokiUrl(baseUrl, queries) {
return `${baseUrl}/explore?panes=${encodeURIComponent(JSON.stringify(generateLokiPanel(queries)))}&schemaVersion=1&orgId=1`
}
function targetHudiSyncLokiUrlByAlias(flinkJobId) {
return generateLokiUrl(
commonInfo().loki.grafanaUrl,
[
generateQuery(
"Hudi 运行日志",
commonInfo().loki.hudi.datasource,
{"flink_job_id": flinkJobId}
)
]
)
}
function targetHudiCompactionLokiUrlByAlias(alias) {
return generateLokiUrl(
commonInfo().loki.grafanaUrl,
[
generateQuery(
"Hudi 运行日志",
commonInfo().loki.hudi.datasource,
{"alias": alias}
)
]
)
}
function targetYarnApplicationLokiUrlByAppId(applicationId) {
return generateLokiUrl(
commonInfo().loki.grafanaUrl,
[
generateQuery(
"Hudi 运行日志",
commonInfo().loki.hudi.datasource,
{"app_id": applicationId}
)
]
)
}
function serviceLogByAppName(name) {
return generateLokiUrl(
commonInfo().loki.grafanaUrl,
[
generateQuery(
"Service 运行日志",
commonInfo().loki.service.datasource,
{"app": name}
)
]
)
}
function serviceLogByAppNameAndHost(name, host) {
return generateLokiUrl(
commonInfo().loki.grafanaUrl,
[
generateQuery(
"Service 运行日志",
commonInfo().loki.service.datasource,
{"app": name, "host": host}
)
]
)
}