hdecarne-github/fritzbox-telegraf-plugin

get_mesh_info = [] ?

Closed this issue · 11 comments

h1ght commented

hello,
dunno if it is to warm at my place or am stupid.
which kind of host i write down there? got 3 avm devices, 2 routers/one in mesh as a "repeater" and one fritzbox 1200 repeater.

Hello @h1ght
the get_mesh_info parameter expects the host names of the mesh masters to query, as they are given in the devices list.

Example:

[[inputs.fritzbox]]
  devices = [["http://fritz.box:49000", "login", "password"],["http://fritz.repeater:49000", "login", "password"]]
  ...
  get_mesh_info = ["fritz.box"]
  ...
h1ght commented

looks like it created "fritzbox_mesh" once for my repeater this morning. non debug doenst print any mesh measurement yet.

2023/06/12 10:05:35 I! Considering service type: urn:dslforum-org:service:Hosts:1
2023/06/12 10:05:35 I! Invoking SOAP action urn:dslforum-org:service:Hosts:1#X_AVM-DE_GetMeshListPath on endpoint http://fritz.box:49000/upnp/control/hosts ...
2023/06/12 10:05:35 I! Status code: 401
2023/06/12 10:05:35 I! Invoking SOAP action urn:dslforum-org:service:Hosts:1#X_AVM-DE_GetMeshListPath on endpoint http://fritz.box:49000/upnp/control/hosts ...
2023/06/12 10:05:35 I! Status code: 200
2023/06/12 10:05:35 I! Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_AVM-DE_GetMeshListPathResponse xmlns:u="urn:dslforum-org:service:Hosts:1">
<NewX_AVM-DE_MeshListPath>/meshlist.lua?sid=aba3acad32390340</NewX_AVM-DE_MeshListPath>
</u:X_AVM-DE_GetMeshListPathResponse>
</s:Body>
</s:Envelope>
2023/06/12 10:05:35 I! Fetching JSON from: http://fritz.box:49000/meshlist.lua?sid=aba3acad32390340
2023/06/12 10:05:38 I! Considering service type: urn:dslforum-org:service:LANEthernetInterfaceConfig:1
2023/06/12 10:05:38 I! Considering service type: urn:dslforum-org:service:LANHostConfigManagement:1
2023/06/12 10:05:38 I! Considering device: WANDevice - FRITZ!Box 7590
2023/06/12 10:05:38 I! Considering service type: urn:dslforum-org:service:WANCommonInterfaceConfig:1
2023/06/12 10:05:38 I! Invoking SOAP action urn:dslforum-org:service:WANCommonInterfaceConfig:1#GetCommonLinkProperties on endpoint http://fritz.box:49000/upnp/control/wancommonifconfig1 ...
2023/06/12 10:05:38 I! Status code: 401
2023/06/12 10:05:38 I! Invoking SOAP action urn:dslforum-org:service:WANCommonInterfaceConfig:1#GetCommonLinkProperties on endpoint http://fritz.box:49000/upnp/control/wancommonifconfig1 ...
2023/06/12 10:05:38 I! Status code: 200
2023/06/12 10:05:38 I! Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetCommonLinkPropertiesResponse xmlns:u="urn:dslforum-org:service:WANCommonInterfaceConfig:1">
Ethernet
500000
1000000
Up
<NewX_AVM-DE_DownstreamCurrentUtilization>1819,1141,1791,6919,435,20094410,46245,849,4810,4341,8741,16935,4514,2311,5090,428,617,2477,3999,3435</NewX_AVM-DE_DownstreamCurrentUtilization>
<NewX_AVM-DE_UpstreamCurrentUtilization>813,966,1770,2307,361,203321,14272,744,2161,1670,2539,4283,2105,830,3215,543,374,1357,2444,1899</NewX_AVM-DE_UpstreamCurrentUtilization>
<NewX_AVM-DE_DownstreamCurrentMaxSpeed>20094410</NewX_AVM-DE_DownstreamCurrentMaxSpeed>
<NewX_AVM-DE_UpstreamCurrentMaxSpeed>203321</NewX_AVM-DE_UpstreamCurrentMaxSpeed>
</u:GetCommonLinkPropertiesResponse>
</s:Body>
</s:Envelope>
2023/06/12 10:05:38 I! Invoking SOAP action urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetAddonInfos on endpoint http://fritz.box:49000/igdupnp/control/WANCommonIFC1 ...
got deutsche glasfaser branded fritzbox, i can curl the url, and get some json
rohh

The screenshot looks generally good. Only question, why there is only one recording.
What is your exact mesh setup? I mean how are your three fritz devices connected and which ones form a mesh?
The actual mesh info is fetched during this step:

2023/06/12 10:05:35 I! Fetching JSON from: http://fritz.box:49000/meshlist.lua?sid=aba3acad32390340

If you could provide the json delivered via this URL, this might help to debug the actual issue.
I also from time to time noticed for my mesh, that this service stops delivering data. Only after a repeater restart, it worked again.

h1ght commented

i had in mind that the switch inbetween may be a problem? its a zyxel XGS1210-12, so far its running the default configuration with now vlans etc. for testing i just had used the mesh master in fritzbox.conf, used the static ip's of the other devices once cause i was to lazy to find the dns for it. i renamed them in the mesh master and it looks like valid dns.
mesh
had to grab the mesh via new meshlist.lua=sid=
i'll attach them as txt file.
loggin2.txt
mesh.txt

when ive restarted the mesh master, i briefly glimpsed in the menu that my user doenst have the right permissions, i can try to restart all my devices and use the hardcoded fritzbox user. for my repeater, i cannot setup a user, just using password so ["http://repeat:49000", "", "password"] should be valid?

Yes,

["http://repeat:49000", "", "password"] 

is valid. I have to use a similar config for querying my repeater.

Regarding the missing mesh metrics, it is indeed the switch in between. Code currently assumes, there is exactly one hop between mesh master and mesh slave.

While it may be possible to traverse multiple hops in the mesh json, I am not sure you will get any benefit from it.
I use this metric to measure the wifi link quality between my master router and slave repeater (both are linked via wifi). In your setup the master and slaves are connected via cable. The latter results in a stable link anyway (1 Gbit/s). Furthermore while traversing the nodes, the minimum bandwidth between two adjacent nodes defines the overall master slave bandwidth. There is no bandwidth reported for the link between slave repeater/router and switch, requiring some special handling. I am not sure, whether the gained information (1 Gbit/s) is worth the additional complexity.

h1ght commented

Ahhhhh it just records the fritz mesh, not the clients. wanted to use this to determine why client x suffers from bad downlink. this would have been awesome.

Let me consider this as a feature request.

h1ght commented

yes. if this isnt that much work, may i should learn some stuff.

whats the most interesting part is, why my repeater was written once into influx.

Latest head now contains a new option get_mesh_clients. If set to true the data rates of all WLAN clients inside the mesh are recorded.
image
Furthermore the node link evaluation algorithm has been re-worked and should now also detect and record setup like the one depicted above.
I will test and evaluate the metric over the next days to see whether it is fine as is or any adaption is needed.

h1ght commented

i tested it and it works! thank you

Included in release v0.3.0