Update to latest Loki API (#15)

* Update to latest Loki API

* Extend new label value API

* placeholder for series query

* resync

* adjust fields

* change response type

* change response type

* resync

* working new api
This commit is contained in:
Lorenzo Mangani
2020-10-13 19:26:46 +02:00
committed by GitHub
parent 07621d296e
commit a99595bc29
8 changed files with 211 additions and 113 deletions

View File

@ -1,5 +1,5 @@
# cLoki
FROM node:8
FROM node:10
# BUILD FORCE
ENV BUILD 703024

View File

@ -16,7 +16,7 @@ var UTILS = require('./lib/utils');
/* ProtoBuf Helper */
var fs = require('fs');
var protoBuff = require("protocol-buffers");
var messages = protoBuff(fs.readFileSync('lib/loki.proto'))
var messages = protoBuff(fs.readFileSync('lib/loki.proto'));
/* Fingerprinting */
var fingerPrint = UTILS.fingerPrint;
@ -71,6 +71,7 @@ function validate (username, password, req, reply, done) {
fastify.addContentTypeParser('application/x-protobuf', function (req, done) {
var data = ''
req.on('data', chunk => { data += chunk })
req.on('error', (error) => { console.log(error) })
req.on('end', () => {
done(messages.PushRequest.decode(data))
})
@ -99,8 +100,8 @@ fastify.get('/hello', (request, reply) => {
}
*/
fastify.post('/api/prom/push', (req, res) => {
if (debug) console.log('POST /api/prom/push');
fastify.post('/loki/api/v1/push', (req, res) => {
if (debug) console.log('POST /loki/api/v1/push');
if (debug) console.log('QUERY: ', req.query);
if (debug) console.log('BODY: ', req.body);
if (!req.body) {
@ -126,7 +127,7 @@ fastify.post('/api/prom/push', (req, res) => {
if (debug) console.log('LABELS FINGERPRINT',stream.labels,finger);
labels.add(finger,stream.labels);
// Store Fingerprint
bulk_labels.add(finger,[new Date().toISOString().split('T')[0], finger, JSON.stringify(JSON_labels), JSON_labels['__name__']||'' ]);
bulk_labels.add(finger,[new Date().toISOString().split('T')[0], finger, JSON.stringify(JSON_labels), JSON_labels['name']||'' ]);
for(var key in JSON_labels) {
if (debug) console.log('Storing label',key, JSON_labels[key]);
labels.add('_LABELS_',key); labels.add(key, JSON_labels[key]);
@ -159,8 +160,8 @@ fastify.post('/api/prom/push', (req, res) => {
regexp: a regex to filter the returned results, will eventually be rolled into the query language
*/
fastify.get('/api/prom/query', (req, res) => {
if (debug) console.log('GET /api/prom/query');
fastify.get('/loki/api/v1/query_range', (req, res) => {
if (debug) console.log('GET /loki/api/v1/query_range');
if (debug) console.log('QUERY: ', req.query );
// console.log( req.urlData().query.replace('query=',' ') );
var params = req.query;
@ -192,8 +193,25 @@ fastify.get('/api/prom/query', (req, res) => {
}
*/
fastify.get('/api/prom/label', (req, res) => {
if (debug) console.log('GET /api/prom/label');
/* Label Value Handler via query (test) */
fastify.get('/loki/api/v1/query', (req, res) => {
if (debug) console.log('GET /loki/api/v1/query');
if (debug) console.log('QUERY: ', req.query );
var query = req.query.query.replace(/\!?=/g,':');
// console.log( req.urlData().query.replace('query=',' ') );
var all_values = labels.get(query.name);
if (!all_values || all_values.length == 0) {
var resp = {"status":"success","data":{"resultType":"streams","result":[]}};
} else {
var resp = { "values": all_values };
}
if (debug) console.log('LABEL',query.name,'VALUES', all_values);
res.send(resp);
});
fastify.get('/loki/api/v1/label', (req, res) => {
if (debug) console.log('GET /loki/api/v1/label');
if (debug) console.log('QUERY: ', req.query);
var all_labels = labels.get('_LABELS_');
var resp = { "values": all_labels };
@ -214,7 +232,7 @@ fastify.get('/api/prom/label', (req, res) => {
}
*/
fastify.get('/api/prom/label/:name/values', (req, res) => {
fastify.get('/loki/api/v1/label/:name/values', (req, res) => {
if (debug) console.log('GET /api/prom/label/'+req.params.name+'/values');
if (debug) console.log('QUERY LABEL: ', req.params.name);
var all_values = labels.get(req.params.name);
@ -222,6 +240,14 @@ fastify.get('/api/prom/label/:name/values', (req, res) => {
res.send(resp);
});
/* Series Placeholder - we do not track this as of yet */
fastify.get('/loki/api/v1/series', (req, res) => {
if (debug) console.log('GET /api/v1/series/'+req.params.name+'/values');
if (debug) console.log('QUERY SERIES: ', req.params);
var resp = { "status": "success", "data": []};
res.send(resp);
});
// Run API Service
fastify.listen(process.env.PORT || 3100, process.env.HOST || '0.0.0.0', (err, address) => {
if (err) throw err

View File

@ -101,19 +101,19 @@ services:
- CLICKHOUSE_SERVER=clickhouse-seed
# - CLOKI_LOGIN=logger
# - CLOKI_PASSWORD=password
# - DEBUG=true
- DEBUG=true
depends_on:
- clickhouse-seed
labels:
org.label-schema.group: "monitoring"
promtail:
container_name: promtail
image: grafana/promtail:master
volumes:
- ./loki/promtail-docker-config.yaml:/etc/promtail/promtail-docker-config.yaml
- /var/log:/var/log
command: "-config.file=/etc/promtail/promtail-docker-config.yaml"
# promtail:
# container_name: promtail
# image: grafana/promtail:master
# volumes:
# - ./loki/promtail-docker-config.yaml:/etc/promtail/promtail-docker-config.yaml
# - /var/log/syslog:/var/log/syslog
# command: "-config.file=/etc/promtail/promtail-docker-config.yaml"
caddy:
image: stefanprodan/caddy

View File

@ -16,4 +16,4 @@ scrape_configs:
- localhost
labels:
job: varlogs
__path__: /var/log
__path__: /var/log/syslog

View File

@ -11,5 +11,5 @@
echo "$NAME, $TIME"
curl --header "Content-Type: application/json" --request POST \
--data '{"streams": [{"labels": "{foo=\"bar\",name=\"'"$NAME"'\"}","entries": [{"ts": "'"$TIME"'", "line": "level=info string='"$RANDOM"'" }]}]}' \
'http://127.0.0.1:3100/api/prom/push' &
'http://127.0.0.1:3100/loki/api/v1/push' &
done

View File

@ -133,7 +133,22 @@ var reloadFingerprints = function(){
}
var scanFingerprints = function(JSON_labels,client,params,label_rules){
if (debug) console.log('Scanning Fingerprints...',JSON_labels,label_rules);
var resp = { "streams": [] };
// populate results structure
var results =
{
"stream":{},
"values": []
};
var resp = {
"status":"success",
"data":{
"resultType":"streams",
"result":[results]
}
}
if (!JSON_labels) return resp;
var conditions = [];
// for (var key in JSON_labels){
@ -158,7 +173,9 @@ var scanFingerprints = function(JSON_labels,client,params,label_rules){
finger_rows.push(row[0]);
});
stream.on ('error', function (err) {
// client.send(resp);
resp.data.result = [];
resp.data.message = err;
client.send(resp);
});
stream.on ('end', function () {
@ -184,16 +201,27 @@ var scanFingerprints = function(JSON_labels,client,params,label_rules){
});
stream.on ('error', function (err) {
// TODO: handler error
resp.status = "failed";
resp.data.result = [];
resp.data.message = err;
client.send(resp);
});
stream.on ('end', function () {
if (debug) console.log('RESPONSE:',rows);
var entries = [];
rows.forEach(function(row){
entries.push({ "timestamp": new Date(parseInt(row[1])).toISOString(), "line": row[2] })
});
resp.streams.push( { "labels": JSON.stringify(JSON_labels).replace(/:/g,'='), "entries": entries } );
if (!rows||rows.length < 1) {
resp.data.result =[];
} else {
rows.forEach(function(row){
results.values.push( [ parseInt(row[1] * 1000000).toString(), row[2] ]);
//entries.push({ "ts": new Date(parseInt(row[1])).toISOString(), "line": row[2] })
});
}
results.stream = JSON_labels;
results.stream.source = "JSON";
// resp.streams.push( { "labels": JSON.stringify(JSON_labels).replace(/:/g,'='), "entries": entries } );
client.send(resp);
client.res.end(JSON.stringify(resp));
//client.send(resp);
});
});

203
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "cloki",
"version": "1.0.9",
"version": "1.0.11",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -15,9 +15,9 @@
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
},
"@types/node": {
"version": "11.11.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.0.tgz",
"integrity": "sha512-D5Rt+HXgEywr3RQJcGlZUCTCx1qVbCZpVk3/tOOA6spLNZdGm8BU+zRgdRYDoF1pO3RuXLxADzMrF903JlQXqg=="
"version": "14.11.8",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz",
"integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw=="
},
"@types/pino": {
"version": "4.16.1",
@ -34,11 +34,11 @@
"integrity": "sha1-i33q/TEFWbwo93ck3RuzAXcnjBs="
},
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
@ -108,6 +108,11 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@ -122,9 +127,9 @@
}
},
"deepmerge": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz",
"integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow=="
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
},
"depd": {
"version": "1.1.2",
@ -147,9 +152,9 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"requires": {
"once": "^1.4.0"
}
@ -170,14 +175,14 @@
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"fast-decode-uri-component": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz",
"integrity": "sha512-WQSYVKn6tDW/3htASeUkrx5LcnuTENQIZQPCVlwdnvIJ7bYtSpoJYq38MgUJnx1CQIR1gjZ8HJxAEcN4gqugBg=="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-json-parse": {
"version": "1.0.3",
@ -185,17 +190,18 @@
"integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw=="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"fast-json-stringify": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.11.3.tgz",
"integrity": "sha512-Nx9oURoGD4XYFueNkNzaameSQIcBw2HQrnsnJaRb4PFrlW3/88zusG65pzHA0P7+g5Hn7hyawG3/nCKs3NUAhQ==",
"version": "1.21.0",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.21.0.tgz",
"integrity": "sha512-xY6gyjmHN3AK1Y15BCbMpeO9+dea5ePVsp3BouHCdukcx0hOHbXwFhRodhcI0NpZIgDChSeAKkHW9YjKvhwKBA==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
"ajv": "^6.11.0",
"deepmerge": "^4.2.2",
"string-similarity": "^4.0.1"
}
},
"fast-safe-stringify": {
@ -204,9 +210,9 @@
"integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw=="
},
"fastify": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-1.14.3.tgz",
"integrity": "sha512-7/Dz9BVKp1ABK/qiRQZztMd8QH4oQn1dC2UsKObwRhzAHLPX+26pEKPzjcuhAn27iEWJB2PEKd6Kn1akL/K/Tw==",
"version": "1.14.6",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-1.14.6.tgz",
"integrity": "sha512-w5JIVLc+7NdCsoVRDTNK9kwqDgKS61HcffHKIsUTdQ6etbUYnsL0QpPFcYPM/hasZwsbkzdXk28ftbtqyZJdtA==",
"requires": {
"@types/pino": "^4.16.0",
"abstract-logging": "^1.0.0",
@ -221,6 +227,7 @@
"middie": "^3.1.0",
"pino": "^4.17.3",
"proxy-addr": "^2.0.3",
"rfdc": "^1.1.2",
"tiny-lru": "^2.0.0"
}
},
@ -253,11 +260,11 @@
}
},
"fastq": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
"integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz",
"integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==",
"requires": {
"reusify": "^1.0.0"
"reusify": "^1.0.4"
}
},
"find-my-way": {
@ -271,9 +278,9 @@
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"forwarded": {
"version": "0.1.2",
@ -355,9 +362,9 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
"is-property": {
"version": "1.0.2",
@ -380,12 +387,26 @@
"integrity": "sha512-5Md4EK3vPAMvP2sXY6M3/vQEPeX3LxEQBJuF979uypddXjsUlEoAI9/Nojh8tbw+YU5FjMoqSElO6oyjrAuprw=="
},
"light-my-request": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.2.0.tgz",
"integrity": "sha512-XpNvOFfoQRLPNIFLB6YFjwQj61DyAAW+N08C3KXf+SwbJjZjrZk7gh8IYR8gML96QBM4NAT2Mwhi3tHvrKxnMw==",
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.8.0.tgz",
"integrity": "sha512-cIOWmNsgoStysmkzcv2EwvLwMb2hEm6oqKMerG/b5ey9F0we2Qony8cAZgBktmGPYUvPyKsDCzMcYU6fXbpWew==",
"requires": {
"ajv": "^6.8.1",
"readable-stream": "^3.1.1"
"ajv": "^6.10.2",
"cookie": "^0.4.0",
"readable-stream": "^3.4.0",
"set-cookie-parser": "^2.4.1"
},
"dependencies": {
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"middie": {
@ -411,9 +432,9 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"on-finished": {
"version": "2.3.0",
@ -457,19 +478,19 @@
}
},
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
"integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw=="
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz",
"integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"protocol-buffers": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/protocol-buffers/-/protocol-buffers-4.1.0.tgz",
"integrity": "sha512-9erS5oyfb5vzLCO1pJfSujA03md3MzaR6zP77lcHobH3tb6Z3S/mMDzCxpRrGnmsPb/6o5RLZ5wpVEM2UMlgvw==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/protocol-buffers/-/protocol-buffers-4.2.0.tgz",
"integrity": "sha512-hNp56d5uuREVde7UqP+dmBkwzxrhJwYU5nL/mdivyFfkRZdgAgojkyBeU3jKo7ZHrjdSx6Q1CwUmYJI6INt20g==",
"requires": {
"generate-function": "^2.0.0",
"generate-object-property": "^1.2.0",
@ -480,26 +501,33 @@
}
},
"protocol-buffers-encodings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-encodings/-/protocol-buffers-encodings-1.1.0.tgz",
"integrity": "sha512-SmjEuAf3hc3h3rWZ6V1YaaQw2MNJWK848gLJgzx/sefOJdNLujKinJVXIS0q2cBQpQn2Q32TinawZyDZPzm4kQ==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/protocol-buffers-encodings/-/protocol-buffers-encodings-1.1.1.tgz",
"integrity": "sha512-5aFshI9SbhtcMiDiZZu3g2tMlZeS5lhni//AGJ7V34PQLU5JA91Cva7TIs6inZhYikS3OpnUzAUuL6YtS0CyDA==",
"requires": {
"signed-varint": "^2.0.1",
"varint": "^5.0.0"
"varint": "5.0.0"
},
"dependencies": {
"varint": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
"integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8="
}
}
},
"protocol-buffers-schema": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz",
"integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w=="
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz",
"integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA=="
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
"integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
"ipaddr.js": "1.9.1"
}
},
"pump": {
@ -554,6 +582,11 @@
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@ -561,7 +594,7 @@
},
"safe-regex": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"requires": {
"ret": "~0.1.10"
@ -612,6 +645,11 @@
}
}
},
"set-cookie-parser": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.6.tgz",
"integrity": "sha512-mNCnTUF0OYPwYzSHbdRdCfNNHqrne+HS5tS5xNb6yJbdP9wInV0q5xPLE0EyfV/Q3tImo3y/OXpD8Jn0Jtnjrg=="
},
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
@ -646,6 +684,11 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
"string-similarity": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.2.tgz",
"integrity": "sha512-eCsPPyoQBgY4TMpVD6DVfO7pLrimUONriaO4Xjp3WPUW0YnNLqdHgRj23xotLlqrL90eJhBeq3zdAJf2mQgfBQ=="
},
"string_decoder": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
@ -672,9 +715,9 @@
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@ -687,7 +730,7 @@
},
"string_decoder": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
@ -714,9 +757,9 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"varint": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
"integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8="
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
"integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow=="
},
"wrappy": {
"version": "1.0.2",
@ -724,9 +767,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "cloki",
"version": "1.0.10",
"version": "1.0.11",
"description": "Loki API with Clickhouse Backend",
"main": "cloki.js",
"scripts": {
@ -19,14 +19,15 @@
"homepage": "https://github.com/lmangani/cloki#readme",
"dependencies": {
"@apla/clickhouse": "^1.6.0",
"fastify": "^1.14.3",
"fastify": "^1.14.6",
"fastify-basic-auth": "^0.4.0",
"fastify-static": "^1.1.0",
"fastify-url-data": "^2.2.0",
"jsonic": "^0.3.1",
"protocol-buffers": "^4.1.0",
"protocol-buffers": "^4.2.0",
"protocol-buffers-encodings": "^1.1.1",
"record-cache": "^1.1.0",
"short-hash": "^1.0.0",
"fastify-basic-auth": "^0.4.0"
"short-hash": "^1.0.0"
},
"directories": {
"lib": "lib"