@aqm/queuelogger

CFWare AQM queue_log mysql writer

Usage no npm install needed!

<script type="module">
  import aqmQueuelogger from 'https://cdn.skypack.dev/@aqm/queuelogger';
</script>

README

@aqm/queuelogger

Travis CI Greenkeeper badge NPM Version NPM Downloads MIT

CFWare AQM queue_log mysql writer

Install @aqm/queuelogger

This module requires node.js 12 or above.

npm i --save @aqm/queuelogger

Usage

import {QueueLogger} from '@aqm/queuelogger';

class QueueManager {
    constructor() {
        this.logger = new QueueLogger({
            /* Default is 'P001', used as value of partition column. */
            partition: 'P001',
            /* Default is least significant part of hostname, used as value of serverid column. */
            serverID: 'serverid',
            /* Default: 'queue_log', the table we insert to. */
            tableName: 'queue_log',
            /* Override default settings used by require('mysql').createPool.
             * The default database is queuemetrics.
             */
            mysql: {},
        });

        process.on('SIGTERM', () => this.logger.end().catch(() => {}));
    }

    async writeQueueLog(timeID, callID, queue, agent, verb, data1, data2, data3, data4, data5) {
        /* This is a pointless example.  In real life a queue manager would retrieve some
         * data from a channel or other object. */
        try {
            await this.logger.writeEntry(timeID, callID, queue, agent, verb, data1, data2, data3, data4, data5);
        } catch (err) {
            /* mysql write failed, record to a file. */
        }
    }
}

Running tests

Tests are provided by eslint and mocha. Tests require access to a test mysql or mariadb daemon. The test database server must have a queuemetrics database and a queuelogd user as defined by sampledb/qm.sql.

Default test configuration:

npm config set @aqm/queuelogger:dbhost 'localhost'
npm config set @aqm/queuelogger:dbprivuser 'root'
npm config set @aqm/queuelogger:dbprivpassword ''

These settings can be changed to use a different server or to use an account less privileged than root. The priv account must have SELECT and DELETE access to the queuemetrics.queue_log table.

Once the database is created and a privileged account configured the tests can be run:

npm install
npm test