FlowViewer и «правильная» его установка
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. Ещё пара скриптов — это демоны, которые должны быть запущены постоянно. В общем, структура каталогов и файлов далека от простоты.
Исходя из всего вышеперечисленного поставим задачу следующим образом:
Собрать несколько rpm-пакетов (по числу модулей)
Создать потребное количество рабочих каталогов
Скопировать файлы для запуска.
Все эти операции я описал в 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>
Процесс сборки стандартный:
Под обычным юзером (не root) необходимо создать сборочное окружение, выполнив команду
$ rpmdev-setuptree
Скопировать архив с исходными кодами
$ wget -P ~/rpmbuild/SOURCES/ https://netix.dl.sourceforge.net/project/flowviewer/FlowViewer_4.6.tar
Скопировать flowviewer.spec в ~/rpmbuid/SPECS/
Скопировать все остальные вышеприведенные файлы в каталог ~/rpmbuid/SOURCES/
Выполнить команду
$ 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 Приведённые выше файлы можно взять тут