mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-25 10:22:59 +02:00
pmacct: New addon
- What is it? pmacct is a monitoring tool for network management tasks. Data collected can be used for analysis and troubleshooting purposes to maintain the health of the network. pmacct can collect, replicate and export network information. It can cache in memory tables, store persistently to SQLite3 and output to flat-files like CSV, formatted, and JSON. - Why is it needed? To monitor data usage (IP-based or MAC-based data accounting) down to the client level. Net-Traffic will monitor traffic for the entire RED, GREEN, etc. networks, but it cannot pinpoint which client is using lots of data. Connections will take a snapshot but not show day by day sums. pmacct can help admins keep tabs on users that use too much data. - What are the use cases? An ISP may implement data caps and if the limit is over-run then you have to pay for every additional xxGB of data used. Typical charges can be around $10 per 50GB. With pmacct you can identify the high users and take action, hopefully before the limit is breached. - This is being introduced as a command line only tool. However, at a later date, if it is useful to enough additional users a WUI page could be developed as discussed in the development mailing list https://lists.ipfire.org/pipermail/development/2021-January/009174.html - Changes in V2 version - Initscript is using IPFire template and installed with IPFire method. - All other daemons except pmacct and pmacctd have been removed from the install. - Example conf files have been removed from /etc/pmacct Both example conf files are described in the pmacct wiki draft. Tested-by: Jon Murphy <jon.murphy@ipfire.org> Signed-off-by: Jon Murphy <jon.murphy@ipfire.org> Signed-off-by: Erik Kapfer <ummeegge@ipfire.org> Signed-off-by: Adolf Belka <adolf.belka@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
33db882f49
commit
7300386bab
2
config/backup/includes/pmacct
Normal file
2
config/backup/includes/pmacct
Normal file
@@ -0,0 +1,2 @@
|
||||
/etc/pmacct/
|
||||
/var/spool/pmacct/
|
||||
24
config/pmacct/pmacct.conf
Normal file
24
config/pmacct/pmacct.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
!
|
||||
! Pmacctd configuration file for IPFire environment
|
||||
!
|
||||
|
||||
syslog: daemon
|
||||
daemonize: true
|
||||
debug: false
|
||||
promisc: true
|
||||
interface: green0
|
||||
|
||||
|
||||
!
|
||||
! "plugin1" plugin configuration
|
||||
!
|
||||
plugins: memory[plugin1]
|
||||
|
||||
plugin_buffer_size[plugin1]: 102400
|
||||
plugin_pipe_size[plugin1]: 10240000
|
||||
|
||||
imt_mem_pools_number: 256
|
||||
imt_path[plugin1]: /var/spool/pmacct/plugin1.pipe
|
||||
|
||||
aggregate[plugin1]: src_host, src_port, src_mac, dst_host, dst_port, dst_mac, proto
|
||||
aggregate_filter[plugin1]: ip
|
||||
109
config/rootfiles/packages/pmacct
Normal file
109
config/rootfiles/packages/pmacct
Normal file
@@ -0,0 +1,109 @@
|
||||
etc/pmacct
|
||||
etc/pmacct/pmacct.conf
|
||||
etc/rc.d/init.d/pmacct
|
||||
usr/bin/pmacct
|
||||
#usr/lib/pmacct
|
||||
#usr/lib/pmacct/examples
|
||||
#usr/lib/pmacct/examples/custom
|
||||
#usr/lib/pmacct/examples/custom/libcustom.la
|
||||
#usr/lib/pmacct/examples/lg
|
||||
#usr/lib/pmacct/examples/lg/pmbgp
|
||||
#usr/sbin/nfacctd
|
||||
usr/sbin/pmacctd
|
||||
#usr/sbin/pmbgpd
|
||||
#usr/sbin/pmbmpd
|
||||
#usr/sbin/pmtelemetryd
|
||||
#usr/sbin/sfacctd
|
||||
#usr/share/pmacct
|
||||
#usr/share/pmacct/CONFIG-KEYS
|
||||
#usr/share/pmacct/FAQS
|
||||
#usr/share/pmacct/QUICKSTART
|
||||
#usr/share/pmacct/UPGRADE
|
||||
#usr/share/pmacct/docs
|
||||
#usr/share/pmacct/docs/IPFIX
|
||||
#usr/share/pmacct/docs/LOOKING_GLASS_FORMAT
|
||||
#usr/share/pmacct/docs/MSGLOG_DUMP_FORMATS
|
||||
#usr/share/pmacct/docs/SIGNALS
|
||||
#usr/share/pmacct/docs/TRIGGER_VARS
|
||||
#usr/share/pmacct/examples
|
||||
usr/share/pmacct/examples/allow.lst.example
|
||||
#usr/share/pmacct/examples/amqp
|
||||
usr/share/pmacct/examples/amqp/amqp_receiver.py
|
||||
#usr/share/pmacct/examples/avro
|
||||
usr/share/pmacct/examples/avro/avro_file_decoder.py
|
||||
usr/share/pmacct/examples/bgp_agent.map.example
|
||||
usr/share/pmacct/examples/bgp_md5.lst.example
|
||||
usr/share/pmacct/examples/bgp_xconnects.map.example
|
||||
usr/share/pmacct/examples/flow_to_rd.map.example
|
||||
#usr/share/pmacct/examples/kafka
|
||||
usr/share/pmacct/examples/kafka/kafka_consumer.py
|
||||
#usr/share/pmacct/examples/lg
|
||||
usr/share/pmacct/examples/lg/pmbgp.py
|
||||
usr/share/pmacct/examples/networks.lst.example
|
||||
usr/share/pmacct/examples/nfacctd-sql.conf.example
|
||||
usr/share/pmacct/examples/pcap_interfaces.map.example
|
||||
usr/share/pmacct/examples/peers.map.example
|
||||
usr/share/pmacct/examples/pmacctd-imt.conf.example
|
||||
usr/share/pmacct/examples/pmacctd-multiple-plugins.conf.example
|
||||
usr/share/pmacct/examples/pmacctd-sql.conf.example
|
||||
usr/share/pmacct/examples/pmacctd-sqlite3.conf.example
|
||||
usr/share/pmacct/examples/ports.lst.example
|
||||
usr/share/pmacct/examples/pretag.map.example
|
||||
usr/share/pmacct/examples/primitives.lst.example
|
||||
usr/share/pmacct/examples/probe_netflow.conf.example
|
||||
usr/share/pmacct/examples/probe_sflow.conf.example
|
||||
usr/share/pmacct/examples/sampling.map.example
|
||||
usr/share/pmacct/examples/tee_receivers.lst.example
|
||||
#usr/share/pmacct/sql
|
||||
#usr/share/pmacct/sql/README.64bit
|
||||
#usr/share/pmacct/sql/README.GeoIP
|
||||
#usr/share/pmacct/sql/README.IPv6
|
||||
#usr/share/pmacct/sql/README.cos
|
||||
#usr/share/pmacct/sql/README.custom_primitives
|
||||
#usr/share/pmacct/sql/README.etype
|
||||
#usr/share/pmacct/sql/README.export_proto
|
||||
#usr/share/pmacct/sql/README.iface
|
||||
#usr/share/pmacct/sql/README.label
|
||||
#usr/share/pmacct/sql/README.mask
|
||||
#usr/share/pmacct/sql/README.mpls
|
||||
#usr/share/pmacct/sql/README.mysql
|
||||
#usr/share/pmacct/sql/README.nat
|
||||
#usr/share/pmacct/sql/README.pgsql
|
||||
#usr/share/pmacct/sql/README.sampling
|
||||
usr/share/pmacct/sql/README.sqlite3
|
||||
#usr/share/pmacct/sql/README.tag2
|
||||
#usr/share/pmacct/sql/README.timestamp
|
||||
#usr/share/pmacct/sql/README.tunnel
|
||||
#usr/share/pmacct/sql/pmacct-create-db.pgsql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_bgp_v1.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v1.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v2.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v3.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v4.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v5.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v6.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v7.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v8.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-db_v9.mysql
|
||||
#usr/share/pmacct/sql/pmacct-create-table_bgp_v1.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_bgp_v1.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v1.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v1.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v2.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v2.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v3.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v3.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v4.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v4.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v5.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v5.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v6.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v6.sqlite3
|
||||
usr/share/pmacct/sql/pmacct-create-table_v7.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v7_v8.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v8.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-create-table_v9.pgsql
|
||||
usr/share/pmacct/sql/pmacct-create-table_v9.sqlite3
|
||||
#usr/share/pmacct/sql/pmacct-grant-db.mysql
|
||||
var/ipfire/backup/addons/includes/pmacct
|
||||
var/spool/pmacct
|
||||
100
lfs/pmacct
Normal file
100
lfs/pmacct
Normal file
@@ -0,0 +1,100 @@
|
||||
###############################################################################
|
||||
# #
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2019 IPFire Team <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
# Definitions
|
||||
###############################################################################
|
||||
|
||||
include Config
|
||||
|
||||
VER = 1.7.6
|
||||
|
||||
THISAPP = pmacct-$(VER)
|
||||
DL_FILE = $(THISAPP).tar.gz
|
||||
DL_FROM = $(URL_IPFIRE)
|
||||
DIR_APP = $(DIR_SRC)/$(THISAPP)
|
||||
TARGET = $(DIR_INFO)/$(THISAPP)
|
||||
PROG = pmacct
|
||||
PAK_VER = 1
|
||||
|
||||
DEPS = libcdada
|
||||
|
||||
###############################################################################
|
||||
# Top-level Rules
|
||||
###############################################################################
|
||||
|
||||
objects = $(DL_FILE)
|
||||
|
||||
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
|
||||
|
||||
$(DL_FILE)_MD5 = b829cfdc394d5acd6d32fb23de181a6b
|
||||
|
||||
install : $(TARGET)
|
||||
|
||||
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
|
||||
|
||||
download :$(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
|
||||
md5 : $(subst %,%_MD5,$(objects))
|
||||
|
||||
dist:
|
||||
@$(PAK)
|
||||
|
||||
###############################################################################
|
||||
# Downloading, checking, md5sum
|
||||
###############################################################################
|
||||
|
||||
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
|
||||
@$(CHECK)
|
||||
|
||||
$(patsubst %,$(DIR_DL)/%,$(objects)) :
|
||||
@$(LOAD)
|
||||
|
||||
$(subst %,%_MD5,$(objects)) :
|
||||
@$(MD5)
|
||||
|
||||
###############################################################################
|
||||
# Installation Details
|
||||
###############################################################################
|
||||
|
||||
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@$(PREBUILD)
|
||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
|
||||
cd $(DIR_APP) && ./autogen.sh
|
||||
cd $(DIR_APP) && ./configure \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc/pmacct \
|
||||
--enable-sqlite3 \
|
||||
--enable-l2 \
|
||||
--enable-jansson
|
||||
# Add directory for plugins and pipes
|
||||
-mkdir -v /var/spool/pmacct
|
||||
# Add configuration folder and copy conf file to it
|
||||
-mkdir -v /etc/pmacct
|
||||
cp -vf $(DIR_CONF)/pmacct/pmacct.conf /etc/pmacct
|
||||
cd $(DIR_APP) && make $(MAKETUNING)
|
||||
cd $(DIR_APP) && make install
|
||||
#install initscripts
|
||||
$(call INSTALL_INITSCRIPT,pmacct)
|
||||
# Install backup definition
|
||||
install -v -m 644 ${DIR_SRC}/config/backup/includes/pmacct \
|
||||
/var/ipfire/backup/addons/includes/pmacct
|
||||
@rm -rf $(DIR_APP)
|
||||
@$(POSTBUILD)
|
||||
2
make.sh
2
make.sh
@@ -1639,6 +1639,8 @@ buildipfire() {
|
||||
lfsmake2 ncdu
|
||||
lfsmake2 lshw
|
||||
lfsmake2 socat
|
||||
lfsmake2 libcdada
|
||||
lfsmake2 pmacct
|
||||
}
|
||||
|
||||
buildinstaller() {
|
||||
|
||||
33
src/initscripts/packages/pmacct
Normal file
33
src/initscripts/packages/pmacct
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
# Begin $rc_base/init.d/pmacct
|
||||
|
||||
# Based on sysklogd script from LFS-3.1 and earlier.
|
||||
|
||||
. /etc/sysconfig/rc
|
||||
. $rc_functions
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
boot_mesg "Starting the pmacctd daemon..."
|
||||
loadproc /usr/sbin/pmacctd -f /etc/pmacct/pmacct.conf
|
||||
;;
|
||||
stop)
|
||||
boot_mesg "Stopping the pmacctd daemon..."
|
||||
killproc /usr/sbin/pmacctd
|
||||
;;
|
||||
restart)
|
||||
${0} stop
|
||||
sleep 1
|
||||
${0} start
|
||||
;;
|
||||
status)
|
||||
statusproc /usr/sbin/pmacctd
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 (start|stop|restart|status)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# End $rc_base/init.d/pmacct
|
||||
|
||||
36
src/paks/pmacct/install.sh
Executable file
36
src/paks/pmacct/install.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
############################################################################
|
||||
# #
|
||||
# This file is part of the IPFire Firewall. #
|
||||
# #
|
||||
# IPFire is free software; you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation; either version 2 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IPFire is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with IPFire; if not, write to the Free Software #
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
# #
|
||||
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
|
||||
# #
|
||||
############################################################################
|
||||
#
|
||||
. /opt/pakfire/lib/functions.sh
|
||||
|
||||
extract_files
|
||||
restore_backup ${NAME}
|
||||
|
||||
# Add symlinks for runlevels
|
||||
ln -s ../init.d/${NAME} /etc/rc.d/rc0.d/K85${NAME}
|
||||
ln -s ../init.d/${NAME} /etc/rc.d/rc3.d/S50${NAME}
|
||||
ln -s ../init.d/${NAME} /etc/rc.d/rc6.d/K85${NAME}
|
||||
start_service ${NAME}
|
||||
|
||||
|
||||
# EOF
|
||||
33
src/paks/pmacct/uninstall.sh
Executable file
33
src/paks/pmacct/uninstall.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
############################################################################
|
||||
# #
|
||||
# This file is part of the IPFire Firewall. #
|
||||
# #
|
||||
# IPFire is free software; you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation; either version 2 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IPFire is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with IPFire; if not, write to the Free Software #
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
# #
|
||||
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
|
||||
# #
|
||||
############################################################################
|
||||
#
|
||||
. /opt/pakfire/lib/functions.sh
|
||||
|
||||
stop_service ${NAME}
|
||||
make_backup ${NAME}
|
||||
remove_files
|
||||
|
||||
# Delete symlinks
|
||||
rm -rfv /etc/rc.d/rc?.d/???${NAME}
|
||||
|
||||
# EOF
|
||||
26
src/paks/pmacct/update.sh
Normal file
26
src/paks/pmacct/update.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
############################################################################
|
||||
# #
|
||||
# This file is part of the IPFire Firewall. #
|
||||
# #
|
||||
# IPFire is free software; you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation; either version 2 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IPFire is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with IPFire; if not, write to the Free Software #
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
# #
|
||||
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
|
||||
# #
|
||||
############################################################################
|
||||
#
|
||||
. /opt/pakfire/lib/functions.sh
|
||||
./uninstall.sh
|
||||
./install.sh
|
||||
Reference in New Issue
Block a user