{"id":15031259,"url":"https://github.com/cacti/cacti","last_synced_at":"2025-05-14T03:11:04.573Z","repository":{"id":26012901,"uuid":"29455529","full_name":"Cacti/cacti","owner":"Cacti","description":"Cacti ™","archived":false,"fork":false,"pushed_at":"2025-05-08T10:57:07.000Z","size":277942,"stargazers_count":1716,"open_issues_count":164,"forks_count":414,"subscribers_count":120,"default_branch":"develop","last_synced_at":"2025-05-08T11:43:23.407Z","etag":null,"topics":["cacti","cacti-community","cacti-framework","data-gathering","graph","graph-templating","network-discovery","php","rrd-files","rrdtool"],"latest_commit_sha":null,"homepage":"http://www.cacti.net","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cacti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"support.php","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["cacti","netniV"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2015-01-19T05:36:15.000Z","updated_at":"2025-05-08T10:57:11.000Z","dependencies_parsed_at":"2024-01-13T20:36:48.711Z","dependency_job_id":"93185006-7ad9-4154-931a-b1019029dd6b","html_url":"https://github.com/Cacti/cacti","commit_stats":null,"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cacti%2Fcacti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cacti%2Fcacti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cacti%2Fcacti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cacti%2Fcacti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cacti","download_url":"https://codeload.github.com/Cacti/cacti/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059515,"owners_count":22007770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cacti","cacti-community","cacti-framework","data-gathering","graph","graph-templating","network-discovery","php","rrd-files","rrdtool"],"created_at":"2024-09-24T20:15:18.122Z","updated_at":"2025-05-14T03:10:59.561Z","avatar_url":"https://github.com/Cacti.png","language":"PHP","funding_links":["https://github.com/sponsors/cacti","https://github.com/sponsors/netniV"],"categories":[],"sub_categories":[],"readme":"# Cacti ™\n\n[![Cacti Commit Audit](https://github.com/Cacti/cacti/actions/workflows/syntax.yml/badge.svg)](https://github.com/Cacti/cacti/actions/workflows/syntax.yml)\n[![Project Status](http://opensource.box.com/badges/active.svg)](http://opensource.box.com/badges)\n[![Translation Status](https://translate.cacti.net/widgets/cacti/-/core/svg-badge.svg)](https://translate.cacti.net\n\"Translation Status\")\n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/cacti/cacti.svg)](http://isitmaintained.com/project/cacti/cacti\n\"Average time to resolve an issue\")\n[![Percentage of open issues](http://isitmaintained.com/badge/open/cacti/cacti.svg)](http://isitmaintained.com/project/cacti/cacti\n\"Percentage of issues still open\")\n\n-----------------------------------------------------------------------------\n\n# Welcome to the Cacti GitHub Site!\n\n## Introduction\n\nWe currently have two functioning versions of Cacti on this site, and several\nCacti plugins supported by The Cacti Group.  Our current long lived version\nof Cacti in the `1.2.x` branch.  The current release version of this branch\nis Cacti 1.2.27.\n\nThis pending maintenance release has several bugs fixes, and significantly more\nwelcomed feature enhancements.  You can review the CHANGELOG for the `1.2.x`\nbranch for more information on that.\n\nAdditionally, we have the `develop` branch.  This is now an active Development\nBranch.  In this branch, we as a team have re-grouped and are introducing several\nnew features.  We hope to be able to deliver a Christmas present for Cacti\nenthusiasts, which will be a Cacti 1.3.0-beta release.  If you want to get\ninvolved earlier, you can simply download the development release and knock\nyourselves out.  The 1.3.0 release will include everything in th 1.2.27\nrelease, as well as several additional features from our roadmap.\n\nSystem requirements vary from Cacti point release to point release.  The matrix\nbelow documents the minimum tool levels for each version.  With our source\ndistribution, all the vendor included packages are pre-packeged and tested\nby the Cacti group, so there is no reason to use package management tools\nto install those dependencies.\n\n| Dependency | Cacti 1.2.x  | Cacti 1.3.x |\n|------------|--------------|-------------|\n| MariaDB    | 5.5+         | 10.2.x+     |\n| MySQL      | 5.5+         | 8.0+        |\n| PHP        | 5.4+         | 8.1+        |\n| RRDtool    | 1.4+         | 1.8+        |\n| Net-SNMP   | 5.5+         | 5.8+        |\n\nFor Cacti 1.2.x, it is reasonable to run with RHEL/CentOS 7 or equivalent.  However,\nfor Cacti 1.3.x, it would be better to run on RHEL 9 +, CentOS Stream 9+, or Rocky 9+\nor equivalent as these OS versions makes PHP 8.1+ available via a DNF Stream.  Of course\nUbuntu/Debian is also well supported.\n\nHowever, if you wish to run Cacti 1.3.x on the RHEL/CentOS 7 distribution you may\nbe able to do so if you use the REMI distributions of PHP.  You will also in this case\nhave to build RRDtool 1.9.1+ from source, which is straightforward on any modern\nLinux OS such as Rocky Linux 9.x.\n\nIf you wish to take advantag of dynamic hover over Graphs, you will need RRDtool 1.9.1+.\nHowever, as of January 10, 2025, it has not been released.  So, you will likely need\nto run the develop version until it's released.  Upon release, depending on Tobi's\ndiscretion, the release may be 2.0 or some other version.  So, keep your eye on Github.\n\nDue to the recent oauth2 Email feature enhancement in the develop branch, we were\nforced to increase the minimum PHP version for Cacti 1.3+ from PHP 8.0 to 8.1. So, keep\nthis in mind if you are planning to upgrade and don't already have PHP 8.2+ installed\nand operations.\n\nIn the sections below, you can find some important first steps before installing\neither the Cacti 1.2.x version of the pending Cacti 1.3.x version.  Good luck\nand enjoy Cacti.\n\nMost modern browsers are supported with the exception of ALL Internet Explorer\nversions as of Cacti version 1.2.x.  Do NOT attempt to use Internet Explorer\nof any version with Cacti 1.2.x and above.\n\n# Running Cacti from the `develop` Branch\n\n## IMPORTANT\n\nWhen using source or by downloading the code directly from the repository, it is\nimportant to note that periodically, you may have to rerun the database upgrade\ncli script to bring in new columns.  You can use the --forcever=1.2.22 option\nto assume you are upgrading from an earlier cacti version:\n\n```bash\nphp -q upgrade_database.php --forcever=1.2.22\n```\n\nIf you experience SQL errors in your Cacti log, please open a case in our Cacti\nissue tracker here.  If you are following the recent development, make sure that\nevery time you pull a fresh copy of develop you re-run the database upgrade with\nthe --forcever option.\n\n## Upgrading from Pre-Cacti 1.x Releases\n\nWhen Cacti was first developed nearly 20 years ago, MySQL was not as mature as it\nis now.  When The Cacti Group went about engineering Cacti 1.x, a decision was\nmade to force users to use the InnoDB storage engine for many of the Tables.  This\nwas done as the InnoDB storage engine provides a better user experience when your\nweb site has several concurrent logins.  Though a little slower, it also provides\ngreater resiliency for the developers.\n\nWith that said, there are several changes that you MUST perform to MySQL/MariaDB\nbefore you upgrade, and a service restart is required.  Depending on your release\nof MariaDB or MySQL, the following settings will either be required, or already\nenabled as default:\n\n```\n[mysqld]\n\n# required for multiple language support\ncharacter-set-server = utf8mb4\ncollation-server = utf8mb4_unicode_ci\n\n# Memory tunables - Cacti provides recommendations at upgrade time\nmax_heap_table_size = XXX\nmax_allowed_packet = 500M\ntmp_table_size = XXX\njoin_buffer_size = XXX\nsort_buffer_size = XXX\n\n# important for compatibility\nsql_mode=NO_ENGINE_SUBSTITUTION\n\n# innodb settings - Cacti provides recommendations at upgrade time\ninnodb_buffer_pool_instances = XXX\ninnodb_flush_log_at_trx_commit = 2\ninnodb_buffer_pool_size = XXX\ninnodb_sort_buffer_size = XXX\ninnodb_doublewrite = ON\n\n# required\ninnodb_file_per_table = ON\ninnodb_file_format = Barracuda\ninnodb_large_prefix = 1\n\n# not all version support\ninnodb_flush_log_at_timeout = 3\n\n# for SSD's/NVMe\ninnodb_read_io_threads = 32\ninnodb_write_io_threads = 16\ninnodb_io_capacity = 10000\ninnodb_io_capacity_max = 20000\ninnodb_flush_method = O_DIRECT\n```\n\nThe *required* settings are very important.  Otherwise, you will encounter issues\nupgrading.  The settings with XXX, Cacti will provide a recommendation at upgrade time.\nIt is not out of the ordinary to have to restart MySQL/MariaDB during the upgrade\nto tune these settings.  Please make special note of this before you begin your upgrade.\n\nBefore you upgrade, you should make these required changes, then restart MySQL/MariaDB.\nAfter that, you can save yourself some time and potential errors by running the following\nscripts (assuming you are using bash):\n\n```\nfor table in `mysql -e \"SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema='cacti' AND engine!='MEMORY'\" cacti | grep -v TABLE_NAME`;\ndo\n   echo \"Converting $table\";\n   mysql -e \"ALTER TABLE $table ENGINE=InnoDB ROW_FORMAT=Dynamic CHARSET=utf8mb4\" cacti;\ndone\n```\n\nThis will convert any tables that are either InnoDB or MyISAM to Barracuda file format, dynamic row format and utf8mb4.  Note, that if you have been using MySQL or MariaDB without innodb_file_per_table set to on, you might be better in backing up your database, resetting InnoDB by removing your ib* files in the /var/lib/mysql directory, and after which restoring your database and MySQL/MariaDB tables and permissions.  Before you take such a step, you should always practice on a test server until you feel comfortable with the change.\n\nGood luck, and enjoy Cacti!\n\n## Running Database Upgrade Script\n\n```\nsudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`\n```\n\n## Updating Cacti Version in Database\n\n```\nupdate version set cacti = '1.1.38';\n```\n\n***Note:*** Change the above version to the correct version or risk the\ninstaller upgrading from a previous version.\n\n-----------------------------------------------------------------------------\n\n# About Cacti\n\nCacti is a complete network graphing solution designed to harness the power of\nRRDtool's data storage and graphing functionality providing the following\nfeatures:\n\n- Remote and local data collectors\n\n- Device discovery\n\n- Automation of device and graph creation\n\n- Graph and device templating\n\n- Custom data collection methods\n\n- User, group and domain access controls\n\nAll of this is wrapped in an intuitive, easy to use interface that makes sense\nfor both LAN-sized installations and complex networks with thousands of devices.\n\nDeveloped in the early 2000s by Ian Berry as a high school project, it has been\nused by thousands of companies and enthusiasts to monitor and manage their\nEnterprise Networks and Data Centers.\n\n## Requirements\n\nCacti should be able to run on any Linux, UNIX, or Windows based operating\nsystem with the following requirements:\n\n- PHP 7.4+\n\n- MySQL 5.6+\n\n- RRDtool 1.3+, 1.5+ recommended\n\n- NET-SNMP 5.5+\n\n- Web Server with PHP support\n\nPHP Must also be compiled as a standalone cgi or cli binary. This is required\nfor data gathering via cron.\n\n### php-snmp\n\nWe mark the php-snmp module as optional.  So long as you are not using ipv6\ndevices, or using snmpv3 engine IDs or contexts, then using php-snmp should be\nsafe.  Otherwise, you should consider uninstalling the php-snmp module as it\nwill create problems.  We are aware of the problem with php-snmp and looking to\nget involved in the php project to resolve these issues.\n\n### RRDtool\n\nRRDtool is available in multiple versions and a majority of them are supported\nby Cacti. Please remember to confirm your Cacti settings for the RRDtool version\nif you having problem rendering graphs.\n\n## Documentation\n\nDocumentation is available with the Cacti releases and also available for\nviewing on the [Documentation\nRepository](https://github.com/Cacti/documentation/blob/develop/README.md).\n\n## Contribute\n\nCheck out the main [Cacti](http://www.cacti.net) web site for downloads, change\nlogs, release notes and more!\n\n### Community forums\n\nGiven the large scope of Cacti, the forums tend to generate a respectable amount\nof traffic. Doing your part in answering basic questions goes a long way since\nwe cannot be everywhere at once. Contribute to the Cacti community by\nparticipating on the [Cacti Community Forums](http://forums.cacti.net).\n\n### GitHub Documentation\n\nGet involved in creating and editing Cacti Documentation!  Fork, change and\nsubmit a pull request to help improve the documentation on\n[GitHub](https://github.com/cacti/documentation).\n\n### GitHub Development\n\nGet involved in development of Cacti! Join the developers and community on\n[GitHub](https://github.com/cacti)!\n\n-----------------------------------------------------------------------------\n\n## Functionality\n\n### Data Sources\n\nCacti handles the gathering of data through the concept of data sources. Data\nsources utilize input methods to gather data from devices, hosts, databases,\nscripts, etc...  The possibilities are endless as to the nature of the data you\nare able to collect.  Data sources are the direct link to the underlying RRD\nfiles; how data is stored within RRD files and how data is retrieved from RRD\nfiles.\n\n### Graphs\n\nGraphs, the heart and soul of Cacti, are created by RRDtool using the defined\ndata sources definition.\n\n### Templating\n\nBringing it all together, Cacti uses and extensive template system that allows\nfor the creation and consumption of portable templates. Graph, data source, and\nRRA templates allow for the easy creation of graphs and data sources out of the\nbox.  Along with the Cacti community support, templates have become the standard\nway to support graphing any number of devices in use in today computing and\nnetworking environments.\n\n### Data Collection (The Poller)\n\nLocal and remote data collection support with the ability to set collection\nintervals. Check out ***Data Source Profile*** with in Cacti for more\ninformation. Data Source Profiles can be applied to graphs at creation time or\nat the data template level.\n\nRemote data collection has been made easy through replication of resources to\nremote data collectors. Even when connectivity to the main Cacti installation is\nlost from remote data collector, it will store collected data until connectivity\nis restored. Remote data collection only requires MySQL and HTTP/HTTPS access\nback to the main Cacti installation location.\n\n### Network Discovery and Automation\n\nCacti provides administrators a series of network automation functionality in\norder to reduce the time and effort it takes to setup and manage devices.\n\n- Multiple definable network discovery rules\n\n- Automation templates that specify how devices are configured\n\n### Plugin Framework\n\nCacti is more than a network monitoring system, it is an operations framework\nthat allows the extension and augmentation of Cacti functionality. The Cacti\nGroup continues to maintain an assortment of plugins.  If you are looking to add\nfeatures to Cacti, there is quite a bit of reference material to choose from on\nGitHub.\n\n### Dynamic Graph Viewing Experience\n\nCacti allows for many runtime augmentations while viewing graphs:\n\n- Dynamically loaded tree and graph view\n\n- Searching by string, graph and template types\n\n- Viewing augmentation\n\n- Simple time span adjustments\n\n- Convenient sliding time window buttons\n\n- Single click realtime graph option\n\n- Easy graph export to csv\n\n- RRA view with just a click\n\n### User, Groups and Permissions\n\nSupport for per user and per group permissions at a per realm (area of Cacti),\nper graph, per graph tree, per device, etc... The permission model in Cacti is\nrole based access control (RBAC) to allow for flexible assignment of\npermissions. Support for enforcement of password complexity, password age and\nchanging of expired passwords.\n\n## RRDtool Graph Options\n\nCacti supports most RRDtool graphing abilities including:\n\n### Graph Options\n\n- Full right axis\n\n- Shift\n\n- Dash and dash offset\n\n- Alt y-grid\n\n- No grid fit\n\n- Units length\n\n- Tab width\n\n- Dynamic labels\n\n- Rules legend\n\n- Legend position\n\n### Graph Items\n\n- VDEFs\n\n- Stacked lines\n\n- User definable line widths\n\n- Text alignment\n\n-----------------------------------------------------------------------------\nCopyright (c) 2004-2025 - The Cacti Group, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcacti%2Fcacti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcacti%2Fcacti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcacti%2Fcacti/lists"}