Blog

Posts about technology and arts.

Too many SQL variables exception in Graphite with SQLite3

Having run Graphite for a while, today I found a rather annoying issue. We were using events, and everything was working perfectly fine so far. But for the 24 last hours, the graph was blank.

Actually, in the dashboard, the graph was missing, being displayed as a gray box. Enabling the web inspector in Google Chrome I got the graph URL. Opening the link in a new tab gave me the exception message: too many SQL variables (1).

After some research, I found out this was a bug in SQLite. After trying to hack the code, and being concerned about using a patched version of Graphite and having to update it later, I decided to switch database.

But to avoid losing the graphs, users and other settings, including the events, I migrated the SQLite database to a MySQL server. This MySQL server was already installed in the server machine, since this machine hosted a Zabbix server too.

Here are the steps required to migrate your database from SQLite to MySQL (2).

  • Download sqlite3_mysql python script from http://www.redmine.org/boards/2/topics/12793
  • Stop Apache/Nginx
  • mysql -u user -p -e “create database redmine graphite set utf8;”
  • sqlite3 graphite.db .dump sqlite3-to-mysql.py mysql -uroot -pyourpass graphite
  • Start Apache again

After tail’ing the Graphite webapp log file,

tail f- storage/log/webapp/error.log

I noticed the Python MySQLdb wasn’t installed.

ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

My server was an Ubuntu 13.04, so I installed the module simply with the following command.

apt-get install python-mysqldb

Hope that helps!

1 You may have to enable *DEBUG* in your Django settings for seeing the exception in your browser

2 Zabbix needed some minor tweaks in order to use [MariaDB](https://mariadb.org/), but probably you can give it a try too

Graphite: Broken images

This morning I was setting up a Graphite server to collect metrics with statsd, LogStash and jmxtrans. After following the instructions from @jgeurst, I've successfully installed Graphite.

I had previously installed another test box, so I decided to take a deeper look at the settings, write a puppet manifest and prepare this new box to become a production server. However, after browsing the webapp, all graphs were broken.

After googling a while, reading forums and bugs, I decided to open the $GRAPHITE_HOME/webapp/graphite/render/views.py, adding log.rendering(...) statements (not the most elegant solution, I know).

By following the program workflow I found out it was entering a block after checking if it should remotely render the image. This feature is turned on/off by REMOTE_RENDERING = True/False, in local_settings.py.

After setting this to False the problem was solved.

Fix laggy Flash (Pepper) in Chrome

My chrome died twice this morning. Checking the system logs I found some segmentation errors. Since it was not so recent version, I updated to the latest version of Chrome. But after that my Flash player was laggy/slowly, and I couldn't listen to Live Ireland Channel 1 no more :-( (I listen to either this radio or r/electrohouse on reddit.tv while I'm programming... I know, I'm a bit weird).

If you are having the same problem, here's the list of actions that I did to fix it.

TL;DR: Disable the Pepper Flash, as well as the Gnash or other flash libraries installed, download flash plug-in from http://get.adobe.com/flashplayer/ and enable it.

  • Went to chrome:plugins and disabled the Pepper Flash.
  • Now I was back at using the Gnash flash plug-in previously installed. Now, although I could watch to Youtube videos, my radio wasn't playing yet.
  • Disabled all Flash plug-ins, went to http://get.adobe.com/flashplayer/ and got the latest version (tar.gz, since I'm using Debian).
  • Copied the libflashplayer.so to /opt/google/chrome/plugins
  • Re-enabled the Shockwave Flash plug-in (you have to expand the details section, in order to be able to choose which version you want to enable

And now I'm happily writing this blog and code, listening to Salonika - Dublin City Ramblers.

Cheers

Learning with Open Source: Reviewing SVN commits log

Last year I became an Apache committer, and dedicated most of my time learning the Apache way, reading different mailing lists and getting used to the things a committer is supposed to know (voting process, keeping everything in the mailing list, and so it goes) and getting used to [functor] API.

In 2013 I hope I can help in the release of [functor], since Java and functional programming are getting a lot more of attention recently, probably due to the project lambda. But I also want to start contributing with the other components from commons (like math, io, jcs) and other top level projects (hadoop, nutch, lucene).

Reviewing SVN commits log

FUNCTOR-14 was created to enhance the generators API in [functor]. I'd worked on a branch for this issue, but needed some review in order to be able to merge it with the trunk. That's where you can see why Open Source is so awesome. Another Apache member, Matt Benson, created another branch to work on the project structure, but also to review the generator API.

git clone fails with fatal: Unable to find remote helper for 'https'

I've been working in a client site without Internet connection, and behind a troll proxy. There is an internal yum repository, but many dependencies are missing.

There weren't git-all, git or git-core packages there, so I had to download and install from sources. I didn't pay attention to the ./configure output and proceeded with make and make install.

Git was installed and ready to rock, but in my first git clone https:// (SSH ports are blocked) I received: fatal: Unable to find remote helper for 'https'.

Turns out that I was missing libcurl-devel, though I did have curl. After installing libcurl-devel and installing from sources again all worked fine.

Subscribe