Skip to content

Latest commit

 

History

History
437 lines (361 loc) · 55.5 KB

File metadata and controls

437 lines (361 loc) · 55.5 KB

Cacti

Cacti Commit Audit Project Status Translation Status Average issue resolution time Open issues


Overview

Cacti is an open-source network monitoring and graphing platform built on RRDtool.

It provides a scalable framework to collect, store, and visualize time-series data from network devices, servers, and applications.

Core capabilities include:

  • Automated device discovery
  • Local and remote data collection
  • Graph, data source, and RRA templating
  • SNMP polling (v1/v2/v3) and IPv6 support
  • Role-based access control (RBAC)
  • Plugin framework
  • Dynamic graph viewing and export options

Release Branches

Cacti maintains two primary branches:

Branch Purpose
1.2.x Stable long-lived release series
develop Active development toward Cacti 1.3.x

For the latest published version, see GitHub Releases.


System Requirements

Minimum supported dependencies by branch:

Dependency Cacti 1.2.x Cacti develop (1.3.x)
MariaDB 5.6+ 10.2.x+
MySQL 5.6+ 8.0+
PHP 8.1+ 8.1+
RRDtool 1.4+ 1.8+
Net-SNMP 5.5+ 5.8+

Notes:

  • RRDtool 1.9+ is recommended for newer dynamic graph features in 1.3.x.
  • Net-SNMP 5.9+ is recommended for broader SNMPv3 protocol coverage.
  • A web server with PHP support is required.
  • PHP should be available as CLI or CGI for scheduled polling and maintenance scripts.
  • php-snmp is optional; validate behavior carefully if you depend on IPv6 and SNMPv3.
  • To force the Net-SNMP binaries while php-snmp remains installed, set $php_snmp_support = false; in include/config.php.

Operating system guidance:

  • 1.2.x: RHEL/Rocky/Alma 8+ (or equivalent) is a common baseline.
  • 1.3.x: RHEL/Rocky/Alma 9+ or CentOS Stream 9+ is preferred for modern PHP packaging.
  • Debian and Ubuntu are also well supported.

Installation (Source Checkout)

Clone the repository:

git clone https://github.com/Cacti/cacti.git
cd cacti

Dependency management:

  • For a source checkout on both 1.2.x and develop, install dependencies with Composer.
  • On develop, composer install uses the committed lock file resolved against Cacti's PHP 8.1 floor.
  • Use composer update only in an intentional dependency-update change, and commit the resulting composer.lock update.
  • Release packages must build include/vendor from the lock with composer install --no-dev and verify the real build host with composer check-platform-reqs --no-dev.
  • Tags under release/* build a deterministic archive, SHA-256 checksum, CycloneDX SBOM, and GitHub provenance attestation through the release-artifact workflow.

Install dependencies:

composer install

Windows users may need:

composer install --ignore-platform-req=ext-pcntl --ignore-platform-req=ext-posix

Then configure your database and web server, and complete setup using the official docs:

https://github.com/Cacti/documentation


Database Upgrades and Schema Checks

When running from source (especially develop), schema updates may be required after pulling changes.

Upgrade the database schema:

sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`

If needed, force a re-upgrade from an earlier version:

php -q cli/upgrade_database.php --forcever=<older_version>

Audit schema consistency:

php cli/audit_database.php --report

Data Collection and Polling

Cacti collects data through data sources, which can use:

  • SNMP
  • Scripts
  • Command output
  • Databases
  • Custom input methods

Polling engines:

Poller Description
PHP Poller Built-in polling engine
Spine High-performance C-based poller

Spine supports SNMPv1/v2 and SNMPv3 with IPv6, with some advanced protocol support depending on how Net-SNMP is compiled on your platform.


Features

  • Device discovery and automation workflows
  • Reusable templates for graphs and data sources
  • Distributed remote data collectors
  • Plugin architecture for extensibility
  • Dynamic graph interactions (time navigation, realtime view, CSV export)
  • Fine-grained user and group permissions using RBAC
  • Broad RRDtool graphing support (including VDEFs and stacked lines)

Documentation

Official documentation is maintained in a separate repository:

https://github.com/Cacti/documentation


Contributing

Contributions are welcome.

  1. Fork this repository.
  2. Create a branch for your change.
  3. Submit a pull request.

You can also help improve docs in:

https://github.com/Cacti/documentation


Community

Community support is available on the Cacti forums:

https://forums.cacti.net


Contributors

Thanks go to these wonderful people (emoji key):

Ian Berry
Ian Berry

💻🛡️📖🎨
Reinhard Scheck
Reinhard Scheck

💻🛡️📖
Tony Roman
Tony Roman

💻🛡️📖🌍⚠️🎨
Andy Blyler
Andy Blyler

💻
Larry Adams
Larry Adams

💻🛡️📖🚇🌍⚠️🎨🚧👀
Mark Brugnoli-Vinten
Mark Brugnoli-Vinten

💻🛡️📖🚇🌍⚠️🎨🚧👀
Jimmy Conner
Jimmy Conner

💻🛡️📖🚇🌍⚠️🎨🚧👀
Petr Macek
Petr Macek

💻🛡️📖👀
Andreas Braun
Andreas Braun

💻📖🌍🎨👀
Jing Chen
Jing Chen

💻🛡️📖👀
Thomas Vincent
Thomas Vincent

💻🛡️📖🚇🌍⚠️🚧👀
Sean Mancini
Sean Mancini

💻📖🚇⚠️👀
J.P. Pasnak, CD
J.P. Pasnak, CD

💻🛡️📖🌍⚠️
Chris Bell
Chris Bell

💻
Paul Gevers
Paul Gevers

💻📖🌍⚠️
Morten Stevens
Morten Stevens

💻
iankberry
iankberry

💻
ronytomen
ronytomen

💻👀
reboot1983
reboot1983

💻👀
micke2k
micke2k

💻🎨
EkaterinePapava
EkaterinePapava

💻🌍
hljtql
hljtql

💻🌍
yeager
yeager

💻
YongBoLiu
YongBoLiu

💻👀
arjanoosting
arjanoosting

💻
Coool
Coool

💻🌍
kim-fitness
kim-fitness

💻👀
earendilfr
earendilfr

💻📖
purplegrape
purplegrape

💻🌍
Сергей
Сергей

💻🌍
DavidLiedke
DavidLiedke

💻🛡️📖🌍
MSS970
MSS970

💻👀
SjonHortensius
SjonHortensius

💻
thurban
thurban

💻👀
riversdev0
riversdev0

💻👀
chilek
chilek

💻👀
MarcBanyard
MarcBanyard

💻
bernisys
bernisys

💻
ka1lie
ka1lie

💻
Dmitry
Dmitry

💻🌍
sysres-dev
sysres-dev

💻👀
rb83
rb83

💻👀
click0
click0

💻
smiles1969
smiles1969

💻
gadzet21
gadzet21

💻
rlaager
rlaager

💻
paulcalabro
paulcalabro

💻
mhoran
mhoran

💻👀
Javier
Javier

💻📖🌍
frontierliu
frontierliu

💻👀
xbolshe
xbolshe

💻
arno-st
arno-st

💻
c72578
c72578

💻
C00kiekiller
C00kiekiller

💻
nuno-silva
nuno-silva

💻
pautiina
pautiina

💻👀
interduo
interduo

💻🌍
seanmancini
seanmancini

💻⚠️
jav4
jav4

💻
fabriciotm
fabriciotm

💻
eriksejr
eriksejr

💻
hb9xar
hb9xar

💻
nightflyza
nightflyza

💻
nbz6
nbz6

💻
iaohkut
iaohkut

💻
Nakayama Kito
Nakayama Kito

💻🌍
SMark-Black
SMark-Black

💻
Givo29
Givo29

💻
GregOriol
GregOriol

💻
gvde
gvde

💻👀
dallenk
dallenk

💻👀
dvzrv
dvzrv

💻
ctrowat
ctrowat

💻
Beuc
Beuc

💻🛡️
panlinux
panlinux

💻
begemoti
begemoti

💻
dsclassen
dsclassen

💻
scline
scline

💻
sky93
sky93

💻
SergioChan
SergioChan

💻
ShaunR
ShaunR

💻
sebastienwarin
sebastienwarin

💻
tbriceno-hub
tbriceno-hub

💻
tyearke
tyearke

💻
Vladyslav78956785786576
Vladyslav78956785786576

💻
aliuzzz
aliuzzz

💻
UnAfraid
UnAfraid

💻
robwdwd
robwdwd

💻
Poslik
Poslik

💻
Xake
Xake

💻
Cosmologist
Cosmologist

💻
PVi1
PVi1

💻
OhWelp
OhWelp

💻
TheNetworkIsDown
TheNetworkIsDown

💻
tersmitten
tersmitten

💻
F-i-f
F-i-f

💻
terrellgf
terrellgf

💻⚠️
surfermarty
surfermarty

💻
aqr199
aqr199

💻
snsupersharp
snsupersharp

💻🌍
skyjou
skyjou

💻
skeletorgithub
skeletorgithub

💻
richud
richud

💻
oshiewan
oshiewan

💻
oderturm
oderturm

💻
stevenseeley
stevenseeley

💻
mcnc-clovett
mcnc-clovett

💻
m8522s
m8522s

💻
linusat
linusat

💻
kruegerj
kruegerj

💻
kotso
kotso

💻
jsgh
jsgh

💻
jkbzh
jkbzh

💻📖
itaxer
itaxer

💻
dwpaulx
dwpaulx

💻
ahouston
ahouston

💻
xavloose
xavloose

💻
evansa
evansa

💻
eduardomozart
eduardomozart

💻
edewillians10
edewillians10

💻
dimaslv
dimaslv

💻👀
simfishing
simfishing

💻
duhow
duhow

💻
dschall
dschall

💻
dschultzca
dschultzca

💻
kripper
kripper

💻
3bars
3bars

💻
kornrunner
kornrunner

💻
carryel
carryel

💻
dabeani
dabeani

💻
xubowin
xubowin

💻
barreljan
barreljan

💻👀
athos-ribeiro
athos-ribeiro

💻
apinheiro
apinheiro

💻
sashashura
sashashura

💻
A200K
A200K

💻
k0pak4
k0pak4

💻
TheBlueMatt
TheBlueMatt

💻
mchorsley
mchorsley

💻👀
luismrsilva
luismrsilva

💻
daniel-lucio
daniel-lucio

💻
Luhrel
Luhrel

💻
stslayer1
stslayer1

💻
KrisShannon
KrisShannon

💻
devsibwarra
devsibwarra

💻👀
kersten-lohmeyer
kersten-lohmeyer

💻
Harry-Junhua-Huang
Harry-Junhua-Huang

💻
jsoref
jsoref

💻⚠️👀
JonBogan
JonBogan

💻📖
jayaich
jayaich

💻
jab60
jab60

💻
jkrinke
jkrinke

💻
JamesTilt
JamesTilt

💻
neclimdul
neclimdul

💻
hmorandell
hmorandell

💻
gdsotirov
gdsotirov

💻
inode64
inode64

💻
00gh
00gh

👀
Dmitrii
Dmitrii

👀
Patrick
Patrick

💻🛡️📖🌍
Daniel Nylander
Daniel Nylander

💻🌍
Anton Zhuravlev
Anton Zhuravlev

💻🌍
John Horne
John Horne

💻🌍
Vladyslav V. Prodan
Vladyslav V. Prodan

💻🌍
Ronny Preiss
Ronny Preiss

💻🌍
Rostyslav Haitkulov
Rostyslav Haitkulov

💻🌍
Nicolas BUTIN
Nicolas BUTIN

💻🌍
olafhering
olafhering

💻
Mojo-OG
Mojo-OG

💻
abdulm5
abdulm5

💻

This project follows the all-contributors specification. Contributions of any kind are welcome.


License

Cacti is licensed under the GNU General Public License v2.0.

See LICENSE for details.

Copyright (c) 2004-2026 The Cacti Group, Inc.