https://github.com/cacti/cacti
Cacti ™
https://github.com/cacti/cacti
cacti cacti-community cacti-framework data-gathering graph graph-templating network-discovery php rrd-files rrdtool
Last synced: 18 days ago
JSON representation
Cacti ™
- Host: GitHub
- URL: https://github.com/cacti/cacti
- Owner: Cacti
- License: gpl-2.0
- Created: 2015-01-19T05:36:15.000Z (over 11 years ago)
- Default Branch: develop
- Last Pushed: 2025-05-08T10:57:07.000Z (about 1 year ago)
- Last Synced: 2025-05-08T11:43:23.407Z (about 1 year ago)
- Topics: cacti, cacti-community, cacti-framework, data-gathering, graph, graph-templating, network-discovery, php, rrd-files, rrdtool
- Language: PHP
- Homepage: http://www.cacti.net
- Size: 265 MB
- Stars: 1,716
- Watchers: 120
- Forks: 414
- Open Issues: 164
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Support: support.php
Awesome Lists containing this project
README
# Cacti
[](https://github.com/Cacti/cacti/actions/workflows/syntax.yml)
[](https://opensource.box.com/badges)
[](https://translate.cacti.net)
[](https://isitmaintained.com/project/cacti/cacti)
[](https://isitmaintained.com/project/cacti/cacti)
---
## 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](https://github.com/Cacti/cacti/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.
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:
```bash
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.
- Use `composer update` only when intentionally refreshing dependency versions.
Install dependencies:
```bash
composer install
```
Windows users may need:
```bash
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:
```bash
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
```
If needed, force a re-upgrade from an earlier version:
```bash
php -q cli/upgrade_database.php --forcever=
```
Audit schema consistency:
```bash
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
---
## License
Cacti is licensed under the GNU General Public License v2.0.
See [LICENSE](./LICENSE) for details.
Copyright (c) 2004-2026 The Cacti Group, Inc.