FlowViewer и «правильная» его установка

СВК
Published

FlowViewer — это вэб интерфейс к пакету пограмм для сборки netflow статистики flow-tools. Написано, данное программное обеспечение, на perl-е и в качестве httpd сервера использует Apache. Домашняя страница проекта https://ensight.eos.nasa.gov/FlowViewer/

Конечно, установка в ручную, согласно документации, даст вполне себе работающий сервис, но это не наш метод. Правильнее всего, на мой взгляд, будет собрать rpm-пакет (в качестве хост системы используется, в данном случае, Centos7), что и рассмотрим подробнее.

FlowViewer представляет собой набор cgi-скриптов реализующих три подсистемы:

FlowViewer — вывод статистики в текстовом виде;

FlowGrapher — вывод статистики ввиде графиков;

FlowMonitor — отслеживание данных.

Но ещё дело в том, что часть скриптов представлена ввиде perl-модулей (pm-файлов), а в нормально организованной системе данные модули лежат в строго определенных местах (к примеру /usr/share/perl5/vendor_perl/). И исполняемые скрипты подключают модули именно оттуда. «Так и что» — воскликните Вы, «Ничего-же не мешает нам скопировать эти файлы в заданный каталог». И будете правы, но есть еще один ньюанс: один из модулей — это файл конфигурации! который, по хорошему, стоит положить в /etc. Ещё пара скриптов — это демоны, которые должны быть запущены постоянно. В общем, структура каталогов и файлов далека от простоты.

Исходя из всего вышеперечисленного поставим задачу следующим образом:

  1. Собрать несколько rpm-пакетов (по числу модулей)

  2. Создать потребное количество рабочих каталогов

  3. Скопировать файлы для запуска.

Все эти операции я описал в spec-файле

flowviewer.spec

Name: FlowViewer
Version: 4.6
Release: 4%{?dist}
Summary: FlowViewer is a web gui and report tool for flow-tools.

Group: Applications/Internet
License: GPLv2
URL: https://ensight.eos.nasa.gov/FlowViewer/
Source0: FlowViewer_4.6.tar
Source1: flow-monitor-collector.service
Source2: flow-monitor-grapher.service
Source3: flowviewer.conf
Patch0: config_path_change_for_fv_relay.patch
BuildRequires: perl-rpm-build-perl
Requires: httpd, flow-tools, gd, perl-GD, perl-GDGraph, rrdtool, rrdtool-perl, libfixbuf

%description
FlowViewer is a set of three tools (FlowViewer, FlowGrapher,FlowTracker)
that create text reports, graph reports, and
long-term tracking reports from flow-tools and SiLK captured
and stored netflow data. FlowViewer can run with both flow-tools
and SiLK simultaneously. Flow-tools can handle up to v7; SilK
can handle v5, v9, and IPFIX.

%package -n perl-FlowViewer_UI
Summary: Various user interface utility functions
Group: Applications/Internet
Provides: perl(FlowViewer_UI) = %version-%release

%package -n perl-FlowViewer_Utilities
Summary: Various conversion and formatting utility functions
Group: Applications/Internet
Provides: perl(FlowViewer_Utilities) = %version-%release

%package -n perl-FlowViewer_Configuration
Summary: Various parameters used to configure the system to a local environment
Group: Applications/Internet
Provides: perl(FlowViewer_Configuration) = %version-%release

%description -n perl-FlowViewer_UI
Various user interface utility functions for FlowViewer

%description -n perl-FlowViewer_Utilities
Various conversion and formatting utility functions for FlowViewer

%description -n perl-FlowViewer_Configuration
Various parameters used to configure the system to a local environment for FlowViewer

%prep
%setup -q -n %{name}_%{version}
%patch0 -p1

%install
mkdir -p %{buildroot}%{perl_vendorlib}/
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}
install FlowViewer_Configuration.pm %{buildroot}/%{_sysconfdir}/%{name}/
rm FlowViewer_Configuration.pm
install *.pm %{buildroot}%{perl_vendorlib}/

mkdir -p %{buildroot}/var/www/html/Dashboard
mkdir -p %{buildroot}/var/www/html/FlowGrapher
mkdir -p %{buildroot}/var/www/html/FlowMonitor
mkdir -p %{buildroot}/var/www/html/FlowViewer
mkdir -p %{buildroot}/var/www/html/FlowViewer_Saves
mkdir -p %{buildroot}/var/www/cgi-bin/FlowViewer/tools
mkdir -p %{buildroot}/etc/httpd/conf.modules.d/
mkdir -p %{buildroot}/usr/lib/systemd/system/

install *.cgi %{buildroot}/var/www/cgi-bin/FlowViewer/
install tools/* %{buildroot}/var/www/cgi-bin/FlowViewer/tools/
install *.png %{buildroot}/var/www/html/FlowViewer/
install *.css %{buildroot}/var/www/html/FlowViewer/
install FlowGrapher_Colors FlowGrapher_Ports FlowMonitor_Collector FlowMonitor_Grapher %{buildroot}/var/www/cgi-bin/FlowViewer/
install FlowMonitor_Recreate FlowMonitor_Thumbnail FlowViewer_CleanASCache %{buildroot}/var/www/cgi-bin/FlowViewer/
install FlowViewer_CleanFiles FlowViewer_CleanHostCache FlowViewer_CleanSiLK %{buildroot}/var/www/cgi-bin/FlowViewer/
install NamedInterfaces_Devices NamedInterfaces_Exporters %{buildroot}/var/www/cgi-bin/FlowViewer/
install %SOURCE1 %{buildroot}/usr/lib/systemd/system/
install %SOURCE2 %{buildroot}/usr/lib/systemd/system/
install %SOURCE3 %{buildroot}/etc/httpd/conf.modules.d/

mkdir -p %{buildroot}/var/www/cgi-bin/FlowViewer/Flow_Working.
chmod 777 %{buildroot}/var/www/cgi-bin/FlowViewer/Flow_Working

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
/var/www/html/FlowViewer/*
%dir /var/www/html/Flow*/
%dir /var/www/html/Dashboard/
/var/www/cgi-bin/FlowViewer/*
/etc/httpd/conf.modules.d/flowviewer.conf
/usr/lib/systemd/system/flow-monitor-*

%files -n perl-%{name}_UI
%{perl_vendorlib}/FlowViewer_UI.pm

%files -n perl-%{name}_Utilities
%{perl_vendorlib}/FlowViewer_Utilities.pm

%files -n perl-%{name}_Configuration
%{_sysconfdir}/%{name}/FlowViewer_Configuration.pm

%changelog
* Mon Jan 30 2018 SVK 4.6.0
- Mkdir fixed
- systemd services files added

Патч для правильного расположения конфигурации.

configpathchangeforfv_relay.patch

--- FlowViewer-4.6.0/FV_Relay.cgi.old 2018-01-26 17:18:32.213058087 +0300
+++ FlowViewer-4.6.0/FV_Relay.cgi 2018-01-26 17:19:49.634057264 +0300
@@ -7,7 +7,7 @@
 # directed to the new version. Modify according to your environment.

### Modify this line to point to the v4.6 FlowViewer_Configuration.pm file
-require "/var/www/cgi-bin/FlowViewer_4.6/FlowViewer_Configuration.pm";
+require "/etc/FlowViewer/FlowViewer_Configuration.pm";
 ###

print "Content-type:text/html\n\n";

Файлы запуска сервисов для systemd

flow-monitor-collector.service

[Unit]
Description=FlowMonitor is a FlowViewer part
After=network.target

[Service]
User=apache
Group=apache
ExecStart=/var/www/cgi-bin/FlowViewer/FlowMonitor_Collector

[Install]
WantedBy=multi-user.target

flow-monitor-grapher.service

[Unit]
Description=FlowGrapher is a FlowViewer part
After=network.target

[Service]
User=apache
Group=apache
ExecStart=/var/www/cgi-bin/FlowViewer/FlowMonitor_Grapher

[Install]
WantedBy=multi-user.target

Файл настройки вэб-сервера

flowviewer.conf

ScriptAlias /netflow/ /var/www/cgi-bin/FlowViewer/
<Directory "/var/www/cgi-bin/FlowViewer/">
Options +ExecCGI
    AddHandler cgi-script .cgi .pl
DirectoryIndex FV.cgi
    Options FollowSymLinks
Require all granted
</Directory>

Процесс сборки стандартный:

  1. Под обычным юзером (не root) необходимо создать сборочное окружение, выполнив команду

    $ rpmdev-setuptree

  2. Скопировать архив с исходными кодами

    $ wget -P ~/rpmbuild/SOURCES/ https://netix.dl.sourceforge.net/project/flowviewer/FlowViewer_4.6.tar

  3. Скопировать flowviewer.spec в ~/rpmbuid/SPECS/

  4. Скопировать все остальные вышеприведенные файлы в каталог ~/rpmbuid/SOURCES/

  5. Выполнить команду

    $ rpmbuild -ba ~/rpmbuild/SPEC/flowviewer.spec

И если процесс прошел без ошибок, то в каталоге ~/rpmbuild/RPMS/x86_64 вы увидите искомые пакеты

$ ls -1 ~/rpmbuild/RPMS/x86_64/

FlowViewer-4.6-4.el7.centos.x8664.rpm perl-FlowViewerConfiguration-4.6-4.el7.centos.x8664.rpm perl-FlowViewerUI-4.6-4.el7.centos.x8664.rpm perl-FlowViewerUtilities-4.6-4.el7.centos.x86_64.rpm

Пакеты можно устанавливать. На этом процесс сборки, да и настройки (в основном) завершен.

Дальше можно перезапустить apache и включить и запустить нужных демонов

$ systemctl restart httpd$ systemclt enable flow-monitor-vollector$ systemclt enable flow-monitor-grapher
$ systemclt start flow-monitor-collector
$ systemclt start flow-monitor-grapher

Сервис будет доступен по адресу: http://адресвашегосервера/netflow Приведённые выше файлы можно взять тут