Added PromQL language (#2628)
This commit is contained in:
parent
9df20c5ece
commit
8831c70645
File diff suppressed because one or more lines are too long
|
@ -875,6 +875,10 @@
|
|||
"title": "Prolog",
|
||||
"owner": "Golmote"
|
||||
},
|
||||
"promql": {
|
||||
"title": "PromQL",
|
||||
"owner": "arendjr"
|
||||
},
|
||||
"properties": {
|
||||
"title": ".properties",
|
||||
"owner": "Golmote"
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
// Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts
|
||||
// As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/
|
||||
|
||||
(function (Prism) {
|
||||
// PromQL Aggregation Operators
|
||||
// (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)
|
||||
var aggregations = [
|
||||
'sum',
|
||||
'min',
|
||||
'max',
|
||||
'avg',
|
||||
'group',
|
||||
'stddev',
|
||||
'stdvar',
|
||||
'count',
|
||||
'count_values',
|
||||
'bottomk',
|
||||
'topk',
|
||||
'quantile'
|
||||
];
|
||||
|
||||
// PromQL vector matching + the by and without clauses
|
||||
// (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)
|
||||
var vectorMatching = [
|
||||
'on',
|
||||
'ignoring',
|
||||
'group_right',
|
||||
'group_left',
|
||||
'by',
|
||||
'without',
|
||||
];
|
||||
|
||||
// PromQL offset modifier
|
||||
// (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)
|
||||
var offsetModifier = ['offset'];
|
||||
|
||||
var keywords = aggregations.concat(vectorMatching, offsetModifier);
|
||||
|
||||
Prism.languages.promql = {
|
||||
'comment': {
|
||||
pattern: /(^[ \t]*)#.*/m,
|
||||
lookbehind: true
|
||||
},
|
||||
'vector-match': {
|
||||
// Match the comma-separated label lists inside vector matching:
|
||||
pattern: new RegExp('((?:' + vectorMatching.join('|') + ')\\s*)\\([^)]*\\)'),
|
||||
lookbehind: true,
|
||||
inside: {
|
||||
'label-key': {
|
||||
pattern: /\b[^,]*\b/,
|
||||
alias: 'attr-name',
|
||||
},
|
||||
'punctuation': /[(),]/
|
||||
},
|
||||
},
|
||||
'context-labels': {
|
||||
pattern: /\{[^{}]*\}/,
|
||||
inside: {
|
||||
'label-key': {
|
||||
pattern: /\b[a-z_]\w*(?=\s*(?:=~?|![=~]))/,
|
||||
alias: 'attr-name',
|
||||
},
|
||||
'label-value': {
|
||||
pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,
|
||||
greedy: true,
|
||||
alias: 'attr-value',
|
||||
},
|
||||
'punctuation': /\{|\}|=~?|![=~]|,/,
|
||||
},
|
||||
},
|
||||
'context-range': [
|
||||
{
|
||||
pattern: /\[[\w\s:]+\]/, // [1m]
|
||||
inside: {
|
||||
'punctuation': /\[|\]|:/,
|
||||
'range-duration': {
|
||||
pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
|
||||
alias: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
pattern: /(\boffset\s+)\w+/, // offset 1m
|
||||
lookbehind: true,
|
||||
inside: {
|
||||
'range-duration': {
|
||||
pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
|
||||
alias: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
'keyword': new RegExp('\\b(?:' + keywords.join('|') + ')\\b', 'i'),
|
||||
'function': /\b[a-zA-Z_]\w*(?=\s*\()/i,
|
||||
'number': /[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,
|
||||
'operator': /[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|unless|or)\b/i,
|
||||
'punctuation': /[{};()`,.[\]]/,
|
||||
};
|
||||
})(Prism);
|
|
@ -0,0 +1 @@
|
|||
!function(t){var n=["on","ignoring","group_right","group_left","by","without"],a=["sum","min","max","avg","group","stddev","stdvar","count","count_values","bottomk","topk","quantile"].concat(n,["offset"]);t.languages.promql={comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},"vector-match":{pattern:new RegExp("((?:"+n.join("|")+")\\s*)\\([^)]*\\)"),lookbehind:!0,inside:{"label-key":{pattern:/\b[^,]*\b/,alias:"attr-name"},punctuation:/[(),]/}},"context-labels":{pattern:/\{[^{}]*\}/,inside:{"label-key":{pattern:/\b[a-z_]\w*(?=\s*(?:=~?|![=~]))/,alias:"attr-name"},"label-value":{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,alias:"attr-value"},punctuation:/\{|\}|=~?|![=~]|,/}},"context-range":[{pattern:/\[[\w\s:]+\]/,inside:{punctuation:/\[|\]|:/,"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}},{pattern:/(\boffset\s+)\w+/,lookbehind:!0,inside:{"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}}],keyword:new RegExp("\\b(?:"+a.join("|")+")\\b","i"),function:/\b[a-zA-Z_]\w*(?=\s*\()/i,number:/[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,operator:/[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|unless|or)\b/i,punctuation:/[{};()`,.[\]]/}}(Prism);
|
|
@ -0,0 +1,17 @@
|
|||
<h2>Examples</h2>
|
||||
<pre><code># These examples are taken from: https://prometheus.io/docs/prometheus/latest/querying/examples/
|
||||
|
||||
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
|
||||
|
||||
http_requests_total{job=~".*server"}
|
||||
|
||||
max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])
|
||||
|
||||
sum by (job) (
|
||||
rate(http_requests_total[5m])
|
||||
)
|
||||
|
||||
sum by (app, proc) (
|
||||
instance_memory_limit_bytes - instance_memory_usage_bytes
|
||||
) / 1024 / 1024
|
||||
</code></pre>
|
|
@ -147,6 +147,7 @@
|
|||
"pq": "PowerQuery",
|
||||
"mscript": "PowerQuery",
|
||||
"powershell": "PowerShell",
|
||||
"promql": "PromQL",
|
||||
"properties": ".properties",
|
||||
"protobuf": "Protocol Buffers",
|
||||
"purebasic": "PureBasic",
|
||||
|
|
|
@ -1 +1 @@
|
|||
!function(){if("undefined"!=typeof self&&self.Prism&&self.document)if(Prism.plugins.toolbar){var i={none:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",bbcode:"BBcode",bnf:"BNF",rbnf:"RBNF",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",cmake:"CMake",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",kts:"Kotlin Script",kt:"Kotlin",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",lolcode:"LOLCODE",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",iecst:"Structured Text (IEC 61131-3)","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",function(e){var a=e.element.parentNode;if(a&&/pre/i.test(a.nodeName)){var s,t=a.getAttribute("data-language")||i[e.language]||((s=e.language)?(s.substring(0,1).toUpperCase()+s.substring(1)).replace(/s(?=cript)/,"S"):s);if(t){var o=document.createElement("span");return o.textContent=t,o}}})}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}();
|
||||
!function(){if("undefined"!=typeof self&&self.Prism&&self.document)if(Prism.plugins.toolbar){var r={none:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",bbcode:"BBcode",bnf:"BNF",rbnf:"RBNF",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",cmake:"CMake",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",kts:"Kotlin Script",kt:"Kotlin",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",lolcode:"LOLCODE",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",iecst:"Structured Text (IEC 61131-3)","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",function(e){var a=e.element.parentNode;if(a&&/pre/i.test(a.nodeName)){var s,t=a.getAttribute("data-language")||r[e.language]||((s=e.language)?(s.substring(0,1).toUpperCase()+s.substring(1)).replace(/s(?=cript)/,"S"):s);if(t){var o=document.createElement("span");return o.textContent=t,o}}})}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}();
|
|
@ -0,0 +1,30 @@
|
|||
sum by (job) (
|
||||
rate(http_requests_total[5m])
|
||||
)
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
[
|
||||
["keyword", "sum"],
|
||||
["keyword", "by"],
|
||||
["vector-match", [
|
||||
["punctuation", "("],
|
||||
["label-key", "job"],
|
||||
["punctuation", ")"]
|
||||
]],
|
||||
["punctuation", "("],
|
||||
["function", "rate"],
|
||||
["punctuation", "("],
|
||||
"http_requests_total",
|
||||
["context-range", [
|
||||
["punctuation", "["],
|
||||
["range-duration", "5m"],
|
||||
["punctuation", "]"]
|
||||
]],
|
||||
["punctuation", ")"],
|
||||
["punctuation", ")"]
|
||||
]
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
Checks aggregate query.
|
|
@ -0,0 +1,11 @@
|
|||
# These examples are taken from ...
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
[
|
||||
["comment", "# These examples are taken from ..."]
|
||||
]
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
Checks for comments.
|
|
@ -0,0 +1,38 @@
|
|||
max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
[
|
||||
["function", "max_over_time"],
|
||||
["punctuation", "("],
|
||||
["function", "deriv"],
|
||||
["punctuation", "("],
|
||||
["function", "rate"],
|
||||
["punctuation", "("],
|
||||
"distance_covered_total",
|
||||
["context-range", [
|
||||
["punctuation", "["],
|
||||
["range-duration", "5s"],
|
||||
["punctuation", "]"]
|
||||
]],
|
||||
["punctuation", ")"],
|
||||
["context-range", [
|
||||
["punctuation", "["],
|
||||
["range-duration", "30s"],
|
||||
["punctuation", ":"],
|
||||
["range-duration", "5s"],
|
||||
["punctuation", "]"]
|
||||
]],
|
||||
["punctuation", ")"],
|
||||
["context-range", [
|
||||
["punctuation", "["],
|
||||
["range-duration", "10m"],
|
||||
["punctuation", ":"],
|
||||
["punctuation", "]"]
|
||||
]],
|
||||
["punctuation", ")"]
|
||||
]
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
Checks subquery.
|
|
@ -0,0 +1,38 @@
|
|||
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
|
||||
|
||||
http_requests_total{job=~".*server"}
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
[
|
||||
"http_requests_total",
|
||||
["context-labels", [
|
||||
["punctuation", "{"],
|
||||
["label-key", "job"],
|
||||
["punctuation", "="],
|
||||
["label-value", "\"apiserver\""],
|
||||
["punctuation", ","],
|
||||
["label-key", "handler"],
|
||||
["punctuation", "="],
|
||||
["label-value", "\"/api/comments\""],
|
||||
["punctuation", "}"]
|
||||
]],
|
||||
["context-range", [
|
||||
["punctuation", "["],
|
||||
["range-duration", "5m"],
|
||||
["punctuation", "]"]
|
||||
]],
|
||||
|
||||
"\r\n\r\nhttp_requests_total",
|
||||
["context-labels", [
|
||||
["punctuation", "{"],
|
||||
["label-key", "job"],
|
||||
["punctuation", "=~"],
|
||||
["label-value", "\".*server\""],
|
||||
["punctuation", "}"]
|
||||
]]
|
||||
]
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
Checks simple time series queries.
|
Loading…
Reference in New Issue