merge node-clickhouse-sql to alertman

This commit is contained in:
akvlad
2021-12-09 09:11:20 +02:00
parent 0c5340002e
commit 2c57f17114
5 changed files with 25 additions and 7 deletions

View File

@ -53,7 +53,7 @@ this.scanClickhouse = DATABASE.scanClickhouse;
const fastify = require('fastify')({
logger: false,
bodyLimit: parseInt(process.env.FASTIFY_BODYLIMIT) || 5242880,
requestTimeout: parseInt(process.env.FASTIFY_REQUESTTIMEOUT) || 0,
requestTimeout: parseInt(process.env.FASTIFY_REQUESTTIMEOUT) || 0,
maxRequestsPerSocket: parseInt(process.env.FASTIFY_MAXREQUESTS) || 0
})

View File

@ -80,7 +80,7 @@ class AlertWatcher {
async _createViews () {
/**
*
* @type {{query: registry_types.Request, stream: (function(DataStream): DataStream)[]}}
* @type {{query: Select, stream: (function(DataStream): DataStream)[]}}
*/
const query = transpiler.transpileTail({
query: this.request,
@ -88,7 +88,7 @@ class AlertWatcher {
rawRequest: true,
suppressTime: true
})
query.query.order_by = undefined
query.query.order_expressions = []
return createAlertViews(this.name, query.query)
}

View File

@ -34,6 +34,7 @@ const storagePolicy = process.env.STORAGE_POLICY || false
const { StringStream, DataStream } = require('scramjet')
const { parseLabels, hashLabels } = require('../../common')
const Sql = require('clickhouse-sql')
const capabilities = {}
let state = 'INITIALIZING'
@ -1014,13 +1015,18 @@ module.exports.dropAlertViews = async (name) => {
/**
*
* @param name {string}
* @param request {registry_types.Request}
* @param request {Select}
* @returns {Promise<void>}
*/
module.exports.createAlertViews = async (name, request) => {
const fp = UTILS.fingerPrint('alert_rule' + name)
request.select.push(`coalesce((SELECT max(mark) FROM ${DATABASE_NAME()}._alert_view_${fp}_mark), 0) as mark`)
const strRequest = transpiler.requestToStr(request)
request.select(
[
new Sql.Raw(`coalesce((SELECT max(mark) FROM ${DATABASE_NAME()}._alert_view_${fp}_mark), 0)`),
'mark'
]
)
const strRequest = request.toString()
await axios.post(getClickhouseUrl(),
`CREATE TABLE IF NOT EXISTS ${DATABASE_NAME()}._alert_view_${fp}_mark (id UInt8 default 0,mark UInt64) ` +
'ENGINE ReplacingMergeTree(mark) ORDER BY id')

12
package-lock.json generated
View File

@ -3390,6 +3390,12 @@
"statuses": ">= 1.4.0 < 2"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
@ -3402,6 +3408,12 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",

View File

@ -155,7 +155,7 @@ module.exports.transpileTail = (request) => {
query.orderBy(['timestamp_ms', 'asc'])
query.limit(undefined, undefined)
return {
query: query.toString(),
query: request.rawRequest ? query : query.toString(),
stream: getStream(query)
}
}