From 18e72d0b8f2270d0bd2b8d4ddb2d2d72ed73972d Mon Sep 17 00:00:00 2001 From: Muhammad Moinur Rahman Date: Sat, 20 Jun 2015 08:10:00 +0000 Subject: [PATCH] [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 --- net-mgmt/Makefile | 1 + net-mgmt/librenms/Makefile | 144 ++++++++++++++++++ net-mgmt/librenms/distinfo | 2 + .../librenms/files/patch-config.php.default | 11 ++ .../files/patch-includes_defaults.inc.php | 55 +++++++ .../librenms/files/patch-poller-wrapper.py | 17 +++ net-mgmt/librenms/files/patch-poller.php | 8 + net-mgmt/librenms/files/pkg-message.in | 13 ++ net-mgmt/librenms/pkg-descr | 13 ++ 9 files changed, 264 insertions(+) create mode 100644 net-mgmt/librenms/Makefile create mode 100644 net-mgmt/librenms/distinfo create mode 100644 net-mgmt/librenms/files/patch-config.php.default create mode 100644 net-mgmt/librenms/files/patch-includes_defaults.inc.php create mode 100644 net-mgmt/librenms/files/patch-poller-wrapper.py create mode 100644 net-mgmt/librenms/files/patch-poller.php create mode 100644 net-mgmt/librenms/files/pkg-message.in create mode 100644 net-mgmt/librenms/pkg-descr diff --git a/net-mgmt/Makefile b/net-mgmt/Makefile index 3ca3c88a7734..8b6318bf5c93 100644 --- a/net-mgmt/Makefile +++ b/net-mgmt/Makefile @@ -93,6 +93,7 @@ SUBDIR += kismet SUBDIR += lanmap SUBDIR += lg + SUBDIR += librenms SUBDIR += libsmi SUBDIR += lldpd SUBDIR += mbrowse diff --git a/net-mgmt/librenms/Makefile b/net-mgmt/librenms/Makefile new file mode 100644 index 000000000000..ba14ec43fbe7 --- /dev/null +++ b/net-mgmt/librenms/Makefile @@ -0,0 +1,144 @@ +# Created by: Muhammad Moinur Rahman +# $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 + +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 diff --git a/net-mgmt/librenms/distinfo b/net-mgmt/librenms/distinfo new file mode 100644 index 000000000000..68a9a2fdecb7 --- /dev/null +++ b/net-mgmt/librenms/distinfo @@ -0,0 +1,2 @@ +SHA256 (librenms-librenms-201506_GH0.tar.gz) = 7618b02292847d1a308cd6bd0649eb386e87d2fbac1e0991914cea6383a540df +SIZE (librenms-librenms-201506_GH0.tar.gz) = 23898595 diff --git a/net-mgmt/librenms/files/patch-config.php.default b/net-mgmt/librenms/files/patch-config.php.default new file mode 100644 index 000000000000..3bd4bd5328e4 --- /dev/null +++ b/net-mgmt/librenms/files/patch-config.php.default @@ -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 diff --git a/net-mgmt/librenms/files/patch-includes_defaults.inc.php b/net-mgmt/librenms/files/patch-includes_defaults.inc.php new file mode 100644 index 000000000000..7d428f196129 --- /dev/null +++ b/net-mgmt/librenms/files/patch-includes_defaults.inc.php @@ -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 + diff --git a/net-mgmt/librenms/files/patch-poller-wrapper.py b/net-mgmt/librenms/files/patch-poller-wrapper.py new file mode 100644 index 000000000000..7b49f68255de --- /dev/null +++ b/net-mgmt/librenms/files/patch-poller-wrapper.py @@ -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: diff --git a/net-mgmt/librenms/files/patch-poller.php b/net-mgmt/librenms/files/patch-poller.php new file mode 100644 index 000000000000..2633bb84463d --- /dev/null +++ b/net-mgmt/librenms/files/patch-poller.php @@ -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 + > /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 diff --git a/net-mgmt/librenms/pkg-descr b/net-mgmt/librenms/pkg-descr new file mode 100644 index 000000000000..07b3bd842247 --- /dev/null +++ b/net-mgmt/librenms/pkg-descr @@ -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