Installation
If you run a CentOS-based PBX system, you can use the easier RPM install; if not refer to the manual install below.
Automated installation (RPM)
You can just run the following commands on your PBX:
wget https://yum.loway.ch/loway.repo -O /etc/yum.repos.d/loway.repo yum install uniloader
Uniloader will be installed under /usr/local/uniloader
and will be
added to the system path. A basic configuration will be set in /etc/sysconfig/uniloader
;
Uniloader will be immediately run as a daemon and it will start automatically on reboot.
You will be able to control Uniloader by entering:
service uniloader start service uniloader stop service uniloader restart
Uniloader also adds a separate "tracking" service for Asterisk events - see Event tracking. |
Manual installation under Systemd (CentOS, Debian/Ubuntu)
The Uniloader can be downloaded from http://queuemetrics-live.com/uniloader.jsp
First log in as root, then download the package as TGZ, uncompress it under /opt
and create
a link so the command can be called from anywhere.
cd /opt wget https://downloads.loway.ch/software/uniloader/uniloader-22.11.1.tar.gz tar zxvf uniloader-22.11.1.tar.gz cd /usr/bin/ ln -s /opt/uniloader-22.11.1/bin/uniloader_amd64 uniloader
Now if we run uniloader
from the shell, it will print its default message.
All files in the examples below are available within the Uniloader package, under init-scripts/systemd ,
so you can just copy them to the right location.
|
Uniloader
Create a configuration file as /etc/uniloader
and set its values (edit is as to suit your system):
QUEUELOG=/var/log/asterisk/queue_log # On-premise QueueMetrics instance URI="mysql:tcp(127.0.0.1:3306)/queuemetrics?allowOldPasswords=1" LOGIN=queuemetrics PASS=javadude TOKEN=P001 # QueueMetrics-Live #URI=https://my.queuemetrics-live.com/CHANGEME #LOGIN=webqloader #PASS=CHANGEME #TOKEN=
Now create a unit file as /lib/systemd/system/uniloader.service
:
[Unit] Description=Loway Uniloader After=syslog.target network.target [Service] Type=simple EnvironmentFile=/etc/uniloader Environment=UPASSWD=${PASS} Nice=15 KillMode=process PIDFile=/var/run/uniloader.pid ExecStart=/usr/bin/uniloader --src "${QUEUELOG}" \ upload --uri "${URI}" --login "${LOGIN}" --token "${TOKEN}" \ --pid /var/run/uniloader.pid RestartSec=1 Restart=on-failure [Install] WantedBy=multi-user.target
Unitracker
If you also need the tracking service, create a configuration file
as /etc/unitracker
and set its values (edit is as to suit your system):
AMIHOST=127.0.0.1 AMIPORT=5038 AMIUSER=admin AMISECRET=amp123 #Uncomment to enable event logging #DEBUGFILE=/root/unitracker_events.log #Ony MOH tracking is enabled by default ENABLEMOH=1 ENABLEPARK=0 ENABLEOUTBOUND=0 OUTBOUNDTHRESHOLD=300
Now create a unit file as /lib/systemd/system/unitracker.service
:
[Unit] Description=Loway Unitracker (Uniloader) After=syslog.target network.target [Service] Type=simple EnvironmentFile=/etc/unitracker Environment=AMISECRET=${AMISECRET} Nice=15 KillMode=process PIDFile=/var/run/unitracker.pid ExecStart=/usr/bin/uniloader track --host "${AMIHOST}" --port "${AMIPORT}" --login "${AMIUSER}" \ --debugfile "${DEBUGFILE}" \ --moh "${ENABLEMOH}" \ --parkedcalls "${ENABLEPARK}" \ --outboundcalls "${ENABLEOUTBOUND}" --outboundthreshold "${OUTBOUNDTHRESHOLD}" RestartSec=1 Restart=on-failure [Install] WantedBy=multi-user.target
Starting and enabling the services
Under Systemd, you need to notify the daemon that there are new init files, tell it that you want them run on boot, and start them.
Run the following commands for Uniloader:
systemctl daemon reload systemctl enable uniloader systemctl start uniloader
To check that the loader is running:
systemctl status uniloader
And to restart the service after you make some changes to the configuration file:
systemctl restart uniloader
All logs will be sent to the system journal, and are visible as:
journalctl -u uniloader
The same procedure must be followed to enable unitracker
.
Manual installation
The Uniloader can be downloaded from http://queuemetrics-live.com/uniloader.jsp
The package contains:
-
Uniloader binaries for all supported architectures (i386, amd64, arm7, arm64),
-
A sample extensions_queuemetrics file,
-
A sample splitter file.
Just copy the file "uniloader_xxx" for your architecture (Intel 32 / 64 bit, ARM 7, ARM64) into your computer and make it executable:
cp ./bin/uniloader_arm7 ./uniloader chmod a+x ./uniloader
To test it, run:
./uniloader -?
It should output a result like:
NAME: uniloader - the data upload companion for QueueMetrics and QueueMetrics Live. USAGE: uniloader [global options] command [command options] [arguments...] VERSION: 22.11.3 - build: 1234-20230511.0849/8300761 - OS: darwin/arm64 - RT: go1.17.5 COMMANDS: help, h Shows a list of commands or help for one command Diagnostics: pbxinfo Loads PBX information test Runs environment tests Services: upload, u Uploads a source file to a QueueMetrics or QueueMetrics Live instance track, t Tracks Asterisk events and creates relevant queue_log entries. fsw Parses FreeSwitch mod_callcenter events av Runs AudioVault - a media storage server for QM (experimental) Tools: cfgfile Reads and writes a configuration file user Creates or alters users qmdb Performs direct operations on QueueMetrics' database asterisk Performs direct operations on Asterisk queues GLOBAL OPTIONS: --src value, -s value The source queue_log file to be uploaded (default: "/var/log/asterisk/queue_log") --cacert value An optional CA Cert file in .pem format, or 'insecure' to skip any certificate validation --verbose-back-end Enables verbose back-end logging. Default: false. --read-pipe The source file is a Unix pipe --help, -h show help --version, -v print the version
If it does, it is working.
Running in production
Uniloader produces a verbose log on STDOUT that should be redirected to a file and periodically rotated.
You should also make sure that Uniloader is started when the PBX boots and that in case it should crash it is automatically restarted.
We advise running Uniloader using 'nice' so that it has reduced access to scarce CPU resources in case of high load / contention with the PBX - while the PBX voice quality quickly degrades on a resource-starved system, Uniloader does not really care about small delays in data uploading.
We also advise adding Uniloader to the command path, so that its many debugging functions can be accessed easily.
Example: Uploading data to a local QueueMetrics system
This is the most common scenario when using a locally installed QueueMetrics system.
nohup nice \ ./uniloader -s /var/log/asterisk/queue_log \ upload --uri "mysql:tcp(1.2.3.4:3306)/queuemetrics?allowOldPasswords=1" \ --login queuemetrics --pass javadude --token P001 \ >> /var/log/uniloader.log &
Will upload the queue_log file located at /var/log/asterisk/queue_log
to the
remote "queuemetrics" database on server 1.2.3.4 with login "queuemetrics" and password "javadude", using the default partition "P001".
After you start it, check the file /var/log/uniloader.log
to make sure there are no errors. The most common
error is that you did not create the correct grants for your MySQL user to upload data remotely.
If everything seems to work, log in into QueueMetrics, select "Edit system parameters" and make sure that the default partition is P001.
# This is the default queue log file. default.queue_log_file=sql:P001
At this point, log off; log on again and click on "Mysql storage information"; select partition P001 and select "Autoconfigure queues". Now the default queue "00 All" will include all of your queues and you can see your historical and real-time status.
Example: Uploading data to a QueueMetrics Live system
You received your QueueMetrics Live access information; and in the received email you find that your instance is called "ABCD" and the password is "1234".
nohup nice \ ./uniloader --src=/var/log/asterisk/queue_log \ upload --uri https://my.queuemetrics-live.com/ABCD \ --login webqloader --pass 1234 \ >> /var/log/uniloader.log &
At this point Uniloader will start feeding the remote database. You can login at any time by visting the address https://my.queuemetrics-live.com/ABCD and logging in as "demoadmin" and the password you were given.
The first time you log in, click on "System diagnostic tools" and then "Live DB inspector" to see data being uploaded. When your database is complete (this may take a few minutes, depending on how much data is on your PBX), go back to the home page and click on "Mysql storage information"; select partition P001 and select "Autoconfigure queues". Now the default queue "00 All" will include all of your queues and you can see your historical and real-time status.
See also One Asterisk instance, one hosted QueueMetrics Live instance. If you run a Yeastar system, see the chapter dedicated to Yeastar MyPBX.