Browse Source

added support for lan/wan status

pull/4/head
sberk42 4 years ago
parent
commit
c79be399bc
  1. 25
      fritzbox_lua/lua_client.go
  2. 14
      main.go

25
fritzbox_lua/lua_client.go

@ -332,27 +332,34 @@ func _getValues(data interface{}, pathItems []string, parentPath string) ([]inte
for i, p := range pathItems {
if p == "*" {
// handle * case to get all values
var subvals []interface{}
switch vv := value.(type) {
case []interface{}:
for index, u := range vv {
subvals, err := _getValues(u, pathItems[i+1:], fmt.Sprintf("%s.%d", curPath, index))
if err != nil {
return nil, err
}
subvals, err = _getValues(u, pathItems[i+1:], fmt.Sprintf("%s.%d", curPath, index))
if subvals != nil {
values = append(values, subvals...)
}
}
case map[string]interface{}:
for subK, subV := range vv {
subvals, err := _getValues(subV, pathItems[i+1:], fmt.Sprintf("%s.%s", curPath, subK))
if err != nil {
return nil, err
}
subvals, err = _getValues(subV, pathItems[i+1:], fmt.Sprintf("%s.%s", curPath, subK))
if subvals != nil {
values = append(values, subvals...)
}
}
default:
return nil, fmt.Errorf("item '%s' is neither a hash or array", curPath)
err = fmt.Errorf("item '%s' is neither a hash or array", curPath)
}
if len(values) == 0 {
if err == nil {
err = fmt.Errorf("item '%s.*' has no values", curPath)
}
return nil, err
}
return values, nil

14
main.go

@ -91,6 +91,11 @@ type Metric struct {
MetricType prometheus.ValueType
}
type LuaMetric struct {
// initialized loading JSON
}
var metrics []*Metric
type FritzboxCollector struct {
@ -412,9 +417,9 @@ func testLuaCall() {
var jsonData []byte
var err error
//page := lua.LuaPage{Path: "data.lua", Params: "page=energy"}
page := lua.LuaPage{Path: "data.lua", Params: "page=energy"}
//page := lua.LuaPage{Path: "data.lua", Params: "page=ecoStat"}
page := lua.LuaPage{Path: "data.lua", Params: "page=usbOv"}
//page := lua.LuaPage{Path: "data.lua", Params: "page=usbOv"}
jsonData, err = luaSession.LoadData(page)
if err != nil {
@ -436,7 +441,7 @@ func testLuaCall() {
labelRenames = addLabelRename(labelRenames, "(?i)FON", "Phone")
labelRenames = addLabelRename(labelRenames, "(?i)WLAN", "WLAN")
labelRenames = addLabelRename(labelRenames, "(?i)USB", "USB")
labelRenames = addLabelRename(labelRenames, "(?i)Speicher", "Storage")
labelRenames = addLabelRename(labelRenames, "(?i)Speicher.*FRITZ", "Internal eStorage")
pidMetric := lua.LuaMetricValueDefinition{Path: "", Key: "pid", Labels: nil}
dumpMetric(&labelRenames, data, pidMetric)
@ -444,6 +449,9 @@ func testLuaCall() {
powerMetric := lua.LuaMetricValueDefinition{Path: "data.drain.*", Key: "actPerc", Labels: []string{"name"}}
dumpMetric(&labelRenames, data, powerMetric)
lanMetric := lua.LuaMetricValueDefinition{Path: "data.drain.*.lan.*", Key: "class", Labels: []string{"name"}}
dumpMetric(&labelRenames, data, lanMetric)
tempMetric := lua.LuaMetricValueDefinition{Path: "data.cputemp.series.0", Key: "-1", Labels: nil}
dumpMetric(&labelRenames, data, tempMetric)

Loading…
Cancel
Save