• Pl chevron_right

      First Attempt at Gnocchi-Statsd

      pubsub.slavino.sk / planetdebian · Monday, 12 October, 2020 - 15:02 · 3 minutes

    I’ve been investigating the options for tracking system statistics to diagnose performance problems. The idea is to track all sorts of data about the system (network use, disk IO, CPU, etc) and look for correlations at times of performance problems. DataDog is pretty good for this but expensive, it’s apparently based on or inspired by the Etsy Statsd. It’s claimed that the gnocchi-statsd is the best implementation of the protoco used by the Etsy Statsd, so I decided to install that.

    I use Debian/Buster for this as that’s what I’m using for the hardware that runs KVM VMs. Here is what I did:

    # it depends on a local MySQL database
    apt -y install mariadb-server mariadb-client
    # install the basic packages for gnocchi
    apt -y install gnocchi-common python3-gnocchiclient gnocchi-statsd uuid
    

    In the Debconf prompts I told it to “setup a database” and not to manage keystone_authtoken with debconf (because I’m not doing a full OpenStack installation).

    This gave a non-working configuration as it didn’t configure the MySQL database for the [indexer] section and the sqlite database that was configured didn’t work for unknown reasons. I filed Debian bug #971996 about this [1] . To get this working you need to edit /etc/gnocchi/gnocchi.conf and change the url line in the [indexer] section to something like the following (where the password is taken from the [database] section).

    url = mysql+pymysql://gnocchi-common:PASS@localhost:3306/gnocchidb
    

    To get the statsd interface going you have to install the gnocchi-statsd package and edit /etc/gnocchi/gnocchi.conf to put a UUID in the resource_id field (the Debian package uuid is good for this). I filed Debian bug #972092 requesting that the UUID be set by default on install [2] .

    Here’s an official page about how to operate Gnocchi [3] . The main thing I got from this was that the following commands need to be run from the command-line (I ran them as root in a VM for test purposes but would do so with minimum privs for a real deployment).

    gnocchi-api
    gnocchi-metricd
    

    To communicate with Gnocchi you need the gnocchi-api program running, which uses the uwsgi program to provide the web interface by default. It seems that this was written for a version of uwsgi different than the one in Buster. I filed Debian bug #972087 with a patch to make it work with uwsgi [4] . Note that I didn’t get to the stage of an end to end test, I just got it to basically run without error.

    After getting “ gnocchi-api ” running (in a terminal not as a daemon as Debian doesn’t seem to have a service file for it), I ran the client program “ gnocchi ” and then gave it the “ status ” command which failed (presumably due to the metrics daemon not running), but at least indicated that the client and the API could communicate.

    Then I ran the “ gnocchi-metricd ” and got the following error:

    2020-10-12 14:59:30,491 [9037] ERROR    gnocchi.cli.metricd: Unexpected error during processing job
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/gnocchi/cli/metricd.py", line 87, in run
        self._run_job()
      File "/usr/lib/python3/dist-packages/gnocchi/cli/metricd.py", line 248, in _run_job
        self.coord.update_capabilities(self.GROUP_ID, self.store.statistics)
      File "/usr/lib/python3/dist-packages/tooz/coordination.py", line 592, in update_capabilities
        raise tooz.NotImplemented
    tooz.NotImplemented
    

    At this stage I’ve had enough of gnocchi. I’ll give the Etsy Statsd a go next.


    Značky: #Debian