doublemarket / grafana-rrd-server

A HTTP server that helps Grafana read RRD files via Grafana Simple JSON Datasource plugin
MIT License
153 stars 38 forks source link

Prebuilt binary crashing on RHEL 6 #37

Open miken32 opened 6 years ago

miken32 commented 6 years ago

I've downloaded the prebuilt binary, and it keeps crashing with this error:

grafana-rrd-server: symbol lookup error: grafana-rrd-server: undefined symbol: rrd_info_r

This happens every time it's sent a POST from Grafana.

It appears to be looking for an old version of librrd:

root@host:~ ❱❱❱ objdump -x /usr/local/bin/grafana-rrd-server  | grep librrd
  NEEDED               librrd.so.4

librrd.so.4 is present on my machine (version 1.3.8, installed by yum) but it does not have that symbol. I've also got librrd.so.8 (version 1.6.0 installed from source) and it does have it:

root@host:~ ❱❱❱ objdump -x /usr/lib64/librrd.so.4 | grep rrd_info_r
root@host:~ ❱❱❱ objdump -x /usr/local/lib/librrd.so.8 | grep rrd_info_r
0000000000030860 g     F .text  0000000000000c06              rrd_info_r
root@host:~ ❱❱❱ 

Also checked RHEL 7; it also provides librrd.so.4 version 1.4.8, and doesn't contain that symbol either.

doublemarket commented 6 years ago

I think this is caused by an issue in the rrd package which grafana-rrd-server is using. If this is correct, it's better to be fixed in the package's repository by merging the pull request (unlikely to happen, though 😭)

The grafana-rrd-server binary is built on a Docker image, which is based on Debian. That is why it can be successfully built, but can't run on RHEL.

doublemarket commented 6 years ago

@miken32 👆

miken32 commented 6 years ago

Yes that’s probably why it crashes, but the real problem is that it shouldn’t be looking for librrd.so.4 because it doesn’t contain those symbols, but rather a later version. Then it would ignore the system version and insist on using manually built one instead.