Description
we have a master observium with 4 slaves
on the last installed slave, poller check if the rrd file exist on the master and try to create the file even if it exists.
Attachments
Activity
exemple :
ucd_mem.rrd
As you can see, the rrd file is updated.... but the graph no
/opt/observium/rrd/tco-engie-vm-tools-dgp-r.cvg.lan$ rrdtool info ucd_mem.rrd
filename = "ucd_mem.rrd"
rrd_version = "0003"
step = 60
last_update = 1680373506
header_size = 9680
ds[totalswap].index = 0
ds[totalswap].type = "GAUGE"
ds[totalswap].minimal_heartbeat = 120
ds[totalswap].min = NaN
ds[totalswap].max = 1,0000000000e+10
ds[totalswap].last_ds = "998396"
ds[totalswap].value = NaN
ds[totalswap].unknown_sec = 6
ds[availswap].index = 1
ds[availswap].type = "GAUGE"
ds[availswap].minimal_heartbeat = 120
ds[availswap].min = NaN
ds[availswap].max = 1,0000000000e+10
ds[availswap].last_ds = "998396"
ds[availswap].value = NaN
ds[availswap].unknown_sec = 6
ds[totalreal].index = 2
ds[totalreal].type = "GAUGE"
ds[totalreal].minimal_heartbeat = 120
ds[totalreal].min = NaN
ds[totalreal].max = 1,0000000000e+10
ds[totalreal].last_ds = "8148016"
ds[totalreal].value = NaN
ds[totalreal].unknown_sec = 6
ds[availreal].index = 3
ds[availreal].type = "GAUGE"
ds[availreal].minimal_heartbeat = 120
ds[availreal].min = NaN
ds[availreal].max = 1,0000000000e+10
ds[availreal].last_ds = "4627008"
ds[availreal].value = NaN
ds[availreal].unknown_sec = 6
ds[totalfree].index = 4
ds[totalfree].type = "GAUGE"
ds[totalfree].minimal_heartbeat = 120
ds[totalfree].min = NaN
ds[totalfree].max = 1,0000000000e+10
ds[totalfree].last_ds = "5625404"
ds[totalfree].value = NaN
ds[totalfree].unknown_sec = 6
ds[shared].index = 5
ds[shared].type = "GAUGE"
ds[shared].minimal_heartbeat = 120
ds[shared].min = NaN
ds[shared].max = 1,0000000000e+10
ds[shared].last_ds = "632"
ds[shared].value = NaN
ds[shared].unknown_sec = 6
ds[buffered].index = 6
ds[buffered].type = "GAUGE"
ds[buffered].minimal_heartbeat = 120
ds[buffered].min = NaN
ds[buffered].max = 1,0000000000e+10
ds[buffered].last_ds = "647000"
ds[buffered].value = NaN
ds[buffered].unknown_sec = 6
ds[cached].index = 7
ds[cached].type = "GAUGE"
ds[cached].minimal_heartbeat = 120
ds[cached].min = NaN
ds[cached].max = 1,0000000000e+10
ds[cached].last_ds = "2264540"
ds[cached].value = NaN
ds[cached].unknown_sec = 6
rra[0].cf = "AVERAGE"
rra[0].rows = 10080
rra[0].cur_row = 3095
rra[0].pdp_per_row = 1
rra[0].xff = 5,0000000000e-01
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[0].cdp_prep[1].value = NaN
rra[0].cdp_prep[1].unknown_datapoints = 0
rra[0].cdp_prep[2].value = NaN
rra[0].cdp_prep[2].unknown_datapoints = 0
rra[0].cdp_prep[3].value = NaN
rra[0].cdp_prep[3].unknown_datapoints = 0
rra[0].cdp_prep[4].value = NaN
rra[0].cdp_prep[4].unknown_datapoints = 0
rra[0].cdp_prep[5].value = NaN
rra[0].cdp_prep[5].unknown_datapoints = 0
rra[0].cdp_prep[6].value = NaN
rra[0].cdp_prep[6].unknown_datapoints = 0
rra[0].cdp_prep[7].value = NaN
rra[0].cdp_prep[7].unknown_datapoints = 0
rra[1].cf = "AVERAGE"
rra[1].rows = 2976
rra[1].cur_row = 2120
rra[1].pdp_per_row = 6
rra[1].xff = 5,0000000000e-01
rra[1].cdp_prep[0].value = 0,0000000000e+00
rra[1].cdp_prep[0].unknown_datapoints = 1
rra[1].cdp_prep[1].value = 0,0000000000e+00
rra[1].cdp_prep[1].unknown_datapoints = 1
rra[1].cdp_prep[2].value = 0,0000000000e+00
rra[1].cdp_prep[2].unknown_datapoints = 1
rra[1].cdp_prep[3].value = 0,0000000000e+00
rra[1].cdp_prep[3].unknown_datapoints = 1
rra[1].cdp_prep[4].value = 0,0000000000e+00
rra[1].cdp_prep[4].unknown_datapoints = 1
rra[1].cdp_prep[5].value = 0,0000000000e+00
rra[1].cdp_prep[5].unknown_datapoints = 1
rra[1].cdp_prep[6].value = 0,0000000000e+00
rra[1].cdp_prep[6].unknown_datapoints = 1
rra[1].cdp_prep[7].value = 0,0000000000e+00
rra[1].cdp_prep[7].unknown_datapoints = 1
rra[2].cf = "AVERAGE"
rra[2].rows = 1440
rra[2].cur_row = 209
rra[2].pdp_per_row = 24
rra[2].xff = 5,0000000000e-01
rra[2].cdp_prep[0].value = 0,0000000000e+00
rra[2].cdp_prep[0].unknown_datapoints = 1
rra[2].cdp_prep[1].value = 0,0000000000e+00
rra[2].cdp_prep[1].unknown_datapoints = 1
rra[2].cdp_prep[2].value = 0,0000000000e+00
rra[2].cdp_prep[2].unknown_datapoints = 1
rra[2].cdp_prep[3].value = 0,0000000000e+00
rra[2].cdp_prep[3].unknown_datapoints = 1
rra[2].cdp_prep[4].value = 0,0000000000e+00
rra[2].cdp_prep[4].unknown_datapoints = 1
rra[2].cdp_prep[5].value = 0,0000000000e+00
rra[2].cdp_prep[5].unknown_datapoints = 1
rra[2].cdp_prep[6].value = 0,0000000000e+00
rra[2].cdp_prep[6].unknown_datapoints = 1
rra[2].cdp_prep[7].value = 0,0000000000e+00
rra[2].cdp_prep[7].unknown_datapoints = 1
rra[3].cf = "AVERAGE"
rra[3].rows = 1440
rra[3].cur_row = 948
rra[3].pdp_per_row = 288
rra[3].xff = 5,0000000000e-01
rra[3].cdp_prep[0].value = 9,9839600000e+05
rra[3].cdp_prep[0].unknown_datapoints = 240
rra[3].cdp_prep[1].value = 9,9839600000e+05
rra[3].cdp_prep[1].unknown_datapoints = 240
rra[3].cdp_prep[2].value = 8,1480160000e+06
rra[3].cdp_prep[2].unknown_datapoints = 240
rra[3].cdp_prep[3].value = 4,6336880000e+06
rra[3].cdp_prep[3].unknown_datapoints = 240
rra[3].cdp_prep[4].value = 5,6320840000e+06
rra[3].cdp_prep[4].unknown_datapoints = 240
rra[3].cdp_prep[5].value = 6,3200000000e+02
rra[3].cdp_prep[5].unknown_datapoints = 240
rra[3].cdp_prep[6].value = 6,4700000000e+05
rra[3].cdp_prep[6].unknown_datapoints = 240
rra[3].cdp_prep[7].value = 2,2598680000e+06
rra[3].cdp_prep[7].unknown_datapoints = 240
rra[4].cf = "MIN"
rra[4].rows = 1440
rra[4].cur_row = 16
rra[4].pdp_per_row = 6
rra[4].xff = 5,0000000000e-01
rra[4].cdp_prep[0].value = inf
rra[4].cdp_prep[0].unknown_datapoints = 1
rra[4].cdp_prep[1].value = inf
rra[4].cdp_prep[1].unknown_datapoints = 1
rra[4].cdp_prep[2].value = inf
rra[4].cdp_prep[2].unknown_datapoints = 1
rra[4].cdp_prep[3].value = inf
rra[4].cdp_prep[3].unknown_datapoints = 1
rra[4].cdp_prep[4].value = inf
rra[4].cdp_prep[4].unknown_datapoints = 1
rra[4].cdp_prep[5].value = inf
rra[4].cdp_prep[5].unknown_datapoints = 1
rra[4].cdp_prep[6].value = inf
rra[4].cdp_prep[6].unknown_datapoints = 1
rra[4].cdp_prep[7].value = inf
rra[4].cdp_prep[7].unknown_datapoints = 1
rra[5].cf = "MIN"
rra[5].rows = 360
rra[5].cur_row = 145
rra[5].pdp_per_row = 96
rra[5].xff = 5,0000000000e-01
rra[5].cdp_prep[0].value = 9,9839600000e+05
rra[5].cdp_prep[0].unknown_datapoints = 48
rra[5].cdp_prep[1].value = 9,9839600000e+05
rra[5].cdp_prep[1].unknown_datapoints = 48
rra[5].cdp_prep[2].value = 8,1480160000e+06
rra[5].cdp_prep[2].unknown_datapoints = 48
rra[5].cdp_prep[3].value = 4,6336880000e+06
rra[5].cdp_prep[3].unknown_datapoints = 48
rra[5].cdp_prep[4].value = 5,6320840000e+06
rra[5].cdp_prep[4].unknown_datapoints = 48
rra[5].cdp_prep[5].value = 6,3200000000e+02
rra[5].cdp_prep[5].unknown_datapoints = 48
rra[5].cdp_prep[6].value = 6,4700000000e+05
rra[5].cdp_prep[6].unknown_datapoints = 48
rra[5].cdp_prep[7].value = 2,2598680000e+06
rra[5].cdp_prep[7].unknown_datapoints = 48
rra[6].cf = "MIN"
rra[6].rows = 1440
rra[6].cur_row = 183
rra[6].pdp_per_row = 288
rra[6].xff = 5,0000000000e-01
rra[6].cdp_prep[0].value = 9,9839600000e+05
rra[6].cdp_prep[0].unknown_datapoints = 240
rra[6].cdp_prep[1].value = 9,9839600000e+05
rra[6].cdp_prep[1].unknown_datapoints = 240
rra[6].cdp_prep[2].value = 8,1480160000e+06
rra[6].cdp_prep[2].unknown_datapoints = 240
rra[6].cdp_prep[3].value = 4,6336880000e+06
rra[6].cdp_prep[3].unknown_datapoints = 240
rra[6].cdp_prep[4].value = 5,6320840000e+06
rra[6].cdp_prep[4].unknown_datapoints = 240
rra[6].cdp_prep[5].value = 6,3200000000e+02
rra[6].cdp_prep[5].unknown_datapoints = 240
rra[6].cdp_prep[6].value = 6,4700000000e+05
rra[6].cdp_prep[6].unknown_datapoints = 240
rra[6].cdp_prep[7].value = 2,2598680000e+06
rra[6].cdp_prep[7].unknown_datapoints = 240
rra[7].cf = "MAX"
rra[7].rows = 1440
rra[7].cur_row = 1213
rra[7].pdp_per_row = 6
rra[7].xff = 5,0000000000e-01
rra[7].cdp_prep[0].value = -inf
rra[7].cdp_prep[0].unknown_datapoints = 1
rra[7].cdp_prep[1].value = -inf
rra[7].cdp_prep[1].unknown_datapoints = 1
rra[7].cdp_prep[2].value = -inf
rra[7].cdp_prep[2].unknown_datapoints = 1
rra[7].cdp_prep[3].value = -inf
rra[7].cdp_prep[3].unknown_datapoints = 1
rra[7].cdp_prep[4].value = -inf
rra[7].cdp_prep[4].unknown_datapoints = 1
rra[7].cdp_prep[5].value = -inf
rra[7].cdp_prep[5].unknown_datapoints = 1
rra[7].cdp_prep[6].value = -inf
rra[7].cdp_prep[6].unknown_datapoints = 1
rra[7].cdp_prep[7].value = -inf
rra[7].cdp_prep[7].unknown_datapoints = 1
rra[8].cf = "MAX"
rra[8].rows = 360
rra[8].cur_row = 321
rra[8].pdp_per_row = 96
rra[8].xff = 5,0000000000e-01
rra[8].cdp_prep[0].value = 9,9839600000e+05
rra[8].cdp_prep[0].unknown_datapoints = 48
rra[8].cdp_prep[1].value = 9,9839600000e+05
rra[8].cdp_prep[1].unknown_datapoints = 48
rra[8].cdp_prep[2].value = 8,1480160000e+06
rra[8].cdp_prep[2].unknown_datapoints = 48
rra[8].cdp_prep[3].value = 4,6336880000e+06
rra[8].cdp_prep[3].unknown_datapoints = 48
rra[8].cdp_prep[4].value = 5,6320840000e+06
rra[8].cdp_prep[4].unknown_datapoints = 48
rra[8].cdp_prep[5].value = 6,3200000000e+02
rra[8].cdp_prep[5].unknown_datapoints = 48
rra[8].cdp_prep[6].value = 6,4700000000e+05
rra[8].cdp_prep[6].unknown_datapoints = 48
rra[8].cdp_prep[7].value = 2,2598680000e+06
rra[8].cdp_prep[7].unknown_datapoints = 48
rra[9].cf = "MAX"
rra[9].rows = 1440
rra[9].cur_row = 444
rra[9].pdp_per_row = 288
rra[9].xff = 5,0000000000e-01
rra[9].cdp_prep[0].value = 9,9839600000e+05
rra[9].cdp_prep[0].unknown_datapoints = 240
rra[9].cdp_prep[1].value = 9,9839600000e+05
rra[9].cdp_prep[1].unknown_datapoints = 240
rra[9].cdp_prep[2].value = 8,1480160000e+06
rra[9].cdp_prep[2].unknown_datapoints = 240
rra[9].cdp_prep[3].value = 4,6336880000e+06
rra[9].cdp_prep[3].unknown_datapoints = 240
rra[9].cdp_prep[4].value = 5,6320840000e+06
rra[9].cdp_prep[4].unknown_datapoints = 240
rra[9].cdp_prep[5].value = 6,3200000000e+02
rra[9].cdp_prep[5].unknown_datapoints = 240
rra[9].cdp_prep[6].value = 6,4700000000e+05
rra[9].cdp_prep[6].unknown_datapoints = 240
rra[9].cdp_prep[7].value = 2,2598680000e+06
rra[9].cdp_prep[7].unknown_datapoints = 240
1 - i create a new device with my slave as poller
2 - observium-wrapper runs and generates a folder and some rrd files on the master (hosting rrdcached)
3 - the ucd_memory graph displays the first value
4 - 5 minutes after observium-wrapper run and update rrd files
6 - the graph is not updated. Only the first value is graphed
look at the screenshot attached
please find attached a poller debug.
it's the same for all devices on this slave.
if you delete rrd file on the master then plling works.
but the next one failed with the error :RRD create /opt/observium/rrd/th3-engie-vm-tools-dgp-p.cvg.lan/la.rrd passed to remote rrdcached with --no-overwrite.
RRD CMD[create th3-engie-vm-tools-dgp-p.cvg.lan/la.rrd DS:1min:GAUGE:120:0:500000 DS:5min:GAUGE:120:0:500000 DS:15min:GAUGE:120:0:500000 --step 60 RRA:AVERAGE:0.5:1:10080 RRA:AVERAGE:0.5:6:2976 RRA:AVERAGE:0.5:24:1440 RRA:AVERAGE:0.5:288:1440 RRA:MIN:0.5:6:1440 RRA:MIN:0.5:96:360 RRA:MIN:0.5:288:1440 RRA:MAX:0.5:6:1440 RRA:MAX:0.5:96:360 RRA:MAX:0.5:288:1440 --no-overwrite --daemon 192.168.100.100]
RRD RUNTIME[0.0011s]
RRD STDOUT[{*}ERROR: rrdcached{*}@192.168.100.100: RRD Error: creating '/opt/observium/rrd/th3-engie-vm-tools-dgp-p.cvg.lan/la.rrd': {*}File exists{*}]
RRD_STATUS[FALSE]
General questions and device support can be discussed in our Discord channel, click here to join.
Please make and attach additional information about the device:
- full snmp dump from device:
snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -ObentxU <hostname> .1 > myagent.snmpwalk
snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -ObentxU <hostname> .1.3.6.1.4.1 >> myagent.snmpwalk
If device not support SNMP version 2c, replace -v2c with -v1.
- If you have problems with discovery or poller processes, please do and attach these debugs:
./discovery.php -d -h <device>
./poller.php -d -h <device>
- additionally attach device and/or vendor specific MIB files
This comment is added automatically.
i found the difference between this slave and others :
it was in /etc/cron.d/observium
for the slave with graph problems :
*/5 * * * * observium /opt/observium/observium-wrapper poller >> /dev/null 2>&1
for others slaves :
*/5 * * * * observium /opt/observium/poller-wrapper.py >> /dev/null 2>&1
now all is working fine.
But it's a new slave with a fresh installation.
So why the default cron job makes the graph not to be updated rather than poller-wrapper.py succeed ?