add oracle readme

This commit is contained in:
Ulric Qin 2022-06-13 14:38:51 +08:00
parent 0429d49258
commit 896f7f9a5a
1 changed files with 51 additions and 0 deletions

51
inputs/oracle/README.md Normal file
View File

@ -0,0 +1,51 @@
# oracle
该采集插件的原理,就是连上 oracle 实例,执行各种 sql 获取监控数据oracle 是一个非常完备的老牌的数据库,所有的监控数据都在自己的库里存储,有相关视图供用户查询。
配置文件在 `conf/input.oracle` 目录下oracle.toml 是配置连接地址metric.toml 是配置查询监控数据的 sql每个配置段的含义
- mesurement: 自定义的一个指标前缀
- request: sql 语句
- label_fields: sql 查到的内容,会有多列,哪些列作为时序数据的 label
- metric_fields: sql 查到的内容,会有多列,哪些列作为时序数据的值
- field_to_append: 是否要把某列的内容附到指标名称里
- timeout: sql 执行的超时时间
有些字段可以为空,如果 mesurement、metric_fields、field_to_append 三个字段都配置了,会把这 3 部分拼成 metric 的最终名字,参考下面的代码:
```go
func (o *Oracle) parseRow(row map[string]string, metricConf MetricConfig, slist *list.SafeList, tags map[string]string) error {
labels := make(map[string]string)
for k, v := range tags {
labels[k] = v
}
for _, label := range metricConf.LabelFields {
labelValue, has := row[label]
if has {
labels[label] = strings.Replace(labelValue, " ", "_", -1)
}
}
for _, column := range metricConf.MetricFields {
value, err := conv.ToFloat64(row[column])
if err != nil {
log.Println("E! failed to convert field:", column, "value:", value, "error:", err)
return err
}
if metricConf.FieldToAppend == "" {
slist.PushFront(inputs.NewSample(metricConf.Mesurement+"_"+column, value, labels))
} else {
suffix := cleanName(row[metricConf.FieldToAppend])
slist.PushFront(inputs.NewSample(metricConf.Mesurement+"_"+suffix+"_"+column, value, labels))
}
}
return nil
}
```
## 监控大盘
本 README 文件的同级目录下,提供了 dashboard.json 就是 Oracle 的监控大盘,可以导入夜莺使用。