# 数据库连接配置 ## 数据库连接导入系统环境(当前终端) ```shell #环境导入方式 #Linux export DATA_SOURCE_NAME="IP=10.28.20.150;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=13141;AUTO_COMMIT=on;CHAR_SET=UTF8" #Windows $env:DATA_SOURCE_NAME="IP=10.28.20.150;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=13141;AUTO_COMMIT=on;CHAR_SET=UTF8" ``` ## 通过程序运行传参导入数据库连接 ```shell ./程序名 --database.dsn "IP=10.28.20.150;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=13141;AUTO_COMMIT=on;CHAR_SET=UTF8" ``` --- # 默认配置文件导入 不需要必须导入 ### 方式一 ``` 与程序同级目录下的default-metrics.toml文件 ``` ### 方式二 #### 导入到系统环境 ```shell #windwos $env:DEFAULT_METRICS="xugu_example.toml" #linux export DEFAULT_METRICS="xugu_example.toml" ``` --- # 自定义配置文件导入 ## 通过运行程序传参导入 ```shell ./程序名 --custom.metrics "xugu_example.toml" #导入多个,以逗号分隔 ./程序名 --custom.metrics "xugu_example.toml,xugu_example2.toml" ``` ## 通过导入环境导入 ```shell #windows $env:CUSTOM_METRICS="xugu_example.toml" #linux export CUSTOM_METRICS="xugu_example.toml" ``` --- ## 其他运行参数 Usage of xugu_exporter: --log.format value 如果设置,使用syslog记录器或JSON格式记录日志。例如:logger:syslog?appname=bob&local=7 或 logger:stdout?json=true。默认输出到stderr。 --log.level value 仅记录给定严重级别或以上的消息。有效级别:[debug, info, warn, error, fatal]。 --custom.metrics string 包含各种自定义指标的文件,格式为toml或yaml。 --default.metrics string 默认指标文件,格式为toml或yaml。 --web.systemd-socket 使用systemd套接字激活监听器,而不是端口监听器(仅限Linux)。 --web.listen-address value Web服务器监听的地址和端口。默认值:0.0.0.0:9161。 --web.telemetry-path value 设置Prometheus的采集路径。默认值:/metrics。 --web.disable-exporter-metrics 禁用导出器指标。 --- ## 指标配置文件编写 文件后缀名:文件名.toml ```toml [[metric]]  # 定义一个指标配置 # 指标的上下文或分类,这里为 "test" 表示测试用途 context = "test"   # SQL 查询,用于从 DUAL 表中选择常量值,返回两个值和两个标签 request = "SELECT 1 as value_1, 2 as value_2, 'First label' as label_1, 'Second label' as label_2 FROM DUAL"   # 描述 value_1 为计数器类型,始终返回 1,value_2 为仪表类型,始终返回 2 metricsdesc = { value_1 = "简单示例,始终返回 1 作为计数器(counter).", value_2 = "同样的示例,始终返回 2 作为仪表(gauge)" }   # 指定 value_1 的类型为计数器(counter),value_2 默认为仪表(gauge) metricstype = { value_1 = "counter" }           #计数器(counter)指的是一个只能增加或重置的值,常用于表示事件的发生次数。         #仪表(gauge)则是一个可以增减的值,通常用于表示某个瞬时状态或度量(如温度、内存使用量等)。 #输出 # HELP xugudb_test_value_1 Simple example returning always 1 as counter. # TYPE xugudb_test_value_1 counter # xugudb_test_value_1 1 # HELP xugudb_test_value_2 Same but returning always 2 as gauge. # TYPE xugudb_test_value_2 gauge # xugudb_test_value_2 2 ``` ```toml # 定义第一个指标配置(没有标签的例子) [[metric]] # 该指标的上下文名称,表示没有标签的情况 context = "context_no_label"   # SQL 查询,返回两个固定的值:1 和 2 request = "SELECT 1 as value_1, 2 as value_2 FROM DUAL"   # 对两个值的描述,分别为 1 和 2 metricsdesc = { value_1 = "简单示例,始终返回 1。", value_2 = "同样的示例,始终返回 2。" }   #输出 # HELP xugudb_context_no_label_value_1 简单示例,始终返回 1。 # TYPE xugudb_context_no_label_value_1 counter # xugudb_context_no_label_value_1 1 # HELP xugudb_context_no_label_value_2 同样的示例,始终返回 2。 # TYPE xugudb_context_no_label_value_2 gauge # xugudb_context_no_label_value_2 2 # 定义第二个指标配置(带标签的例子) [[metric]] # 该指标的上下文名称,表示带标签的情况 context = "context_with_labels"   # 定义两个标签,"label_1" 和 "label_2",它们将用于区分指标的不同实例 labels = [ "label_1", "label_2" ]   # SQL 查询,除了返回 1 和 2 之外,还返回两个标签值:'First label' 和 'Second label' request = "SELECT 1 as value_1, 2 as value_2, 'First label' as label_1, 'Second label' as label_2 FROM DUAL"   # 对两个值的描述,分别为 1 和 2 metricsdesc = { value_1 = "简单示例,始终返回 1。", value_2 = "同样的示例,始终返回 2。" }   #输出 # HELP xugudb_context_with_labels_value_1 简单示例,始终返回 1。 # TYPE xugudb_context_with_labels_value_1 gauge # xugudb_context_with_labels_value_1{label_1="First label",label_2="Second label"} 1 # HELP xugudb_context_with_labels_value_2 同样的示例,始终返回 2。 # TYPE xugudb_context_with_labels_value_2 gauge # xugudb_context_with_labels_value_2{label_1="First label",label_2="Second label"} 2 ``` ```shell [[metric]]  # 定义一个指标配置 context = "test_histo"  # 指标的上下文或分类,这里是 "test_histo",表示这是一个用于测试的直方图 # SQL 查询,选择了多个字段来模拟直方图的不同桶(buckets)和相关的计数值 request = "SELECT 'firstlabel' as label1, 'secondlabel' as label2, 3 as le_20, 19 as le_40, 31 as le_60, 40 as le_80, 45 as count, 123.45 as data FROM DUAL" # 描述字段 data 为直方图类型,表示数据字段的所有值的总和 metricsdesc = { data = "Histogram - sum total of all values in the data field." } # 指定 data 字段的类型为直方图(histogram) metricstype = { data = "histogram" } # 定义标签字段,这里是 "label1" 和 "label2",可以作为直方图的维度来区分数据 labels = [ "label1", "label2" ] # 配置每个桶(bucket)的阈值,用于定义直方图的范围 metricsbuckets = { data = { le_20 = "20", le_40 = "40", le_60 = "60", le_80 = "80" } } # 该直方图指标将生成如下形式的度量数据: # HELP xugudb_test_histo_data Histogram - sum total of all values in the data field. # TYPE xugudb_test_histo_data histogram # xugudb_test_histo_data_bucket{label1="firstlabel",label2="secondlabel",le="20"} 3 # xugudb_test_histo_data_bucket{label1="firstlabel",label2="secondlabel",le="40"} 19 # xugudb_test_histo_data_bucket{label1="firstlabel",label2="secondlabel",le="60"} 31 # xugudb_test_histo_data_bucket{label1="firstlabel",label2="secondlabel",le="80"} 40 # xugudb_test_histo_data_bucket{label1="firstlabel",label2="secondlabel",le="+Inf"} 45 # xugudb_test_histo_data_sum{label1="firstlabel",label2="secondlabel"} 123.45 # xugudb_test_histo_data_count{label1="firstlabel",label2="secondlabel"} 45 ```