导出从SQL查询生成的普罗米修斯度量。
query-exporter的Python项目详细描述
配置文件格式
应用程序的示例配置文件如下:
databases:db1:dsn:sqlite://db2:dsn:sqlite://keep-connected:falsemetrics:metric1:type:gaugedescription:A sample gaugemetric2:type:summarydescription:A sample summarylabels:[l1,l2]metric3:type:histogramdescription:A sample histogrambuckets:[10,20,50,100,1000]metric4:type:enumdescription:A sample enumstates:[foo,bar,baz]queries:query1:interval:5databases:[db1]metrics:[metric1]sql:SELECT random() / 1000000000000000query2:interval:20databases:[db1,db2]metrics:[metric2,metric3]sql:|SELECT abs(random() / 1000000000000000) AS metric2,abs(random() / 10000000000000000) AS metric3,"value1" AS l1,"value2" AS l2query3:interval:10databases:[db2]metrics:[metric4]sql:|SELECT value FROM (SELECT "foo" AS value UNIONSELECT "bar" UNIONSELECT "baz")ORDER BY random()LIMIT 1
数据库 部分
本节包含要连接到的数据库的定义。密钥名是 任意的,仅用于引用 查询部分中的数据库。
每个数据库定义可以有以下键:
< DL>数据库的连接字符串,格式如下:
dialect[+driver]://[username:password][@host:port]/database[?option=value&...]
如需有关可用引擎的详细信息,请参阅sqlalchemy文档。
也可以从环境变量中获取连接字符串 (例如, $connection_string )通过将 dsn 设置为:
env:CONNECTION_STRING
指标 部分
本节包含prometheus的度量定义。键用作度量 名称,因此必须是有效的度量标识符。
每个度量定义都可以有以下键:
< DL>counter, enum, gauge, histogram, summary
要应用于度量的标签名称的可选列表。
如果指定,更新度量的查询必须返回包含 除了度量值之外,每个标签的值。列名必须 匹配度量和标签名称。
对于 直方图 度量,是度量的存储桶列表。
如果未指定,则应用默认存储桶。
对于 枚举 度量,可能状态的字符串值列表。
更新枚举的查询必须返回有效状态。
查询 部分
本节包含要执行的查询的定义。密钥名是 任意的,仅用于标识日志中的查询。
每个查询定义可以有以下键:la-
< DL>运行查询的时间间隔。
如果未指定后缀,则该值将被解释为秒;有效后缀 分别是 s , m , h , d 。只接受整数值。
如果未指定值(或指定为 null ),则查询仅 根据http请求执行。
要对其运行查询的数据库列表。
名称必须与 数据库 部分中定义的名称匹配。
度量值自动用 数据库标签标记,以便 为运行查询的每个数据库生成独立系列。
查询更新的度量列表。
名称必须与 度量中定义的名称匹配。
查询的SQL文本。
查询必须返回与 指标数匹配的行数。 为查询指定,加上这些度量的标签(如果有的话)。
返回列的名称应与声明的度量和 他们的标签。作为例外,如果查询的度量没有标签和 列名与度量值不匹配,度量值声明的顺序 使用。例如:
query:databases:[db]metrics:[metric1,metric2]sql:SELECT 10.0, 20.0
将metric1更新为 10.0 ,metric2更新为 20.0