mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
Co-authored-by: Florent FAYOLLE <florent.fayolle@beta.gouv.fr>
This commit is contained in:
parent
e51c1b6b92
commit
38c8476aff
@ -304,6 +304,7 @@ PORT | port number to listen on for Grist server
|
|||||||
REDIS_URL | optional redis server for browser sessions and db query caching
|
REDIS_URL | optional redis server for browser sessions and db query caching
|
||||||
GRIST_SNAPSHOT_TIME_CAP | optional. Define the caps for tracking buckets. Usage: {"hour": 25, "day": 32, "isoWeek": 12, "month": 96, "year": 1000}
|
GRIST_SNAPSHOT_TIME_CAP | optional. Define the caps for tracking buckets. Usage: {"hour": 25, "day": 32, "isoWeek": 12, "month": 96, "year": 1000}
|
||||||
GRIST_SNAPSHOT_KEEP | optional. Number of recent snapshots to retain unconditionally for a document, regardless of when they were made
|
GRIST_SNAPSHOT_KEEP | optional. Number of recent snapshots to retain unconditionally for a document, regardless of when they were made
|
||||||
|
GRIST_PROMCLIENT_PORT | optional. If set, serve the Prometheus metrics on the specified port number. ⚠️ Be sure to use a port which is not publicly exposed ⚠️.
|
||||||
|
|
||||||
#### AI Formula Assistant related variables (all optional):
|
#### AI Formula Assistant related variables (all optional):
|
||||||
|
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"plotly.js-basic-dist": "2.13.2",
|
"plotly.js-basic-dist": "2.13.2",
|
||||||
"popper-max-size-modifier": "0.2.0",
|
"popper-max-size-modifier": "0.2.0",
|
||||||
"popweasel": "0.1.20",
|
"popweasel": "0.1.20",
|
||||||
|
"prom-client": "14.2.0",
|
||||||
"qrcode": "1.5.0",
|
"qrcode": "1.5.0",
|
||||||
"randomcolor": "0.5.3",
|
"randomcolor": "0.5.3",
|
||||||
"redis": "3.1.1",
|
"redis": "3.1.1",
|
||||||
|
25
stubs/app/server/prometheus-exporter.ts
Normal file
25
stubs/app/server/prometheus-exporter.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { collectDefaultMetrics, register } from 'prom-client';
|
||||||
|
import http from 'http';
|
||||||
|
|
||||||
|
const reqListener = (req: http.IncomingMessage, res: http.ServerResponse) => {
|
||||||
|
register.metrics().then((metrics) => {
|
||||||
|
res.writeHead(200, { 'Content-Type': register.contentType });
|
||||||
|
res.end(metrics);
|
||||||
|
}).catch((e) => {
|
||||||
|
res.writeHead(500);
|
||||||
|
res.end(e.message);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export function runPrometheusExporter(port: number) {
|
||||||
|
collectDefaultMetrics();
|
||||||
|
|
||||||
|
if (isNaN(port)) {
|
||||||
|
throw new Error(`Invalid port: ${process.env.GRIST_PROMCLIENT_PORT}`);
|
||||||
|
}
|
||||||
|
const server = http.createServer(reqListener);
|
||||||
|
server.listen(port, '0.0.0.0');
|
||||||
|
|
||||||
|
console.log(`Prometheus exporter listening on port ${port}.`);
|
||||||
|
return server;
|
||||||
|
}
|
@ -36,6 +36,7 @@ setDefaultEnv('GRIST_WIDGET_LIST_URL', commonUrls.gristLabsWidgetRepository);
|
|||||||
import {updateDb} from 'app/server/lib/dbUtils';
|
import {updateDb} from 'app/server/lib/dbUtils';
|
||||||
import {main as mergedServerMain, parseServerTypes} from 'app/server/mergedServerMain';
|
import {main as mergedServerMain, parseServerTypes} from 'app/server/mergedServerMain';
|
||||||
import * as fse from 'fs-extra';
|
import * as fse from 'fs-extra';
|
||||||
|
import {runPrometheusExporter} from './prometheus-exporter';
|
||||||
|
|
||||||
const G = {
|
const G = {
|
||||||
port: parseInt(process.env.PORT!, 10) || 8484,
|
port: parseInt(process.env.PORT!, 10) || 8484,
|
||||||
@ -102,6 +103,10 @@ export async function main() {
|
|||||||
console.log('For full logs, re-run with DEBUG=1');
|
console.log('For full logs, re-run with DEBUG=1');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (process.env.GRIST_PROMCLIENT_PORT) {
|
||||||
|
runPrometheusExporter(parseInt(process.env.GRIST_PROMCLIENT_PORT, 10));
|
||||||
|
}
|
||||||
|
|
||||||
// If SAML is not configured, there's no login system, so provide a default email address.
|
// If SAML is not configured, there's no login system, so provide a default email address.
|
||||||
setDefaultEnv('GRIST_DEFAULT_EMAIL', 'you@example.com');
|
setDefaultEnv('GRIST_DEFAULT_EMAIL', 'you@example.com');
|
||||||
// Set directory for uploaded documents.
|
// Set directory for uploaded documents.
|
||||||
|
19
yarn.lock
19
yarn.lock
@ -1739,6 +1739,11 @@ binary@~0.3.0:
|
|||||||
buffers "~0.1.1"
|
buffers "~0.1.1"
|
||||||
chainsaw "~0.1.0"
|
chainsaw "~0.1.0"
|
||||||
|
|
||||||
|
bintrees@1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8"
|
||||||
|
integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==
|
||||||
|
|
||||||
bl@^4.0.3:
|
bl@^4.0.3:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
|
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
|
||||||
@ -6520,6 +6525,13 @@ process@~0.11.0:
|
|||||||
resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
|
resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
|
||||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
||||||
|
|
||||||
|
prom-client@14.2.0:
|
||||||
|
version "14.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-14.2.0.tgz#ca94504e64156f6506574c25fb1c34df7812cf11"
|
||||||
|
integrity sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==
|
||||||
|
dependencies:
|
||||||
|
tdigest "^0.1.1"
|
||||||
|
|
||||||
promise-inflight@^1.0.1:
|
promise-inflight@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||||
@ -7688,6 +7700,13 @@ tar@^6.0.2, tar@^6.1.11, tar@^6.1.2:
|
|||||||
mkdirp "^1.0.3"
|
mkdirp "^1.0.3"
|
||||||
yallist "^4.0.0"
|
yallist "^4.0.0"
|
||||||
|
|
||||||
|
tdigest@^0.1.1:
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced"
|
||||||
|
integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==
|
||||||
|
dependencies:
|
||||||
|
bintrees "1.0.2"
|
||||||
|
|
||||||
term-size@^2.1.0:
|
term-size@^2.1.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz"
|
resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz"
|
||||||
|
Loading…
Reference in New Issue
Block a user