代码Morror-promql
此工程为 代码 处理语法突出显示, 折叠 并自动完成 PromQL ()Prometheus 查询语言) (中文(简体) ).

安装
此模式作为 npm 软件包可用 :
npm install --save @dash0hq/codemirror-promql
说明: 您需要手动安装不同组件的软件包 联 合 国 代码,因为它们是本套件的同伴依赖。 这儿是不同的 您需要安装的软件包 :
- @ codemirror/ 自动完成
- @ codemirror/ 语言
- @ codemirror/ lint (英语)
- @ codemirror/ 状态
- @ codemirror/ 视图
- @ lezer/ 常见
npm install --save @codemirror/autocomplete @codemirror/language @codemirror/lint @codemirror/state @codemirror/view @lezer/common
说明2:这是安装 lib 所需的最小值. 你可能需要安装 以及依赖 @ codemirror/ 基本设置 以简化代码Mirror本身的设置:
npm install --save @codemirror/basic-setup
使用量
由于 PromQL 语言的设置在 CMN 中会有些棘手, 因此这个 lib 提供了一个类 PromQLExtension
来帮助您配置我们想要提供的不同扩展 .
默认设置
如果您想要享受所提供的不同特性而不需要花费太多时间来理解如何配置 他们,那么最简单的方法是这个:
import {PromQLExtension} from '@dash0hq/codemirror-promql';
import {basicSetup} from '@codemirror/basic-setup';
import {EditorState} from '@codemirror/state';
import {EditorView} from '@codemirror/view';
const promQL = new PromQLExtension()
new EditorView({
state: EditorState.create({
extensions: [basicSetup, promQL.asExtension()],
}),
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
// tslint:disable-next-line:no-non-null-assertion
parent: document.getElementById('editor')!,
});
使用默认设置将激活 :
- 语法突出显示
- 离线自动补全,将显示函数/聚合等 PromQL 关键字,视 上下文.
- 一个将显示 PromQL 语法错误的离线linter( 它更接近 Prometheus 返回的内容)
取消自动补全 - 线性
如果你想要关闭电线和(或)自动补全 很简单:
const promQL = new PromQLExtension().activateLinter(false).activateCompletion(false) // here the linter and the autocomplete are deactivated
线条
今天没有特定配置的linter。 随便你,如果你有需要的话 需要可配置性.
自动补全
自动补全特性提供了多种不同的参数,可用于使此 lib 适应您的 环境.
最大计量元数据
maxMetricsMetadata 是获取元数据在普罗米修斯的最大度量。 如果数目
度量衡超过此限值,根本没有获取任何度量元数据.
默认限制为一万公分.
谨慎使用. 由于获取的数据过多,此限制值高,可能导致您的浏览器崩溃 .
const promQL = new PromQLExtension().setComplete({maxMetricsMetadata: 10000})
将自动补全扩展连接到远程 Prometheus 服务器
将自动补全扩展连接到远程的Prometheus服务器,将自动补全公制名称、标签 名称和标签值.
使用默认的 Prometheus 客户端
普罗米修斯 URL
如果您想要使用此 lib 提供的默认 Prometheus 客户端, 您必须提供 URL 来联系 普罗米修斯服务器.
注意: 这是您想要使用默认的 Prometheus 客户端时唯一的强制参数 。 没有这个 参数,其余的配置将被忽略,而Prometheus客户端将不会被初始化.
const promQL = new PromQLExtension().setComplete({remote: {url: 'https://prometheus.land'}})
覆盖获取Fn
如果您的 Prometheus 服务器被保护并需要特殊的 HTTP 客户端, 您可以覆盖此功能 fetchFn
用于执行任何所需的 HTTP 请求.
const promQL = new PromQLExtension().setComplete({remote: {fetchFn: myHTTPClient}})
检索指标/标签时用于回顾的时间
如果你对"普罗米修斯API"有点熟悉,你意识到你可以通过一个时间间隔,用来告诉 到 Prometheus 在检索元数据( 如 度量 / 标签 ) 时需要的时间 .
如果您想要提供您自己的持续时间, 您可以覆盖变量 lookbackInterval默认情况下
值为 12 * 60 * 60 * 1000 (12h) (英语). 数值必须在 毫秒。 。 。 .
const promQL = new PromQLExtension().setComplete({remote: {lookbackInterval: 12 * 60 * 60 * 1000}})
处理错误
您可以设置自己的错误处理器, 以捕捉在PrometheusClient 联系时可能发生的 HTTP 错误 普罗米修斯.
const promQL = new PromQLExtension().setComplete({remote: {httpErrorHandler: (error: any) => console.error(error)}})
使用的HTTP方法
默认情况下, Prometheus 客户端将使用 HTTP 方法 POST 当联系普罗米修斯时
结束点 /api/v1/labels 财务报告和审定财务报表 /api/v1/series。 。 。 .
您可以更改为使用 HTTP 方法 GET 如果你喜欢.
const promQL = new PromQLExtension().setComplete({remote: {httpMethod: 'GET'}})
HTTP 请求头
如果您需要将特定的 HTTP 信头连同请求一起发送到 Prometheus, 您可以调整如下 :
const customHeaders = new Headers({'header-name': 'test-value'});
const promql = new PromQLExtension().setComplete({remote: {requestHeaders: customHeaders}})
覆盖 API 前缀
默认的 Prometheus 客户端 在构建查询从 Prometheus 获取数据时, 使用 API 前缀
默认 /api/v1。 。 。 .
您可以覆盖此值 :
const promql = new PromQLExtension().setComplete({remote: {apiPrefix: '/my/api/prefix'}})
缓存
默认客户端有一个嵌入式缓存,用于存储从远程获取的不同度量和标签 普罗米修斯服务器.
最大年龄
数据存储在缓存中, 时间由变量定义 maxAge 默认为 5
几分钟。 数值必须在 毫秒。 。 。 .
const promQL = new PromQLExtension().setComplete({remote: {cache: {maxAge: 5 * 60 * 1000}}})
初始计量列表
缓存可以初始化使用一个公尺名列表. 如果您已经掌握了参数列表, 将会有所帮助
您想与嵌入式的Prometheus客户端共享此列表
联 合 国 codemirror-promql。 。 。 .
注意: 请记住, 此列表将保留在嵌入式的 Prometheus 客户端中, 直到定义的时间 maxAge。 。 。 .
const promQL = new PromQLExtension().setComplete({
remote: {
cache: {
initialMetricList: [
'ALERTS',
'ALERTS_FOR_STATE',
'alertmanager_alerts',
'alertmanager_alerts_invalid_total',
'alertmanager_alerts_received_total',
]
}
}
})
覆盖默认的 Prometheus 客户端
如果你对我们默认的普罗米修斯客户端不满意,你仍然可以提供自己的客户端. 它必须执行 接口 普罗米修斯 。 。 。 .
const promQL = new PromQLExtension().setComplete({remote: MyPrometheusClient})
提供您自己执行的自动补全
如果你想让您自己执行自动补全,您可以简单地这样做:
const promQL = new PromQLExtension().setComplete({completeStrategy: myCustomImpl})
说明: 如果提供了这个参数,则会忽略其余配置.
示例
许可证
该代码根据 Apache 2.0 (英语) 执照.