1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-24 04:33:24 +00:00

[NEW] net-mgmt/librenms: Autodiscovering PHP/MySQL/SNMP based network monitoring

LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring which
includes support for a wide range of network hardware and operating systems
including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.

LibreNMS has grown out of a lack of easy to configure network monitoring
platforms. It is intended to provide a more navigable interface to the health
and performance of your network. Its design goals include collecting as much
historical data about devices as possible, being completely autodiscovered with
little or no manual intervention, and having a very intuitive interface.

WWW: http://www.librenms.org
This commit is contained in:
Muhammad Moinur Rahman 2015-06-20 08:10:00 +00:00
parent f26b9e268b
commit 18e72d0b8f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=390151
9 changed files with 264 additions and 0 deletions

View File

@ -93,6 +93,7 @@
SUBDIR += kismet
SUBDIR += lanmap
SUBDIR += lg
SUBDIR += librenms
SUBDIR += libsmi
SUBDIR += lldpd
SUBDIR += mbrowse

144
net-mgmt/librenms/Makefile Normal file
View File

@ -0,0 +1,144 @@
# Created by: Muhammad Moinur Rahman<bofh@FreeBSD.org>
# $FreeBSD$
PORTNAME= librenms
PORTVERSION= 201506
CATEGORIES= net-mgmt
MASTER_SITES= http://www.librenms.org/
MAINTAINER= bofh@FreeBSD.org
COMMENT= Autodiscovering PHP/MySQL/SNMP based network monitoring
LICENSE= GPLv3
USE_GITHUB= yes
GH_ACCOUNT= librenms
USES= python shebangfix
SHEBANG_FILES= html/js/makemini.pl mibs/process.pl scripts/agent-local/bind \
scripts/agent-local/dmi scripts/agent-local/dpkg \
scripts/agent-local/drbd scripts/agent-local/hddtemp \
scripts/agent-local/memcached scripts/agent-local/mysql \
scripts/agent-local/rpm scripts/agent-local/temperature \
scripts/agent-local/tinydns scripts/apache-stats.py \
scripts/check_mk_agent scripts/cron.sh scripts/cron-hourly.sh \
scripts/cron-minute.sh scripts/get-geshi.sh \
scripts/get-jpgraph.sh scripts/ifAlias \
scripts/Migration/Standard_Conversion/convert_no_xml.sh \
scripts/Migration/Standard_Conversion/destwork_no_xml.sh \
scripts/Migration/Standard_Conversion/mkdir.sh \
scripts/Migration/XML_Conversion/convert.sh \
scripts/Migration/XML_Conversion/destwork.sh \
scripts/Migration/XML_Conversion/mkdir.sh validate.php \
scripts/postfix-queues scripts/removespikes.php \
scripts/removespikes.pl scripts/watchmaillog/watchmaillog.pl
USE_PHP= ctype filter gd json mcrypt mysql session snmp tokenizer xml
WANT_PHP_CLI= yes
NO_BUILD= yes
RUN_DEPENDS+= rrdtool:${PORTSDIR}/databases/rrdtool \
dot:${PORTSDIR}/graphics/graphviz \
Magick-config:${PORTSDIR}/graphics/ImageMagick \
mtr:${PORTSDIR}/net/mtr-nox11 \
${LOCALBASE}/share/pear/Net/IPv4.php:${PORTSDIR}/net/pear-Net_IPv4 \
${LOCALBASE}/share/pear/Net/IPv6.php:${PORTSDIR}/net/pear-Net_IPv6 \
snmpget:${PORTSDIR}/net-mgmt/net-snmp \
bash:${PORTSDIR}/shells/bash
OPTIONS_DEFINE= APACHEMOD FPING IPMITOOL LIBVIRT MYSQLD NAGPLUGINS NMAP PYPOLLER WMIC
OPTIONS_DEFAULT= APACHEMOD FPING IPMITOOL LIBVIRT NAGPLUGINS NMAP PYPOLLER WMIC
APACHEMOD_DESC= Use PHP with Apache 2.2+ module
FPING_DESC= Enable fping support ping monitoring
IPMITOOL_DESC= Enable support for monitoring hardware IPMI
MYSQLD_DESC= Use local MySQL server
WMIC_DESC= Enable support for WMI polling
PYPOLLER_DESC= Enable Python Poller Wrapper
FPING_RUN_DEPENDS= fping:${PORTSDIR}/net/fping
IPMITOOL_RUN_DEPENDS= ipmitool:${PORTSDIR}/sysutils/ipmitool
LIBVIRT_RUN_DEPENDS= virsh:${PORTSDIR}/devel/libvirt
NAGPLUGINS_RUN_DEPENDS= ${LOCALBASE}/libexec/nagios/check_nagios:${PORTSDIR}/net-mgmt/nagios-plugins
NMAP_RUN_DEPENDS= nmap:${PORTSDIR}/security/nmap
PYPOLLER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}MySQLdb>0:${PORTSDIR}/databases/py-MySQLdb
WMIC_RUN_DEPENDS= wmic:${PORTSDIR}/net-mgmt/wmi-client
MYSQLD_USE= MYSQL=server
MYSQLD_USE_OFF= MYSQL=client
.include <bsd.port.options.mk>
SUB_FILES+= pkg-message
SUB_LIST+= PHP="${PHPBASE}/bin/php" PYTHON=${PYTHON_CMD}
ROOT_FILES= addhost.php adduser.php alerts.php build-base.php build.sql \
billing-calculate.php callback.php check-errors.php \
check-services.php config_to_json.php daily.php daily.sh \
delhost.php discovery.php dist-pollers.php irc.php \
poll-billing.php poller.php poller-wrapper.py renamehost.php \
snmptrap.php syslog.php validate.php
ROOT_DIRS= contrib html includes lib mibs scripts sql-schema \
upgrade-scripts
DOCS= AUTHORS.md CHANGELOG CONTRIBUTING.md LICENSE.txt README.md
PORTDOCS= *
PORTEXAMPLES= snmp.conf.example snmpd.conf.example
NO_ARCH= yes
.if ${PORT_OPTIONS:MAPACHEMOD} && !defined(PACKAGE_BUILDING)
WANT_PHP_MOD= yes
USE_APACHE_RUN= 22+
.else
# Package builder doesn't create php5 with module
WANT_PHP_WEB= yes
.endif
post-patch:
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/poller-wrapper.py ${WRKSRC}/poller.php
do-install:
@${MKDIR} ${STAGEDIR}/${WWWDIR}
.for dir in ${ROOT_DIRS}
@${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir}
@cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir}
.endfor
.for f in ${ROOT_FILES}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR}
.endfor
# Create empty rrd dir writable by www
@${MKDIR} ${STAGEDIR}/${WWWDIR}/rrd
# Files in scripts dir should be executable
@${FIND} ${STAGEDIR}/${WWWDIR}/scripts -type f -exec ${CHMOD} +x {} \;
# Ensure PHP and Python scripts are executable
@${FIND} ${STAGEDIR}/${WWWDIR} -type f -name '*.py' -or -type f -name \
'*.php' -exec ${CHMOD} +x {} \;
# Rename for @sample
.if ${PORT_OPTIONS:MDOCS}
@${MKDIR} ${STAGEDIR}/${DOCSDIR}
.for f in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR}
.endfor
@cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR}
.endif
.if ${PORT_OPTIONS:MEXAMPLES}
@${MKDIR} ${STAGEDIR}/${EXAMPLESDIR}
.for f in ${PORTEXAMPLES}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${EXAMPLESDIR}
.endfor
.endif
post-install:
@${ECHO_CMD} "@owner ${WWWOWN}" >> ${TMPPLIST}
@${ECHO_CMD} "@group ${WWWGRP}" >> ${TMPPLIST}
@${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \
${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
${INSTALL_DATA} ${WRKSRC}/config.php.default \
${STAGEDIR}/${WWWDIR}/config.php.sample
@${ECHO} @sample ${WWWDIR}/config.php.sample >> ${TMPPLIST}
@${ECHO} @dir ${WWWDIR}/rrd >> ${TMPPLIST}
@${ECHO_CMD} "@group" >> ${TMPPLIST}
@${ECHO_CMD} "@owner" >> ${TMPPLIST}
.include <bsd.port.mk>

View File

@ -0,0 +1,2 @@
SHA256 (librenms-librenms-201506_GH0.tar.gz) = 7618b02292847d1a308cd6bd0649eb386e87d2fbac1e0991914cea6383a540df
SIZE (librenms-librenms-201506_GH0.tar.gz) = 23898595

View File

@ -0,0 +1,11 @@
--- config.php.default.orig 2015-06-15 14:48:46 UTC
+++ config.php.default
@@ -14,7 +14,7 @@ $config['memcached']['host'] = "local
$config['memcached']['port'] = 11211;
### Locations - it is recommended to keep the default
-#$config['install_dir'] = "/opt/librenms";
+$config['install_dir'] = "/usr/local/www/librenms";
### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname

View File

@ -0,0 +1,55 @@
--- includes/defaults.inc.php.orig 2015-06-15 11:23:55 UTC
+++ includes/defaults.inc.php
@@ -31,7 +31,7 @@ $config['project_name'] = "LibreNMS"
$config['project_id'] = strtolower($config['project_name']);
$config['temp_dir'] = "/tmp";
-$config['install_dir'] = "/opt/" . $config['project_id'];
+$config['install_dir'] = "/usr/local/www/" . $config['project_id'];
$config['log_dir'] = $config['install_dir'] . "/logs";
// What is my own hostname (used to identify this host in its own database)
@@ -39,26 +39,26 @@ $config['own_hostname'] = "localhost";
// Location of executables
-$config['rrdtool'] = "/usr/bin/rrdtool";
-$config['fping'] = "/usr/bin/fping";
+$config['rrdtool'] = "/usr/local/bin/rrdtool";
+$config['fping'] = "/usr/local/sbin/fping";
$config['fping_options']['retries'] = 3;
$config['fping_options']['timeout'] = 500;
-$config['fping6'] = "/usr/bin/fping6";
-$config['snmpwalk'] = "/usr/bin/snmpwalk";
-$config['snmpget'] = "/usr/bin/snmpget";
-$config['snmpbulkwalk'] = "/usr/bin/snmpbulkwalk";
+$config['fping6'] = "/usr/local/sbin/fping6";
+$config['snmpwalk'] = "/usr/local/bin/snmpwalk";
+$config['snmpget'] = "/usr/local/bin/snmpget";
+$config['snmpbulkwalk'] = "/usr/local/bin/snmpbulkwalk";
$config['whois'] = "/usr/bin/whois";
-$config['ping'] = "/bin/ping";
-$config['mtr'] = "/usr/bin/mtr";
-$config['nmap'] = "/usr/bin/nmap";
-$config['nagios_plugins'] = "/usr/lib/nagios/plugins";
-$config['ipmitool'] = "/usr/bin/ipmitool";
-$config['virsh'] = "/usr/bin/virsh";
-$config['dot'] = "/usr/bin/dot";
-$config['unflatten'] = "/usr/bin/unflatten";
-$config['neato'] = "/usr/bin/neato";
-$config['sfdp'] = "/usr/bin/sfdp";
-$config['svn'] = "/usr/bin/svn";
+$config['ping'] = "/sbin/ping";
+$config['mtr'] = "/usr/local/bin/mtr";
+$config['nmap'] = "/usr/local/bin/nmap";
+$config['nagios_plugins'] = "/usr/local/libexec/nagios";
+$config['ipmitool'] = "/usr/local/bin/ipmitool";
+$config['virsh'] = "/usr/local/bin/virsh";
+$config['dot'] = "/usr/local/bin/dot";
+$config['unflatten'] = "/usr/local/bin/unflatten";
+$config['neato'] = "/usr/local/bin/neato";
+$config['sfdp'] = "/usr/local/bin/sfdp";
+$config['svn'] = "/usr/bin/svnlite";
// Memcached - Keep immediate statistics

View File

@ -0,0 +1,17 @@
--- poller-wrapper.py.orig 2014-11-04 16:14:27 UTC
+++ poller-wrapper.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! %%LOCALBASE%%/bin/python
"""
poller-wrapper A small tool which wraps around the Observium poller
and tries to guide the polling process with a more modern
@@ -38,6 +38,8 @@ except:
print "threading, Queue, sys, subprocess, time, os, json"
sys.exit(2)
+os.environ['PATH'] += ':%%LOCALBASE%%/sbin:%%LOCALBASE%%/bin'
+
try:
import MySQLdb
except:

View File

@ -0,0 +1,8 @@
--- poller.php.orig 2015-05-27 15:48:33 UTC
+++ poller.php
@@ -1,4 +1,4 @@
-#!/usr/bin/env php
+#!%%LOCALBASE%%/bin/php
<?php
/**

View File

@ -0,0 +1,13 @@
=== Configuration details ===
You can mostly follow the guide at:
http://docs.librenms.org/
with the following notes:
- Installation directory is %%WWWDIR%%
- The following lines should be added to /etc/crontab:
33 */6 * * * www cd %%WWWDIR%% && %%PHP%% discovery.php -h all >> /dev/null 2>&1
*/5 * * * * www cd %%WWWDIR%% && %%PHP%% discovery.php -h new >> /dev/null 2>&1
*/5 * * * * www cd %%WWWDIR%% && %%PYTHON%% poller-wrapper.py 16 >> /dev/null 2>&1
15 0 * * * www sh %%WWWDIR%%/daily.sh >> /dev/null 2>&1
* * * * * www %%PHP%% %%WWWDIR%%/alerts.php >> /dev/null 2>&1

View File

@ -0,0 +1,13 @@
LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring
which includes support for a wide range of network hardware and
operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade,
Foundry, HP and many more.
LibreNMS has grown out of a lack of easy to configure network
monitoring platforms. It is intended to provide a more navigable
interface to the health and performance of your network. Its design
goals include collecting as much historical data about devices as
possible, being completely autodiscovered with little or no manual
intervention, and having a very intuitive interface.
WWW: http://www.librenms.org