Установка 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