Установка Monitorix в Alpine Linux

Краткая инструкция по ручной установке Monitorix'а.

2020-04-14

Подготовка

Скачиваем, и распаковываем куда-нибудь, актуальную версию monitorix:

$ wget https://www.monitorix.org/monitorix-3.12.0.tar.gz
$ tar xvf monitorix-3.12.0.tar.gz

Содержимое распакованного каталога раскидываем по папкам. Схема размещения приведена ниже:

$ tree monitorix-3.12.0
monitorix-3.12.0
├── Changes
├── COPYING
├── docs
│   ├── debian.conf
│   ├── htpasswd.pl
│   ├── monitorix-alert.sh
│   ├── monitorix-apache.conf
│   ├── monitorix-deb.init
│   ├── monitorix.init
│   ├── monitorix-lighttpd.conf
│   ├── monitorix.logrotate     --> /etc/logrotate.d/monitorix
│   ├── monitorix.nanorc
│   ├── monitorix.service
│   ├── monitorix.spec
│   ├── monitorix.sysconfig     --> /etc/conf.d/monitorix
│   └── monitorix.upstart
├── lib                         --> /usr/lib/monitorix/
│   ├── ambsens.pm              --> /usr/lib/monitorix/ambsens.pm
│   ├── apache.pm               --> /usr/lib/monitorix/apache.pm
│   ├── apcupsd.pm              --> ...
│   ├── bind.pm                 ...
│   ├── chrony.pm
│   ├── disk.pm
│   ├── du.pm
│   ├── emailreports.pm
│   ├── fail2ban.pm
│   ├── fs.pm
│   ├── ftp.pm
│   ├── gensens.pm
│   ├── hptemp.pm
│   ├── HTTPServer.pm
│   ├── icecast.pm
│   ├── int.pm
│   ├── ipmi.pm
│   ├── kern.pm
│   ├── libvirt.pm
│   ├── lighttpd.pm
│   ├── lmsens.pm
│   ├── mail.pm
│   ├── memcached.pm
│   ├── mongodb.pm
│   ├── Monitorix.pm
│   ├── mysql.pm
│   ├── net.pm
│   ├── netstat.pm
│   ├── nfsc.pm
│   ├── nfss.pm
│   ├── nginx.pm
│   ├── ntp.pm
│   ├── nut.pm
│   ├── nvidia.pm
│   ├── pagespeed.pm
│   ├── phpapc.pm
│   ├── phpfpm.pm
│   ├── port.pm
│   ├── process.pm
│   ├── proc.pm
│   ├── raspberrypi.pm
│   ├── serv.pm
│   ├── squid.pm
│   ├── system.pm
│   ├── tc.pm
│   ├── traffacct.pm
│   ├── unbound.pm
│   ├── user.pm
│   ├── varnish.pm
│   ├── verlihub.pm
│   ├── wowza.pm
│   └── zfs.pm
├── logo_bot.png        --> /var/lib/monitorix/www/
├── logo_top.png        --> /var/lib/monitorix/www/
├── Makefile
├── man
│   ├── man5
│   │   └── monitorix.conf.5
│   └── man8
│       └── monitorix.8
├── monitorix           --> /usr/bin/
├── monitorix.cgi       --> /var/lib/monitorix/www/cgi/
├── monitorix.conf      --> /etc/monitorix/
├── monitorixico.png    --> /var/lib/monitorix/www/
├── README
├── README.FreeBSD
├── README.md
├── README.NetBSD
├── README.nginx
├── README.OpenBSD
└── reports             --> /var/lib/monitorix/www/
    ├── ca.html         --> /var/lib/monitorix/www/reports/
    ├── de.html         --> /var/lib/monitorix/www/reports/
    ├── en.html         --> ...
    ├── fr.html         ...
    ├── it.html
    ├── nl_NL.html
    ├── pl.html
    ├── sk.html
    └── zh_CN.html


Перед раскидыванием файлов мониторикса по соответствующим каталогам, зададим им правильного владельца:

# cd monitorix-3.12.0 && chown root:root * -R

Добавление в систему необходимых пакетов

Установка perl-пакетов, необходимых для работы monitorix:

# apk add perl perl-cgi perl-libwww perl-mailtools perl-mime-lite perl-dbi perl-xml-simple perl-xml-libxml perl-http-server-simple perl-io-socket-ssl rrdtool perl-rrd

Пакет perl-config-general отсутствует в репозиториях Alpine Linux, поэтому скачал General.pm из metacpan.org в каталог /usr/share/perl5/vendor_perl/Config:

# mkdir -p /usr/share/perl5/vendor_perl/Config/
# wget -O /usr/share/perl5/vendor_perl/Config/General.pm https://metacpan.org/release/Bundle-PBib/source/lib/Config/General.pm?raw=1

Необходимо установит шрифт ttf-dejavu, ttf-freefont или font-noto, иначе вместо символов, на графиках будут видны квадраты.

# apk add ttf-dejavu

Включение автозапуска

Готовый скрипт для openrc взял из генту https://gitweb.gentoo.org/repo/gentoo.git/tree/www-misc/monitorix/files/monitorix слегка подредактировав строку command=/usr/sbin/monitorix:

#!/sbin/openrc-run
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="Monitorix"
description="Monitorix is a lightweight system monitoring tool"
command=/usr/bin/monitorix
command_args="-c /etc/monitorix/monitorix.conf -p /var/run/$name.pid"
pidfile=/var/run/monitorix.pid

checkconfig() {
    if [[ ! -e /etc/monitorix/monitorix.conf ]]; then
        eerror "Please check that the configuration file exists."
        return 1
    fi
}

start() {
    checkconfig || return 1
    ebegin "Starting $name"
    start-stop-daemon --start --name $name --pidfile /var/run/$name.pid --exec $command -- $command_args
    eend $?
}

stop() {
    ebegin "Stopping $name"
    start-stop-daemon --stop --pidfile /var/run/$name.pid
    eend $?
}

Добавляем в автозагрузку:

# rc-update add monitorix default

Замечено

Users using the system (user.pm)

В musl нет реализации wtmp, utmp, lastlog. По этой причине модуль user.pm не работает.

Process statistics (process.pm)

Для правильно отображения Process statistics, добавляем полноценную версию утилиты ps, вместо встроенной в busybox:

# apk add procps

Netstat statistics (netstat.pm)

Требует установки утилиты ss или некастрированной netstat (вместо кастрированной из busybox, которая присутствует в Alpine Linux по умолчанию):

apk add net-tools