mirror of
https://github.com/Cacti/documentation.git
synced 2026-10-23 03:26:44 +09:00
docs: fix stale version requirements and dead/insecure links (#208)
* docs: update stale PHP/MySQL/MariaDB version requirements - Requirements.md: PHP 5.4 -> 8.1 (matches 1.2.31+ requirement note) - Requirements.md: MySQL 5.6 -> 5.7, MariaDB 5.5 -> 10.2 (current minimums) - Requirements.md: MySQL section header updated to >= 5.7 / 10.2 - Requirements.md, Install-Under-CentOS_LAMP.md, Install-Under-CentOS_LEMP.md, Installing-Under-Windows.md: comment out innodb_file_format and innodb_large_prefix (removed in MySQL 8.0 / MariaDB 10.3+) Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: upgrade http:// links to https:// and fix dead wiki URLs - Upgrade http:// to https:// in 8 files: General-Installing-Instructions.md, Graph-Templates.md, How-To-SSH-Tunnels.md, Plugin-Development.md, Standards-Code-Formatting.md, Templates.md, Upgrading-Cacti-Under-Windows.md - Replace two dead docs.cacti.net wiki links: How-To-SSH-Tunnels.md: old wiki SNMP guide -> Net-SNMP man page Plugin-Syslog.md: dead plugin:syslog.config -> plugin_syslog repo Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: fix technically inaccurate MySQL configuration recommendations - innodb_additional_mem_pool_size: removed in MySQL 5.7.4 / MariaDB 10.0; replaced with removal notice in Requirements.md and comments in Install-Under-CentOS_LAMP.md and Install-Under-CentOS_LEMP.md - max_heap_table_size: clarify ">= 5" means ">= 5% of system RAM" - innodb_buffer_pool_size: clarify ">= 25" means ">= 25% of system RAM" Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: add missing required PHP extensions to Requirements.md Add dom, mysqlnd, pcntl, Phar, and sqlite3 — all declared as required in composer.json but absent from the module list. pcntl is Linux-only (process control for the poller). Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: fix 36 spelling errors across 19 documentation files Corrections detected by codespell: - somone->someone, Walkthough->Walkthrough, GUAGE->GAUGE - asociate->associate, messege->message, therefor->therefore - get's->gets, Proxys->Proxies, paralelisation->parallelization - parms->params (6 instances in script data query examples) - finialise->finalise, buildin->built-in, everytime->every time - Unistall->Uninstall, resiliant->resilient, build-in->built-in - requriments->requirements (2 instances), explanitory->explanatory (3 instances) - fro->for, invole->involve, reulting->resulting - stauts->status, tge->the Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * ci: add codespell spelling check workflow for documentation Adds GitHub Actions workflow that runs codespell==2.4.1 on all Markdown files on every push/PR to main. Also adds .codespell.cfg to skip binary and generated files (JSON, shell scripts, HTML, images). Update .gitignore to allow .github directory (was blocked by .git* glob). Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: improve voice, consistency, and note formatting across 10 files - Convert passive/impersonal constructions to active voice - Standardize NOTE -> Note in blockquotes for consistency - Reformat inline IMPORTANT/Note callouts as blockquotes - Fix awkward phrasing in LXC container notes - Consolidate fragmented note bullets into single blockquote Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: fix technical accuracy and correct typos across 10 files - Requirements.md: clarify Composer is for source/develop installs only; RRDtool minimum updated to 1.5+ (1.8+ for 1.3.x); php-snmp section rewritten to describe selective fallback behavior; SELinux/AppArmor advice reworded to recommend policy exceptions over blanket disable - Spine.md: fix PHP Script Server range (10 -> 15); fix 'senstivive' and 'Davices' typos - Trees.md: fix broken table rows split across lines; 'Sporting' -> 'Sorting' - Data-Sources.md: restructure storage table to standard 3-column layout; fix '19b' unit typo -> '19kb' - How-To-SNMP-Custom-Script.md: convert bold/backtick commands to proper fenced code blocks; fix 'intex' and 'BNSMPD' typos - Plugins.md: fix 'onfiguration' typo; fix YouTube thumbnail http -> https; fix 'Tuturial' typo - Standards-Security.md: fix 'invalidate' -> 'invalid' - template_apache_config.md: fix 'apcache2' -> 'apache2' - device-template-specific-proxmox.md: replace service file edit with drop-in approach; remove ProtectSystem=off/ProtectHome=off; add note on minimal required systemd overrides - resource/xml/query_interface_traffic.php: http -> https URL Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs: rename CentOS install guides to Enterprise Linux; fix grammar, logic, and security flaws - Rename Install-Under-CentOS_LAMP.md → Install-Under-Enterprise-Linux-LAMP.md - Rename Install-Under-CentOS_LEMP.md → Install-Under-Enterprise-Linux-LEMP.md - Update README.md ToC links to match new filenames and correct labels LAMP fixes: - Title updated to reflect RHEL/Rocky Linux/AlmaLinux coverage - Fix step numbering: "2.Install" / "3.Enable" missing space after number - Spine build deps: restructure for EL7/EL8/EL9+ separately; EL8 was missing package install after repo enable; EL9+ uses 'crb' not 'powertools' - SELinux URL: fix quadruple-slash typo; switch to English wiki URL LEMP fixes: - Title: "CentOS 7" → "Enterprise Linux (RHEL / Rocky Linux / AlmaLinux)" - TLS: remove TLSv1 and TLSv1.1 (RFC 8996 prohibited, fails OpenSSL 3.x); set ssl_protocols TLSv1.2 TLSv1.3 - Ciphers: remove DH+3DES (Sweet32 / CVE-2016-2183) - HTTP redirect: uncomment return 301 (comment claiming nginx lacks support for 'return' has been wrong since nginx 0.8 / 2009) - PHP location block: fix 'alias' → 'root' (alias breaks $document_root in fastcgi_param SCRIPT_FILENAME); add missing semicolon after index directive - Cron: poller path was /var/www/html/cacti but install target throughout this guide is /usr/share/nginx/html/cacti — align them - DB: split GRANT...IDENTIFIED BY into CREATE USER + GRANT (IDENTIFIED BY on GRANT removed in MySQL 8.0 / MariaDB 10.5.2) - Fix comment typo: "Compression increases performance0" → remove trailing 0 - SELinux URL: fix quadruple-slash typo README.md: - Update section 3.1 and 3.2 links to new filenames - Correct labels from "CentOS 7" to "Enterprise Linux" - Fix "Reports Admistrative Interface" → "Administrative" - Fix "requriments" (×2) → "requirements" * docs: remove Install-Under-CentOS_LAMP.md (superseded by Install-Under-Enterprise-Linux-LAMP.md) * docs: remove Install-Under-CentOS_LEMP.md (superseded by Install-Under-Enterprise-Linux-LEMP.md) * docs: update README ToC links and fix typos - Update 3.1 and 3.2 links from CentOS to Enterprise Linux filenames - Correct labels: "CentOS 7" → "Enterprise Linux (RHEL/Rocky/AlmaLinux)" - Fix "Reports Admistrative" → "Reports Administrative" - Fix "requriments" (×2) → "requirements" * docs: fix grammar, logic, and technical errors in remaining install/upgrade guides Installing-Under-Windows.md: - Replace php_mysql.dll with php_pdo_mysql.dll (php_mysql removed in PHP 7.0) - Remove IIS ISAPI steps referencing php8isapi.dll (ISAPI dropped in PHP 8.0); replace with FastCGI instructions via php-cgi.exe - Remove NO_AUTO_CREATE_USER from sql_mode (removed MySQL 8.0, breaks startup) - sort_buffer_size = 200M → 32M with caveat (per-session; 200M causes OOM under load) - Fix step numbering gaps: main list 5→8, IIS 3→5, Finishing 5→8 - "you will have to user 8.3 notation" → "use" - "c:cygwin" → "c:\cygwin" (missing backslash) - "it's subfolders" → "its subfolders" - "A anm example" → "An example" - "verify/udate" → "verify/update" Installing-Under-Ubuntu-Debian.md: - Cron user: apache → www-data (apache user does not exist on Ubuntu/Debian) - CREATE DATABASE: use utf8mb4 directly; remove redundant ALTER DATABASE - php8.1-mbstring listed twice in apt-get install; deduplicated - "may received" → "may receive" - Note php8.1 is EOL; recommend checking current supported release Upgrading-Cacti-Under-Windows.md: - Fix all steps numbered 1. → proper sequential numbering (1–10) - Remove hardcoded MySQL 5.7 path; use generic %MYSQL_HOME% note Upgrading-Cacti-Under-FreeBSD.md: - mysqldump: remove contradictory -l / --lock-tables=false flags; replace with --single-transaction (correct for InnoDB, no locking) How-To-SSH-Tunnels.md: - Add prominent note: SSH -L is TCP-only; standard SNMP uses UDP; this guide requires TCP transport configured on snmpd and does not work for most network devices - Fix unclosed code fence after ssh-keygen output block - Replace rc.local persistence with systemd unit (rc.local is deprecated and disabled by default on systemd distros: Ubuntu 16.04+, Debian 9+) - ssh-keygen: recommend ed25519 over RSA * docs: correct PHP 8.1 EOL date, Net-SNMP link, and grammar PHP 8.1 security support ended 31 December 2025, not November 2024. Point the snmpd.conf link at www.net-snmp.org (the sourceforge.io mirror is bot-blocked). Fix 'There a two ways extending' to 'There are two ways to extend'. Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * ci: fix spelling workflow trigger to target develop, not main The repo's default branch is develop; main hasn't moved since 2023. The workflow's push/pull_request filters targeted main, so it never ran on any PR opened against develop. Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> --------- Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
This commit is contained in:
1 parent
c707c76cf4
commit
cb29d10426
43 files changed
+888
-868
No files matched your search
@@ -0,0 +1,6 @@
|
||||
[codespell]
|
||||
# Skip binary files and images (some image filenames contain historical typos
|
||||
# that cannot be renamed without breaking existing markdown links)
|
||||
skip = *.png,*.jpg,*.jpeg,*.gif,*.svg,*.pdf,*.ico,*.zip,*.json,*.sh,*.html
|
||||
# Known false positives or intentional abbreviations
|
||||
ignore-words-list = parms,nd,ba,te
|
||||
@@ -0,0 +1,23 @@
|
||||
name: Spelling
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [develop]
|
||||
pull_request:
|
||||
branches: [develop]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
codespell:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
|
||||
- name: Install codespell
|
||||
run: pip install codespell==2.4.1
|
||||
|
||||
- name: Run codespell
|
||||
run: codespell --config .codespell.cfg
|
||||
+3
-1
@@ -11,5 +11,7 @@ manual/*
|
||||
# Ignore any CertBot files
|
||||
.well-known
|
||||
.well-known/*
|
||||
# Ignore any Git/GitHub files
|
||||
# Ignore Git internals but allow .github directory for CI workflows
|
||||
.git*
|
||||
!.github
|
||||
!.github/**
|
||||
+1
-1
@@ -13,7 +13,7 @@ of **Data Collectors** they are:
|
||||
firewall or security policies. The **Remote Data Collectors** are
|
||||
also referred to as **Remote Pollers**.
|
||||
|
||||
Due to the design of the Cacti **Remote Data Collector**, somone at the
|
||||
Due to the design of the Cacti **Remote Data Collector**, someone at the
|
||||
remote site, can actually login to that **Data Collector** and interact
|
||||
with it as if their **Data Collector** was the **Main Data Collector**.
|
||||
Additionally, if for some reason the **Main Data Collector** becomes
|
||||
|
||||
@@ -169,7 +169,7 @@ be executed as the user the data gatherer runs as. Sometimes a script may work
|
||||
correctly when executed as root, but fails due to permissions problems when
|
||||
executed as a less privileged user.
|
||||
|
||||
## Walkthough
|
||||
## Walkthrough
|
||||
|
||||
You can find a detailed example of how to create a complete Graph from
|
||||
simple command output in the following example
|
||||
|
||||
@@ -30,7 +30,7 @@ see
|
||||
|
||||
## GAUGE
|
||||
|
||||
GUAGE is for things like temperatures or number of people in a room or the value
|
||||
GAUGE is for things like temperatures or number of people in a room or the value
|
||||
of a RedHat share.
|
||||
|
||||
## COUNTER
|
||||
@@ -116,7 +116,7 @@ documentation page.
|
||||

|
||||
|
||||
What is also an important setting is the internal data source name. This will be
|
||||
used to asociate the Data source with the Graph template. so be sure to name is
|
||||
used to associate the Data source with the Graph template. so be sure to name is
|
||||
something that is recognizable.
|
||||
|
||||

|
||||
|
||||
+15
-9
@@ -28,7 +28,7 @@ to management then clicking on devices.
|
||||
|
||||
You can also see the total amount of data sources by checking the poller stats
|
||||
on the system. Click the log tab and filter by stats and lookout for the below
|
||||
messege
|
||||
message
|
||||
|
||||
```console
|
||||
2019/05/24 17:21:11 - SYSTEM STATS: Time:9.5913 Method:spine Processes:2 Threads:2 Hosts:14 HostsPerProcess:7 DataSources:162 RRDsProcessed:117
|
||||
@@ -45,14 +45,20 @@ devices. e.g. 1 minute or 5 Minute polls
|
||||
Here is the approximate amount of storage you can expect to consume per data
|
||||
source
|
||||
|
||||
| Polling time | Retention | File size | Polling time | Retention | File size |
|
||||
| -----------: | --------- | --------: | -----------: | --------- | --------: |
|
||||
| 30 second | Daily | 48kb | 30 second | Weekly | 43kb |
|
||||
| 30 second | Monthly | 46kb | 30 second | Yearly | 140kb |
|
||||
| 1 minute | Daily | 93kb | 1 minute | Weekly | 45kb |
|
||||
| 1 minute | Monthly | 47kb | 1 minute | Yearly | 140kb |
|
||||
| 5 minute | Daily | 19b | 5 minute | Weekly | 22kb |
|
||||
| 5 minute | Monthly | 25kb | 5 minute | Yearly | 26kb |
|
||||
| Polling time | Retention | File size |
|
||||
| -----------: | --------- | --------: |
|
||||
| 30 second | Daily | 48kb |
|
||||
| 30 second | Weekly | 43kb |
|
||||
| 30 second | Monthly | 46kb |
|
||||
| 30 second | Yearly | 140kb |
|
||||
| 1 minute | Daily | 93kb |
|
||||
| 1 minute | Weekly | 45kb |
|
||||
| 1 minute | Monthly | 47kb |
|
||||
| 1 minute | Yearly | 140kb |
|
||||
| 5 minute | Daily | 19kb |
|
||||
| 5 minute | Weekly | 22kb |
|
||||
| 5 minute | Monthly | 25kb |
|
||||
| 5 minute | Yearly | 26kb |
|
||||
|
||||
### Viewing all Data sources by device
|
||||
|
||||
|
||||
+2
-3
@@ -223,9 +223,8 @@ shell> crontab -e -u cactiuser
|
||||
|
||||
## Not NaN, but 0 (zero) values
|
||||
|
||||
Pay attention to custom scripts. It is required, that external commands called
|
||||
from there are in the `$PATH` of the cactiuser running the poller. It is
|
||||
therefore recommended to provide `/full/path/to/external/command`
|
||||
Pay attention to custom scripts. External commands called from there must be in the `$PATH` of the cactiuser
|
||||
running the poller. Use `/full/path/to/external/command` to avoid ambiguity.
|
||||
|
||||
User "criggie" reported an issue with running smartctl. It was complaining "you
|
||||
are not root" so a quick `chmod +s` on the script fixed that problem.
|
||||
|
||||
+2
-2
@@ -82,7 +82,7 @@ you have specified.
|
||||
|
||||
## Additional Important Options
|
||||
|
||||
There are some additional options that you should note before starting to use Cacti.
|
||||
There are some additional options to be aware of before starting to use Cacti.
|
||||
They include the following:
|
||||
|
||||
- **Device Threads** - If your device is far away, and can tolerate multiple threads
|
||||
@@ -91,7 +91,7 @@ They include the following:
|
||||
- **Maximum OIDs Per Get Request** - Otherwise known as MaxOID's, this SNMP option
|
||||
will allow the SNMP client to gather more metrics per get request. Please keep
|
||||
in mind that the higher you make this number, the longer a SNMP respond may take.
|
||||
So, you have to be sensitive about the SNMP timeout as the number get's larger.
|
||||
So, you have to be sensitive about the SNMP timeout as the number gets larger.
|
||||
Since, by default SNMP is generally collected over UDP, you will also be limited
|
||||
in the number of responses depending on how many routers or VPN's you traverse
|
||||
to reach a device. When traversing VPN connections, many VPN's limit the MTU
|
||||
|
||||
@@ -159,9 +159,9 @@ systemctl enable snmpd
|
||||
systemctl restart snmpd
|
||||
```
|
||||
|
||||
Though there are many more advanced settings available in net-snmp, it generally
|
||||
recommended to keep a simpler configuration unless your information security
|
||||
policies require more stringent settings.
|
||||
Though there are many more advanced settings available in net-snmp, keep a
|
||||
simpler configuration unless your information security policies require more
|
||||
stringent settings.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ system startup.
|
||||
|
||||
### A special Note on installing Cacti in LXC Containers such as the ones found on Proxmox
|
||||
|
||||
It is recommended to create a privileged container you may need to update your containers config file with
|
||||
We recommend creating a privileged container. You may need to update your container's config file with
|
||||
|
||||
```console
|
||||
lxc.apparmor.profile: unconfined
|
||||
@@ -173,7 +173,7 @@ chmod +s /usr/local/bin/spine
|
||||
|
||||
Verify that the modules are installed and configured correctly. There are
|
||||
several ways to do so - consult
|
||||
[PHP configuration instructions](http://www.php.net/manual/en/configuration.php)
|
||||
[PHP configuration instructions](https://www.php.net/manual/en/configuration.php)
|
||||
for a complete description.
|
||||
|
||||
It is imperative that you set the `date.timezone` in your `/etc/php.ini`, or
|
||||
@@ -408,7 +408,7 @@ DB_Password cacti
|
||||
DB_Port 3306
|
||||
```
|
||||
|
||||
### Considerations when using Proxys in front of Cacti (Cacti 1.2.23+)
|
||||
### Considerations when using Proxies in front of Cacti (Cacti 1.2.23+)
|
||||
|
||||
For optimal security, only specify the HTTP headers that are set by your proxy
|
||||
software. to prevent unauthorized access, These can be set by editing the
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ and by what means. Determines if the Graph will have fixed upper and lower limi
|
||||
|
||||
Each of these sections are displayed below for reference. For more information
|
||||
on how to use these options, please visit the [RRDtool
|
||||
Website](http://RRDtool.org).
|
||||
Website](https://RRDtool.org).
|
||||
|
||||
The *Graph Items* make up what is draw within the canvas of the Graph. There
|
||||
are several *Graph Item* types including:
|
||||
|
||||
@@ -109,7 +109,7 @@ do
|
||||
done
|
||||
```
|
||||
|
||||
Run script and wait. My experience - 5200 files took 100 minutes without paralelisation. Script will be output sometning like:
|
||||
Run script and wait. My experience - 5200 files took 100 minutes without parallelization. Script will be output sometning like:
|
||||
```console
|
||||
fortigate_1_-_fg200e4q17911506_traffic_in_7317.rrd
|
||||
NOTE: Using Native Arrays due to lack of SQLite.
|
||||
|
||||
@@ -2,45 +2,68 @@
|
||||
|
||||
Some SNMP servers can be extended with custom scripts or programs. The output of the running script can then
|
||||
be read using the OID and can therefore be easily used in Cacti. An example is the thermometer on the USB port.
|
||||
In combination with [Graph a Single SNMP OID](Graph-a-Single-SNMP-OID.md), this is a very simple way to display such data
|
||||
In combination with [Graph a Single SNMP OID](Graph-a-Single-SNMP-OID.md), this is a very simple way to display such data.
|
||||
|
||||
We will show the procedure for the very extensive Net-SNMP and FreeBSD BSNMPD.
|
||||
|
||||
## Linux Net-SNMP
|
||||
Simply add a line to /etc/snmpd.conf and restart snmpd
|
||||
**> extend test /bin/echo hello**
|
||||
|
||||
Result will be here:
|
||||
**> snmpwalk -v2c -c testing 127.0.0.1 nsExtendOutput1**
|
||||
``
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."test" = STRING: hello
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."test" = STRING: hello
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."test" = INTEGER: 1
|
||||
NET-SNMP-EXTEND-MIB::nsExtendResult."test" = INTEGER: 0``
|
||||
Simply add a line to `/etc/snmpd.conf` and restart snmpd:
|
||||
|
||||
For Cacti you need numeric OID, you can use snmptranslate:
|
||||
**> snmptranslate -On NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"test\"**
|
||||
```console
|
||||
extend test /bin/echo hello
|
||||
```
|
||||
|
||||
The result is an OID that we can use:
|
||||
``.1.3.6.1.4.1.8072.1.3.2.3.1.1.4.116.101.115.116``
|
||||
The result will be here:
|
||||
|
||||
```console
|
||||
snmpwalk -v2c -c testing 127.0.0.1 nsExtendOutput1
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."test" = STRING: hello
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."test" = STRING: hello
|
||||
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."test" = INTEGER: 1
|
||||
NET-SNMP-EXTEND-MIB::nsExtendResult."test" = INTEGER: 0
|
||||
```
|
||||
|
||||
## FreeBSD BNSMPD
|
||||
You need install bsnmp-ucd
|
||||
**> pkg install bsnmp-ucd**
|
||||
For Cacti you need a numeric OID. Use snmptranslate:
|
||||
|
||||
Add these lines to /etc/snmpd.config and restart bsnmpd
|
||||
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"
|
||||
%ucd
|
||||
extNames.0 = "first command"
|
||||
extCommand.0 = "/path/to/script.sh"
|
||||
extNames.1 = "second command"
|
||||
extCommand.1 = "/path/to/script.sh param1"
|
||||
```console
|
||||
snmptranslate -On NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."test"
|
||||
```
|
||||
|
||||
Name and result of first command have the same intex:
|
||||
**> snmpwalk -v2c -c testing 127.0.0.1 .1.3.6.1.4.1.2021.8.1.2.0**
|
||||
``.1.3.6.1.4.1.2021.8.1.2.0 = STRING: first command``
|
||||
The result is an OID that we can use:
|
||||
|
||||
**> snmpwalk -v2c -c testing 127.0.0.1 .1.3.6.1.4.1.2021.8.1.101.0**
|
||||
``.1.3.6.1.4.1.2021.8.1.101.0 = STRING: 15``
|
||||
```console
|
||||
.1.3.6.1.4.1.8072.1.3.2.3.1.1.4.116.101.115.116
|
||||
```
|
||||
|
||||
## FreeBSD BSNMPD
|
||||
|
||||
Install bsnmp-ucd:
|
||||
|
||||
```console
|
||||
pkg install bsnmp-ucd
|
||||
```
|
||||
|
||||
Add these lines to `/etc/snmpd.config` and restart bsnmpd:
|
||||
|
||||
```console
|
||||
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"
|
||||
%ucd
|
||||
extNames.0 = "first command"
|
||||
extCommand.0 = "/path/to/script.sh"
|
||||
extNames.1 = "second command"
|
||||
extCommand.1 = "/path/to/script.sh param1"
|
||||
```
|
||||
|
||||
The name and result of the first command share the same index:
|
||||
|
||||
```console
|
||||
snmpwalk -v2c -c testing 127.0.0.1 .1.3.6.1.4.1.2021.8.1.2.0
|
||||
.1.3.6.1.4.1.2021.8.1.2.0 = STRING: first command
|
||||
|
||||
snmpwalk -v2c -c testing 127.0.0.1 .1.3.6.1.4.1.2021.8.1.101.0
|
||||
.1.3.6.1.4.1.2021.8.1.101.0 = STRING: 15
|
||||
```
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
+75
-42
@@ -1,109 +1,142 @@
|
||||
# How To Setup SSH Tunnels to graph a remote Unix server
|
||||
# How To Set Up SSH Tunnels to Graph a Remote Unix Server
|
||||
|
||||
Howto created by `fmangeant` at [Cacti
|
||||
Forum](http://forums.cacti.net/viewtopic.php?t=24960)
|
||||
Howto created by `fmangeant` at the
|
||||
[Cacti Forum](https://forums.cacti.net/viewtopic.php?t=24960)
|
||||
|
||||
This HowTo will explain how to use SSH tunnels to graph a Unix server that
|
||||
isn't directly reachable by your Cacti server :
|
||||
This guide explains how to use SSH tunnels to graph a Unix server that is not
|
||||
directly reachable by your Cacti server.
|
||||
|
||||

|
||||
|
||||
In this example, the Cacti server can reach the Gateway, which can reach the
|
||||
target server.
|
||||
|
||||
> **Important — TCP vs UDP**: SSH port forwarding (`-L`) is TCP-only. Standard
|
||||
> SNMP uses UDP port 161 and **cannot** be tunneled this way. This guide works
|
||||
> only when the target's `snmpd` is explicitly configured to accept TCP
|
||||
> transport (as shown below). It is **not** suitable for most network devices
|
||||
> (routers, switches, etc.), which support UDP SNMP only. For UDP SNMP across
|
||||
> untrusted networks, use a VPN instead.
|
||||
|
||||
## Configuring the SSH tunnel
|
||||
|
||||
On Gateway, create a "cactiuser" user :
|
||||
On the Gateway, create a `cactiuser` account:
|
||||
|
||||
```console
|
||||
# useradd -d /home/cactiuser -m cactiuser
|
||||
```
|
||||
|
||||
Then you have to generate SSH keys (without passphrase) :
|
||||
Generate an SSH key pair (no passphrase, so the tunnel can start
|
||||
unattended). The modern recommendation is ed25519:
|
||||
|
||||
```console
|
||||
# su - cactiuser
|
||||
$ ssh-keygen -t rsa
|
||||
Generating public/private rsa key pair.
|
||||
Enter file in which to save the key (/home/cactiuser/.ssh/id_rsa):
|
||||
$ ssh-keygen -t ed25519
|
||||
Generating public/private ed25519 key pair.
|
||||
Enter file in which to save the key (/home/cactiuser/.ssh/id_ed25519):
|
||||
Enter passphrase (empty for no passphrase):
|
||||
Enter same passphrase again:
|
||||
Your identification has been saved in /home/cactiuser/.ssh/id_rsa.
|
||||
Your public key has been saved in /home/cactiuser/.ssh/id_rsa.pub.
|
||||
The key fingerprint is:
|
||||
40:f6:91:a1:2d:d1:46:d4:76:e3:d8:c6:3f:c2:cf:f2 cactiuser@gateway
|
||||
```console
|
||||
Your identification has been saved in /home/cactiuser/.ssh/id_ed25519.
|
||||
Your public key has been saved in /home/cactiuser/.ssh/id_ed25519.pub.
|
||||
```
|
||||
|
||||
The public key of the "cactiuser" user has then to be authorized as an input key :
|
||||
Authorize the public key for login:
|
||||
|
||||
```console
|
||||
$ cd $HOME/.ssh
|
||||
$ cp -p id_rsa.pub authorized_keys
|
||||
$ cp -p id_ed25519.pub authorized_keys
|
||||
```
|
||||
|
||||
Finally, create the SSH tunnel :
|
||||
Create the SSH tunnel:
|
||||
|
||||
```console
|
||||
# su - cactiuser -c "ssh -f -N -g -L 192.168.0.2:10000:192.168.1.2:161 cactiuser@localhost"
|
||||
```
|
||||
|
||||
This SSH tunnel will forward all packets sent to 192.168.0.2 on TCP port 10000,
|
||||
to 192.168.1.2 on port TCP 161.
|
||||
This forwards all TCP traffic sent to `192.168.0.2:10000` on the Gateway to
|
||||
`192.168.1.2:161` on the target server.
|
||||
|
||||
The options that are used are the following :
|
||||
Option summary:
|
||||
|
||||
```shell
|
||||
-f : requests SSH to go to background just before command execution
|
||||
-N : do not execute a remote command
|
||||
-g : allows remote hosts to connect to local forwarded ports
|
||||
-L : specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.
|
||||
```
|
||||
-f Go to background before executing the command
|
||||
-N Do not execute a remote command
|
||||
-g Allow remote hosts to connect to locally forwarded ports
|
||||
-L Forward the given local port to the given host and port on the remote side
|
||||
```
|
||||
|
||||
You can add this command to `/etc/rc.local`, so it will be executed at boot time.
|
||||
### Making the tunnel persistent (systemd)
|
||||
|
||||
## Configuring Net-SNMP
|
||||
On systemd-based hosts (Ubuntu 16.04+, Debian 9+, most current distros),
|
||||
`/etc/rc.local` is deprecated and disabled by default. Use a systemd service
|
||||
instead.
|
||||
|
||||
By default, the Net-SNMP agent listens on UDP port 161; we'll modify its
|
||||
configuration to listen on TCP port 161.
|
||||
Create `/etc/systemd/system/cacti-ssh-tunnel.service`:
|
||||
|
||||
To do so, use that in `snmpd.conf` on the target server :
|
||||
```ini
|
||||
[Unit]
|
||||
Description=SSH tunnel for Cacti SNMP polling
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=cactiuser
|
||||
ExecStart=/usr/bin/ssh -N -g -L 192.168.0.2:10000:192.168.1.2:161 cactiuser@localhost
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Enable and start it:
|
||||
|
||||
```console
|
||||
# systemctl daemon-reload
|
||||
# systemctl enable cacti-ssh-tunnel
|
||||
# systemctl start cacti-ssh-tunnel
|
||||
```
|
||||
|
||||
## Configuring Net-SNMP on the target server
|
||||
|
||||
By default, the Net-SNMP agent listens on **UDP** port 161. For this SSH
|
||||
tunnel approach you must configure it to listen on **TCP** port 161 instead.
|
||||
|
||||
In `snmpd.conf` on the target server:
|
||||
|
||||
```ini
|
||||
agentaddress tcp:161
|
||||
rocommunity mycommunity
|
||||
```
|
||||
|
||||
For a more detailed configuration of snmpd.conf, follow the [Net-SNMP guide in
|
||||
the
|
||||
manual](https://docs.cacti.net/manual:087:1_installation.1_install_unix.4_configure_snmp)
|
||||
For a more detailed `snmpd.conf` reference, see the
|
||||
[Net-SNMP snmpd.conf man page](https://www.net-snmp.org/docs/man/snmpd.conf.html).
|
||||
|
||||
### Testing the SNMP connectivity
|
||||
### Testing SNMP connectivity
|
||||
|
||||
From the Gateway host, run this command :
|
||||
From the Gateway host:
|
||||
|
||||
```console
|
||||
$ snmpwalk -v 1 -c mycommunity tcp:192.168.1.2 sysname
|
||||
SNMPv2-MIB::sysName.0 = STRING: target_server
|
||||
```
|
||||
|
||||
From the Cacti server, run this command :
|
||||
From the Cacti server:
|
||||
|
||||
```console
|
||||
$ snmpwalk -v 1 -c mycommunity tcp:192.168.0.2:10000 sysname
|
||||
SNMPv2-MIB::sysName.0 = STRING: target_server
|
||||
```
|
||||
|
||||
If everything works fine, your host is then ready to be added to Cacti.
|
||||
|
||||
If not, review your network configuration (firewall rules, especially).
|
||||
If these succeed, the host is ready to be added to Cacti. If not, review
|
||||
your firewall rules and verify `snmpd` is listening on TCP.
|
||||
|
||||
## Adding the device to Cacti
|
||||
|
||||
In Cacti, create a new device like that :
|
||||
In Cacti, create a new device as shown:
|
||||
|
||||

|
||||
|
||||
Voila ! Your target server is graphed by Cacti :)
|
||||
Your target server is now graphed by Cacti.
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -58,7 +58,7 @@ $oids = array(
|
||||
|
||||
$xml_delimiter = '!';
|
||||
|
||||
# all required input parms
|
||||
# all required input params
|
||||
$hostname = $_SERVER['argv'][1]; # hostname/IP@
|
||||
$cmd = $_SERVER['argv'][2]; # one of: index/query/get
|
||||
|
||||
@@ -87,7 +87,7 @@ $snmp_context = '';
|
||||
# <arg_index>index</arg_index>
|
||||
# you may replace the string 'index' both in the XML and here
|
||||
# -------------------------------------------------------------------------
|
||||
# php -q <script> <parms> index
|
||||
# php -q <script> <params> index
|
||||
# will list all indices of the target values
|
||||
# e.g. in case of interfaces
|
||||
# it has to respond with the list of interface indices
|
||||
@@ -281,7 +281,7 @@ parameters. We'll have to change the XML template for that (see: `<arg_prepend>`
|
||||
later on). Cacti supports more SNMP parameters since version 0.8.7:
|
||||
|
||||
```php
|
||||
# all required input parms
|
||||
# all required input params
|
||||
$hostname = $_SERVER["argv"][1];
|
||||
$snmp_community = $_SERVER["argv"][2];
|
||||
$snmp_version = $_SERVER["argv"][3];
|
||||
@@ -312,7 +312,7 @@ The code responsible for the “index” option is left unchanged:
|
||||
# <arg_index>index</arg_index>
|
||||
# you may replace the string "index" both in the XML and here
|
||||
# -------------------------------------------------------------------------
|
||||
# php -q <script> <parms> index
|
||||
# php -q <script> <params> index
|
||||
# will all indices of the target values
|
||||
# e.g. in case of interfaces
|
||||
# it has to respond with the list of interface indices
|
||||
@@ -340,7 +340,7 @@ The new code implements the **query** function as follows
|
||||
# <arg_query>query</arg_query>
|
||||
# you may replace the string "query" both in the XML and here
|
||||
# -------------------------------------------------------------------------
|
||||
# php -q <script> <parms> query <function>
|
||||
# php -q <script> <params> query <function>
|
||||
# where <function> is a parameter that tells this script,
|
||||
# which target value should be retrieved
|
||||
# e.g. in case of interfaces, <function> = ifdescription
|
||||
@@ -372,7 +372,7 @@ Last option is the **get** function
|
||||
# <arg_get>get</arg_get>
|
||||
# you may replace the string "get" both in the XML and here
|
||||
# -------------------------------------------------------------------------
|
||||
# php -q <script> <parms> get <function> <index>
|
||||
# php -q <script> <params> get <function> <index>
|
||||
# where <function> is a parameter that tells this script,
|
||||
# which target value should be retrieved
|
||||
# and <index> is the index that should be queried
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
# Installing on CentOS/RHEL/ROCKY
|
||||
# Installing on Enterprise Linux (RHEL / Rocky Linux / AlmaLinux)
|
||||
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
|
||||
> Composer will be used to ensure all of the libraries are installed and are up to date.
|
||||
> Composer will be used to ensure all libraries are installed and up to date.
|
||||
|
||||
## LAMP (Linux, Apache, MySQL/MariaDB, PHP) Required packages
|
||||
|
||||
### Web Server (Apache)
|
||||
|
||||
1. For Centos/RHEL/ROCKY 8+
|
||||
1. For EL 8 and EL 9+ (RHEL, Rocky Linux, AlmaLinux)
|
||||
|
||||
```console
|
||||
dnf module reset php
|
||||
dnf module enable php:8.1
|
||||
```
|
||||
|
||||
### A special Note on installing Cacti in LXC Containers such as the ones found on Proxmox
|
||||
### A special note on installing Cacti in LXC containers such as those found on Proxmox
|
||||
|
||||
It is recommended to create a privileged container you may need to update your containers config file with
|
||||
We recommend creating a privileged container. You may need to update your container's config file with
|
||||
|
||||
```console
|
||||
lxc.apparmor.profile: unconfined
|
||||
```
|
||||
This will allow for ICMP ping and other functions to work
|
||||
|
||||
A tested configuration file like below should be good however tune to your needs/standards
|
||||
This will allow ICMP ping and other functions to work.
|
||||
|
||||
A tested configuration like the one below should work; tune to your needs and standards.
|
||||
|
||||
```console
|
||||
arch: amd64
|
||||
cores: 2
|
||||
hostname: cacti
|
||||
memory: 2048
|
||||
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=mac-id,ip=dhcp,type=v>
|
||||
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=mac-id,ip=dhcp,type=veth
|
||||
ostype: ubuntu
|
||||
rootfs: local-lvm:vm-110-disk-0,size=8G
|
||||
swap: 2048
|
||||
lxc.apparmor.profile: unconfined
|
||||
```
|
||||
|
||||
|
||||
### A special note for systems using PHP-FPM
|
||||
|
||||
Prior to starting the setup process of Cacti you should restart the PHP-FPM
|
||||
Daemon to rebuild the Cache or you may receive a HTTP 500 Error
|
||||
Before starting the Cacti setup process, restart the PHP-FPM daemon to rebuild
|
||||
its cache, or you may receive an HTTP 500 error.
|
||||
|
||||
```console
|
||||
systemctl restart php-fpm
|
||||
```
|
||||
```console
|
||||
systemctl restart php-fpm
|
||||
```
|
||||
|
||||
2.Install Apache
|
||||
2. Install Apache
|
||||
|
||||
```console
|
||||
yum install -y httpd
|
||||
```
|
||||
|
||||
3.Enable and start the service to ensure it starts when the system reboots
|
||||
3. Enable and start the service to ensure it starts when the system reboots
|
||||
|
||||
```console
|
||||
systemctl start httpd
|
||||
@@ -62,7 +62,7 @@ Daemon to rebuild the Cache or you may receive a HTTP 500 Error
|
||||
|
||||
### Example configuration file for Apache 2.4 and SSL
|
||||
|
||||
This example configuration assumes you have your own certificates already. You
|
||||
This example configuration assumes you have your own certificates already. You
|
||||
should make sure you change the paths to match your setup.
|
||||
|
||||
Replace `YourOwnCertFile.crt` and `YourOwnCertFile.key` with the names of the
|
||||
@@ -140,16 +140,14 @@ files holding your certificate (`.crt`) and private key (`.key`).
|
||||
|
||||
### Database Server
|
||||
|
||||
The choice between MySQL server and MariaDB is normally down to the OS
|
||||
maintainers if you use one of the predefined LAMP setup installations. If you
|
||||
are deciding between these yourself, you should research this via your
|
||||
favorite search engine.
|
||||
The choice between MySQL server and MariaDB is normally determined by the OS
|
||||
maintainers when using a predefined LAMP setup. If you are choosing between
|
||||
them yourself, research the differences via your preferred search engine.
|
||||
|
||||
Whilst MySQL is the original open source SQL database server created in 1995
|
||||
which is now owned by Oracle, MariaDB is designed as a drop-in replacement by
|
||||
some of the original MySQL developers / owners. This will likely continue to
|
||||
be a drop-in alternative until there is a major divergence that can not be
|
||||
bridged.
|
||||
MySQL is the original open source SQL database server, created in 1995 and now
|
||||
owned by Oracle. MariaDB is designed as a drop-in replacement by some of the
|
||||
original MySQL developers. The two are expected to remain compatible until a
|
||||
major divergence occurs that cannot be bridged.
|
||||
|
||||
#### MySQL
|
||||
|
||||
@@ -183,7 +181,7 @@ bridged.
|
||||
|
||||
### MySQL/MariaDB common tasks and recommendations
|
||||
|
||||
**IMPORTANT**: Secure your MySQL installation before doing any more changes
|
||||
> **Note**: Secure your MySQL installation before making any further changes.
|
||||
|
||||
```console
|
||||
/usr/bin/mysql_secure_installation
|
||||
@@ -199,25 +197,24 @@ during the installation.
|
||||
vim /etc/my.cnf.d/server.cnf
|
||||
```
|
||||
|
||||
The following `[mysqld]` section is a base configuration. The installer
|
||||
will provide recommendations based on the actual system which will be more
|
||||
tailored to your environment.
|
||||
The following `[mysqld]` section is a base configuration. The installer
|
||||
will provide recommendations tailored to your actual system; revise these
|
||||
values up or down based on those recommendations.
|
||||
|
||||
If using MariaDB less than version 11.1 or MySQL use the settings below.
|
||||
Note that you should revise up or down your settings depending on
|
||||
the Cacti recommendation that you see once you start the installer.
|
||||
**For MariaDB earlier than version 11.1, or MySQL:**
|
||||
|
||||
```shell
|
||||
[mysqld]
|
||||
character-set-server=utf8mb4
|
||||
collation-server=utf8mb4_unicode_ci
|
||||
innodb_file_format = Barracuda
|
||||
# innodb_file_format and innodb_large_prefix were removed in MySQL 8.0 /
|
||||
# MariaDB 10.3+; omit those settings on newer releases.
|
||||
max_allowed_packet = 16777777
|
||||
join_buffer_size = 32M
|
||||
innodb_file_per_table = ON
|
||||
innodb_large_prefix = 1
|
||||
innodb_buffer_pool_size = 250M
|
||||
innodb_additional_mem_pool_size = 90M
|
||||
# innodb_additional_mem_pool_size was removed in MySQL 5.7.4 /
|
||||
# MariaDB 10.0; omit on newer releases.
|
||||
innodb_flush_log_at_trx_commit = 2
|
||||
log-error = /var/log/mysql/mysql-error.log
|
||||
log-queries-not-using-indexes = 1
|
||||
@@ -225,7 +222,7 @@ during the installation.
|
||||
slow-query-log-file = /var/log/mysql/mysql-slow.log
|
||||
```
|
||||
|
||||
If using MariaDB 11.0 or higher, use the settings below:
|
||||
**For MariaDB 11.0 or higher:**
|
||||
|
||||
```shell
|
||||
[mariadb]
|
||||
@@ -242,21 +239,21 @@ during the installation.
|
||||
slow-query-log-file = /var/log/mysql/mysql-slow.log
|
||||
```
|
||||
|
||||
3. Restart MySQL/MariaDB service to pick up the changes
|
||||
2. Restart MySQL/MariaDB to apply the changes
|
||||
|
||||
```console
|
||||
systemctl restart mysql
|
||||
```
|
||||
|
||||
4. Populate timezone table with available timezones
|
||||
3. Populate the timezone table
|
||||
|
||||
```console
|
||||
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
|
||||
```
|
||||
|
||||
#### Setup Cacti database
|
||||
#### Set up the Cacti database
|
||||
|
||||
1. Login to MySQL/MariaDB as root to create Cacti database
|
||||
1. Log in to MySQL/MariaDB as root and create the Cacti database
|
||||
|
||||
```console
|
||||
# mysql -u root -p
|
||||
@@ -264,7 +261,7 @@ during the installation.
|
||||
Query OK, 1 row affected (0.00 sec)
|
||||
```
|
||||
|
||||
2. Import Cacti database from SQL file
|
||||
2. Import the default Cacti schema
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> use cacti;
|
||||
@@ -272,8 +269,8 @@ during the installation.
|
||||
MariaDB [(cacti)]> source /var/www/html/cacti/cacti.sql
|
||||
```
|
||||
|
||||
3. Grant Cacti username access to Cacti database. Replace `your_cacti_username`
|
||||
and `your_cacti_password` with your own details.
|
||||
3. Create the Cacti database user. Replace `your_cacti_username` and
|
||||
`your_cacti_password` with your own credentials.
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> CREATE USER 'your_cacti_username'@'localhost'
|
||||
@@ -283,7 +280,7 @@ during the installation.
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
4. Grant cacti username to MySQL timezone table
|
||||
4. Grant the Cacti user access to the timezone table
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO 'your_cacti_username'@'localhost';
|
||||
@@ -292,7 +289,7 @@ during the installation.
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
5. Save the Database Charset and Collation
|
||||
5. Set the database character set and collation
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
@@ -303,9 +300,9 @@ during the installation.
|
||||
|
||||
#### PHP
|
||||
|
||||
PHP and various packages are all required by Cacti for successful operation
|
||||
PHP and the following packages are required for Cacti to operate.
|
||||
|
||||
1. Install PHP and required packages.
|
||||
1. Install PHP and required packages
|
||||
|
||||
```console
|
||||
yum install -y php php-common php-bcmath php-cli \
|
||||
@@ -315,18 +312,18 @@ PHP and various packages are all required by Cacti for successful operation
|
||||
php-xml php-zip composer
|
||||
```
|
||||
|
||||
2. Set a timezone to your PHP.INI configuration
|
||||
2. Set a timezone in your PHP configuration
|
||||
|
||||
Edit php.ini typically located at `/etc/php.ini`
|
||||
Edit `/etc/php.ini` and set:
|
||||
|
||||
```console
|
||||
date.timezone = Pacific/Auckland
|
||||
date.timezone = America/Los_Angeles
|
||||
```
|
||||
|
||||
#### RRDtool
|
||||
|
||||
RRDtool is required to store the data retrieved from devices in `.rra` files to
|
||||
produce the graphs which are shown within Cacti
|
||||
RRDtool is required to store the data retrieved from devices in `.rra` files and
|
||||
produce the graphs shown within Cacti.
|
||||
|
||||
```console
|
||||
yum install -y rrdtool
|
||||
@@ -342,11 +339,11 @@ yum install -y net-snmp net-snmp-utils
|
||||
|
||||
### Cacti
|
||||
|
||||
The following steps will show you how to manually download, install and
|
||||
configure the basics for Cacti.
|
||||
The following steps show you how to manually download, install, and configure
|
||||
the basics for Cacti.
|
||||
|
||||
1. Download Cacti source code from [Cacti Web
|
||||
Site](https://www.cacti.net/download_cacti.php)
|
||||
1. Download the Cacti source code from the
|
||||
[Cacti website](https://www.cacti.net/download_cacti.php)
|
||||
|
||||
```console
|
||||
cd /tmp
|
||||
@@ -355,50 +352,45 @@ configure the basics for Cacti.
|
||||
mv -v cacti-1.y.z /var/www/html/cacti
|
||||
```
|
||||
|
||||
2. Edit the config.php file
|
||||
2. Create the config.php file
|
||||
|
||||
```console
|
||||
mv -v /var/www/html/cacti/include/config.php-dist /var/www/html/cacti/include/config.php
|
||||
```
|
||||
|
||||
3. Update `database_` fields with your own details. This section only applies
|
||||
to the Main Cacti Server
|
||||
3. Update the `database_` fields with your own details. This section applies
|
||||
only to the main Cacti server.
|
||||
|
||||
```php
|
||||
$database_type = 'mysql';
|
||||
$database_default = 'your_cacti_database';
|
||||
$database_hostname = 'localhost';
|
||||
$database_username = 'your_cacti_username';
|
||||
$database_password = 'your_cacti_password';
|
||||
$database_port = '3306';
|
||||
$database_ssl = false;
|
||||
$database_ssl_key = '';
|
||||
$database_ssl_cert = '';
|
||||
$database_ssl_ca = '';
|
||||
```
|
||||
```php
|
||||
$database_type = 'mysql';
|
||||
$database_default = 'your_cacti_database';
|
||||
$database_hostname = 'localhost';
|
||||
$database_username = 'your_cacti_username';
|
||||
$database_password = 'your_cacti_password';
|
||||
$database_port = '3306';
|
||||
$database_ssl = false;
|
||||
$database_ssl_key = '';
|
||||
$database_ssl_cert = '';
|
||||
$database_ssl_ca = '';
|
||||
```
|
||||
|
||||
4. Create your cron task file or systemd units file
|
||||
|
||||
Starting with Cacti 1.2.16, you have the option to use either the
|
||||
legacy Crontab entry, or an optional cactid units file and server
|
||||
to run your Cacti pollers.
|
||||
Starting with Cacti 1.2.16, you can use either a legacy crontab entry or the
|
||||
optional `cactid` systemd service to run your Cacti pollers.
|
||||
|
||||
For Crontab use, follow the instructions below:
|
||||
|
||||
Create and edit `/etc/cron.d/cacti` file.
|
||||
Make sure to setup the correct path to poller.php
|
||||
For crontab use, create and edit `/etc/cron.d/cacti`, setting the correct
|
||||
path to `poller.php`:
|
||||
|
||||
```console
|
||||
*/5 * * * * apache php /var/www/html/cacti/poller.php &>/dev/null
|
||||
```
|
||||
|
||||
For systemd unit's file install, you will need to modify the
|
||||
included units file to following your install location
|
||||
and desired user and group's to run the Cacti poller as.
|
||||
To complete the task, follow the procedure below:
|
||||
For systemd, modify the included units file to reflect your install location
|
||||
and the desired user and group, then follow the procedure below:
|
||||
|
||||
```console
|
||||
vim /var/www/html/cacti/service/cactid.service (edit the path)
|
||||
vim /var/www/html/cacti/service/cactid.service
|
||||
touch /etc/sysconfig/cactid
|
||||
cp -p /var/www/html/cacti/service/cactid.service /etc/systemd/system
|
||||
systemctl enable cactid
|
||||
@@ -406,31 +398,46 @@ configure the basics for Cacti.
|
||||
systemctl status cactid
|
||||
```
|
||||
|
||||
The systemd units file makes managing a highly available Cacti
|
||||
setup a bit more convenient.
|
||||
The systemd units file makes managing a highly available Cacti setup more
|
||||
convenient.
|
||||
|
||||
#### Spine
|
||||
|
||||
1. Install the necessary packages to compile and install spine
|
||||
1. Install the packages required to compile Spine
|
||||
|
||||
For RHEL/CENTOS/ROCKY 8+, you must enable the powertools repo first before
|
||||
downloading the below packages
|
||||
The required packages depend on your EL version. Choose the block that
|
||||
matches your distribution.
|
||||
|
||||
**EL 9+ (RHEL 9, Rocky Linux 9, AlmaLinux 9 and later)**
|
||||
|
||||
The `crb` (CodeReady Builder) repository provides the development headers
|
||||
needed to compile Spine.
|
||||
|
||||
```console
|
||||
yum config-manager --set-enabled powertools
|
||||
dnf config-manager --set-enabled crb
|
||||
dnf install -y autoconf automake libtool dos2unix help2man \
|
||||
openssl-devel mariadb-devel net-snmp-devel
|
||||
```
|
||||
|
||||
For RHEL/CENTOS/ROCKY 7.x and below
|
||||
**EL 8 (RHEL 8, Rocky Linux 8, AlmaLinux 8)**
|
||||
|
||||
On EL 8 the same repository is called `powertools`.
|
||||
|
||||
```console
|
||||
dnf config-manager --set-enabled powertools
|
||||
dnf install -y autoconf automake libtool dos2unix help2man \
|
||||
openssl-devel mariadb-devel net-snmp-devel
|
||||
```
|
||||
|
||||
**EL 7 and earlier**
|
||||
|
||||
```console
|
||||
yum install -y autoconf automake libtool dos2unix help2man \
|
||||
openssl-devel mariadb-devel net-snmp-devel
|
||||
```
|
||||
|
||||
2. Download spine source code from [Cacti Web
|
||||
Site](https://www.cacti.net/spine_download.php)
|
||||
|
||||
Go to /tmp to download the source code and extract it
|
||||
2. Download the Spine source code from the
|
||||
[Cacti website](https://www.cacti.net/spine_download.php)
|
||||
|
||||
```console
|
||||
cd /tmp
|
||||
@@ -439,30 +446,25 @@ configure the basics for Cacti.
|
||||
cd cacti-spine-1.y.z
|
||||
```
|
||||
|
||||
3. Run the configure script and compile spine.
|
||||
3. Compile and install Spine
|
||||
|
||||
```console
|
||||
# ./configure
|
||||
# make & make install
|
||||
config/install-sh -c -d '/usr/local/spine/bin'
|
||||
/bin/sh ./libtool --mode=install /usr/bin/install -c spine '/usr/local/spine/bin'
|
||||
libtool: install: /usr/bin/install -c spine /usr/local/spine/bin/spine
|
||||
config/install-sh -c -d '/usr/local/spine/etc'
|
||||
/usr/bin/install -c -m 644 spine.conf.dist '/usr/local/spine/etc'
|
||||
config/install-sh -c -d '/usr/local/spine/share/man/man1'
|
||||
/usr/bin/install -c -m 644 spine.1 '/usr/local/spine/share/man/man1'
|
||||
./bootstrap
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
chown root:root /usr/local/spine/bin/spine
|
||||
chmod u+s /usr/local/spine/bin/spine
|
||||
```
|
||||
|
||||
4. Edit spine.conf
|
||||
|
||||
Rename spine.conf.dist to spine.conf
|
||||
4. Configure Spine
|
||||
|
||||
```console
|
||||
mv -v /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf
|
||||
vi /usr/local/spine/etc/spine.conf
|
||||
```
|
||||
|
||||
5. Now set up your database connection
|
||||
5. Set up the database connection in `spine.conf`
|
||||
|
||||
```console
|
||||
DB_Host localhost
|
||||
@@ -478,12 +480,12 @@ configure the basics for Cacti.
|
||||
|
||||
### Security Enhanced Linux (SELinux)
|
||||
|
||||
If you are having issues to access the web page, disable SELinux temporarily to
|
||||
prove that the issues come from the SELinux policy. It is NOT recommended to
|
||||
disable SELinux permanently.
|
||||
If you have trouble accessing the web interface, disable SELinux temporarily to
|
||||
determine whether the SELinux policy is the cause. Do not disable SELinux
|
||||
permanently.
|
||||
|
||||
[CentOS](https:////wiki.centos.org/es/HowTos/SELinux) has a lot of
|
||||
documentation on how to make your SELinux policy right.
|
||||
The [CentOS SELinux HowTo](https://wiki.centos.org/HowTos/SELinux) provides
|
||||
guidance on writing a correct SELinux policy.
|
||||
|
||||
1. Check SELinux status
|
||||
|
||||
@@ -497,17 +499,20 @@ documentation on how to make your SELinux policy right.
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
3. Enable SELinux back
|
||||
3. Re-enable SELinux
|
||||
|
||||
```console
|
||||
setenforce 1
|
||||
```
|
||||
|
||||
### Considerations when using Proxies in front of Cacti (Cacti 1.2.23+)
|
||||
**Note:** If Cacti is installed outside `/var/www/html`, ensure that all SELinux
|
||||
file contexts and permissions are set correctly.
|
||||
|
||||
For optimal security, only specify the HTTP headers that are set by your proxy
|
||||
software to prevent unauthorized access.
|
||||
These can be set by editing the following section of config.php
|
||||
### Considerations when using proxies in front of Cacti (Cacti 1.2.23+)
|
||||
|
||||
For optimal security, specify only the HTTP headers that your proxy software
|
||||
actually sets. This prevents unauthorized access via header spoofing. Configure
|
||||
the setting by editing the following section of `config.php`:
|
||||
|
||||
```ini
|
||||
* Allow the use of Proxy IPs when searching for client
|
||||
@@ -536,8 +541,5 @@ These can be set by editing the following section of config.php
|
||||
$proxy_headers = null;
|
||||
```
|
||||
|
||||
**Note:** If you installed Cacti out of `/var/www/html` make sure you fix up
|
||||
all SELinux context and permissions.
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -1,11 +1,11 @@
|
||||
# Installing on CentOS 7
|
||||
# Installing on Enterprise Linux (RHEL / Rocky Linux / AlmaLinux)
|
||||
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
|
||||
> Composer will be used to ensure all of the libraries are installed and are up to date.
|
||||
> Composer will be used to ensure all libraries are installed and up to date.
|
||||
|
||||
## LEMP (Linux, Nginx, MySQL, PHP) Required packages
|
||||
## LEMP (Linux, Nginx, MySQL/MariaDB, PHP) Required packages
|
||||
|
||||
### Web Server
|
||||
### Web Server (Nginx)
|
||||
|
||||
1. Install Nginx
|
||||
|
||||
@@ -20,19 +20,15 @@
|
||||
systemctl enable nginx
|
||||
```
|
||||
|
||||
### Example configuration file for Nginx and SSL
|
||||
### Example Nginx configuration with SSL
|
||||
|
||||
This example assumes you have your own certificates already. You should make
|
||||
sure you change the paths to match your setup.
|
||||
This example assumes you have your own certificates already. Change the paths to
|
||||
match your setup. Replace `YourOwnCertFile.crt` and `YourOwnCertFile.key` with
|
||||
the names of your certificate (`.crt`) and private key (`.key`) files.
|
||||
|
||||
Replace `YourOwnCertFile.crt` and `YourOwnCertFile.key` with the names of the
|
||||
files holding your certificate (`.crt`) and private key (`.key`).
|
||||
Save the following as `/etc/nginx/conf.d/cacti.conf`:
|
||||
|
||||
```console
|
||||
/etc/nginx/conf.d/cacti.conf
|
||||
```
|
||||
|
||||
```console
|
||||
```nginx
|
||||
# Advanced config for NGINX
|
||||
#server_tokens off;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
@@ -41,18 +37,18 @@ add_header X-Content-Type-Options nosniff;
|
||||
# Redirect all HTTP traffic to HTTPS
|
||||
server {
|
||||
listen 80;
|
||||
server_name cacti.yourdomain.com; #No one likes unencrypted web servers
|
||||
#return 301 https://$host$request_uri; # some nginx do not support 'return';
|
||||
server_name cacti.yourdomain.com;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
# SSL configuration
|
||||
server {
|
||||
listen 443 ssl default deferred;
|
||||
listen 443 ssl;
|
||||
server_name cacti.yourdomain.com;
|
||||
root /usr/share/nginx/html/cacti;
|
||||
index index.php index.html index.htm;
|
||||
|
||||
# Compression increases performance0
|
||||
# Compression improves performance
|
||||
gzip on;
|
||||
gzip_types text/plain text/html text/xml text/css application/xml application/javascript application/x-javascript application/rss+xml application/xhtml+xml;
|
||||
gzip_proxied no-cache no-store private expired auth;
|
||||
@@ -69,12 +65,12 @@ server {
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
alias /usr/share/nginx/html/cacti;
|
||||
index index.php
|
||||
root /usr/share/nginx/html/cacti;
|
||||
index index.php;
|
||||
try_files $uri $uri/ =404;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
|
||||
# you may have to change the path here for your OS
|
||||
# Adjust path for your OS if needed
|
||||
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
@@ -88,7 +84,7 @@ server {
|
||||
try_files $uri =404;
|
||||
root /usr/share/nginx/html;
|
||||
|
||||
# you may have to change the path here for your OS
|
||||
# Adjust path for your OS if needed
|
||||
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
@@ -127,33 +123,32 @@ server {
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
# Enable server-side protection against BEAST attacks
|
||||
#ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
|
||||
# Only allow TLS 1.2 and 1.3; TLS 1.0 and 1.1 are prohibited by RFC 8996
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
# Disable SSLv3
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
# Secure cipher suites; excludes known-weak ciphers (3DES, RC4, NULL)
|
||||
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:!ADH:!AECDH:!MD5:!3DES;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
# Diffie-Hellman parameter for DHE cipher suites
|
||||
# $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
|
||||
# Generate with: openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
|
||||
ssl_dhparam /etc/ssl/certs/dhparam.pem;
|
||||
|
||||
# Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
|
||||
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
|
||||
# Enable HSTS (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)
|
||||
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
|
||||
}
|
||||
```
|
||||
|
||||
### Database Server
|
||||
|
||||
The choice between MySQL server and MariaDB is normally down to the OS
|
||||
maintainers if you use one of the predefined LAMP setup installations. If you
|
||||
are deciding between these yourself, you should research this via your favorite
|
||||
search engine.
|
||||
The choice between MySQL and MariaDB is normally determined by the OS
|
||||
maintainers when using a predefined LAMP setup. If you are choosing between them
|
||||
yourself, research the differences via your preferred search engine.
|
||||
|
||||
Whilst MySQL is the original open source SQL database server created in 1995
|
||||
which is now owned by Oracle, MariaDB is designed as a drop-in replacement by
|
||||
some of the original MySQL developers / owners. This will likely continue to be
|
||||
a drop-in alternative until there is a major divergence that can not be bridged.
|
||||
MySQL is the original open source SQL database server, created in 1995 and now
|
||||
owned by Oracle. MariaDB is designed as a drop-in replacement by some of the
|
||||
original MySQL developers. The two are expected to remain compatible until a
|
||||
major divergence occurs that cannot be bridged.
|
||||
|
||||
#### MySQL
|
||||
|
||||
@@ -163,7 +158,7 @@ a drop-in alternative until there is a major divergence that can not be bridged.
|
||||
yum install -y mysql mysql-server
|
||||
```
|
||||
|
||||
2. Enable and start the service to ensure it starts when the system reboots
|
||||
2. Enable and start the service
|
||||
|
||||
```console
|
||||
systemctl enable mysqld
|
||||
@@ -178,7 +173,7 @@ a drop-in alternative until there is a major divergence that can not be bridged.
|
||||
yum install -y MariaDB-server MariaDB-client
|
||||
```
|
||||
|
||||
2. Enable and start the service to ensure it starts when the system reboots
|
||||
2. Enable and start the service
|
||||
|
||||
```console
|
||||
systemctl enable mariadb
|
||||
@@ -187,43 +182,40 @@ a drop-in alternative until there is a major divergence that can not be bridged.
|
||||
|
||||
### MySQL/MariaDB common tasks and recommendations
|
||||
|
||||
**IMPORTANT**: Secure your MySQL installation before doing any more changes
|
||||
> **Note**: Secure your MySQL installation before making any further changes.
|
||||
|
||||
```console
|
||||
/usr/bin/mysql_secure_installation
|
||||
```
|
||||
|
||||
The following MySQL/MariaDB recommendations may vary depending on your system
|
||||
setup. In any case, Cacti will prompt you with more accurate recommendations
|
||||
during the installation.
|
||||
The following recommendations may vary depending on your system. Cacti will
|
||||
prompt you with more accurate recommendations during installation.
|
||||
|
||||
1. Edit your **server.cnf** file
|
||||
1. Edit your `server.cnf` file
|
||||
|
||||
```console
|
||||
vim /etc/my.cnf.d/server.cnf
|
||||
```
|
||||
|
||||
The following `[mysqld]` section is a base configuration. The installer will
|
||||
provide recommendations based on the actual system which will be more
|
||||
tailored to your environment.
|
||||
The following is a base configuration. Adjust values up or down based on the
|
||||
recommendations Cacti provides during installation.
|
||||
|
||||
If using MariaDB less than version 11.1 or MySQL use the settings below.
|
||||
Note that you should revise up or down your settings depending on
|
||||
the Cacti recommendation that you see once you start the installer.
|
||||
**For MariaDB earlier than version 11.1, or MySQL:**
|
||||
|
||||
```shell
|
||||
[mysqld]
|
||||
character_set_client = utf8mb4
|
||||
character-set-server = utf8mb4
|
||||
collation-server = utf8mb4_unicode_ci
|
||||
innodb_file_format = Barracuda
|
||||
# innodb_file_format and innodb_large_prefix were removed in MySQL 8.0 /
|
||||
# MariaDB 10.3+; omit those settings on newer releases.
|
||||
max_allowed_packet = 16777777
|
||||
max_heap_table_size = 500M
|
||||
join_buffer_size = 32M
|
||||
innodb_file_per_table = ON
|
||||
innodb_large_prefix = 1
|
||||
innodb_buffer_pool_size = 500M
|
||||
innodb_additional_mem_pool_size = 90M
|
||||
# innodb_additional_mem_pool_size was removed in MySQL 5.7.4 /
|
||||
# MariaDB 10.0; omit on newer releases.
|
||||
innodb_flush_log_at_trx_commit = 2
|
||||
log-error = /var/log/mysql/mysql-error.log
|
||||
log-queries-not-using-indexes = 1
|
||||
@@ -231,7 +223,7 @@ during the installation.
|
||||
slow-query-log-file = /var/log/mysql/mysql-slow.log
|
||||
```
|
||||
|
||||
If using MariaDB 11.0 or higher, use the settings below:
|
||||
**For MariaDB 11.0 or higher:**
|
||||
|
||||
```shell
|
||||
[mariadb]
|
||||
@@ -249,21 +241,21 @@ during the installation.
|
||||
slow-query-log-file = /var/log/mysql/mysql-slow.log
|
||||
```
|
||||
|
||||
2. Restart MySQL/MariaDB service to pick up the changes
|
||||
2. Restart MySQL/MariaDB to apply the changes
|
||||
|
||||
```console
|
||||
systemctl restart mysql
|
||||
```
|
||||
|
||||
3. Populate timezone table with available timezones
|
||||
3. Populate the timezone table
|
||||
|
||||
```console
|
||||
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
|
||||
```
|
||||
|
||||
#### Setup Cacti database
|
||||
#### Set up the Cacti database
|
||||
|
||||
1. Login to MySQL/MariaDB as root to create Cacti database
|
||||
1. Log in to MySQL/MariaDB as root and create the Cacti database
|
||||
|
||||
```console
|
||||
# mysql -u root -p
|
||||
@@ -271,45 +263,48 @@ during the installation.
|
||||
Query OK, 1 row affected (0.00 sec)
|
||||
```
|
||||
|
||||
2. Import Cacti database from SQL file
|
||||
2. Import the default Cacti schema
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> use cacti;
|
||||
Database changed
|
||||
MariaDB [(cacti)]> source /var/www/html/cacti/cacti.sql
|
||||
MariaDB [(cacti)]> source /usr/share/nginx/html/cacti/cacti.sql
|
||||
```
|
||||
|
||||
3. Grant Cacti username access to Cacti database. Replace `your_cacti_username`
|
||||
and `your_cacti_password` with your own details.
|
||||
3. Create the Cacti database user. Replace `your_cacti_username` and
|
||||
`your_cacti_password` with your own credentials.
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cacti.* TO 'your_cacti_username'@'localhost' IDENTIFIED BY 'your_cacti_password';
|
||||
MariaDB [(none)]> CREATE USER 'your_cacti_username'@'localhost'
|
||||
IDENTIFIED BY 'your_cacti_password';
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cacti.* TO 'your_cacti_username'@'localhost';
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
4. Grant cacti username to MySQL timezone table
|
||||
4. Grant the Cacti user access to the timezone table
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO 'cacti'@'localhost';
|
||||
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO 'your_cacti_username'@'localhost';
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
MariaDB [(none)]> FLUSH PRIVILEGES;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
5. Save the Database Charset and Collation
|
||||
5. Set the database character set and collation
|
||||
|
||||
```sql
|
||||
MariaDB [(none)]> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
MariaDB [(none)]> FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
### Common PHP packages
|
||||
### PHP
|
||||
|
||||
#### PHP
|
||||
PHP and the following packages are required for Cacti to operate.
|
||||
|
||||
PHP and various packages are all required by Cacti for successful operation
|
||||
> **Note**: `php-fpm` is required when using Nginx as the web server.
|
||||
|
||||
1. Install PHP and required packages.
|
||||
1. Install PHP and required packages
|
||||
|
||||
```console
|
||||
yum install -y php php-common php-bcmath php-cli \
|
||||
@@ -319,27 +314,23 @@ PHP and various packages are all required by Cacti for successful operation
|
||||
php-xml php-zip php-fpm composer
|
||||
```
|
||||
|
||||
---
|
||||
2. Set a timezone in your PHP configuration
|
||||
|
||||
Note: **php-fpm** is only required if your Web Server is Nginx
|
||||
|
||||
1. Set a timezone to your PHP.INI configuration
|
||||
|
||||
Edit php.ini, typically located at `/etc/php.ini`
|
||||
Edit `/etc/php.ini` and set:
|
||||
|
||||
```console
|
||||
date.timezone = Pacific/Auckland
|
||||
date.timezone = America/Los_Angeles
|
||||
```
|
||||
|
||||
2. Disable insecure `cgi.fix_pathinfo`
|
||||
3. Disable insecure `cgi.fix_pathinfo`
|
||||
|
||||
```console
|
||||
cgi.fix_pathinfo=0
|
||||
```
|
||||
|
||||
#### Setup php-fpm
|
||||
#### Set up php-fpm
|
||||
|
||||
1. Enable and start the service to ensure it starts when the system reboots
|
||||
1. Enable and start the service
|
||||
|
||||
```console
|
||||
systemctl start php-fpm
|
||||
@@ -348,27 +339,27 @@ Note: **php-fpm** is only required if your Web Server is Nginx
|
||||
|
||||
2. Edit `/etc/php-fpm.d/www.conf`
|
||||
|
||||
Find `listen = 127.0.0.1:9000` and add the following line below
|
||||
Change the listen address from TCP to a Unix socket:
|
||||
|
||||
```console
|
||||
listen = /var/run/php-fpm/php-fpm.sock
|
||||
```
|
||||
|
||||
Find `listen.owner` and `listen.group` and set them to nginx
|
||||
Set the socket owner and group to `nginx`:
|
||||
|
||||
```console
|
||||
listen.owner = nginx
|
||||
listen.group = nginx
|
||||
```
|
||||
|
||||
Find user and group and set them to `nginx`
|
||||
Set the process user and group to `nginx`:
|
||||
|
||||
```console
|
||||
user = nginx
|
||||
group = nginx
|
||||
```
|
||||
|
||||
Restart php-fpm to pick up the changes
|
||||
Restart php-fpm to apply the changes:
|
||||
|
||||
```console
|
||||
systemctl restart php-fpm
|
||||
@@ -376,8 +367,8 @@ Note: **php-fpm** is only required if your Web Server is Nginx
|
||||
|
||||
### RRDtool
|
||||
|
||||
RRDtool is required to store the data retrieved from devices in `.rra` files to
|
||||
produce the graphs which are shown within Cacti
|
||||
RRDtool is required to store the data retrieved from devices in `.rra` files and
|
||||
produce the graphs shown within Cacti.
|
||||
|
||||
```console
|
||||
yum install -y rrdtool
|
||||
@@ -396,11 +387,11 @@ systemctl start snmpd
|
||||
|
||||
### Cacti
|
||||
|
||||
The following steps will show you how to manually download, install and
|
||||
configure the basics for Cacti.
|
||||
The following steps show you how to manually download, install, and configure
|
||||
the basics for Cacti.
|
||||
|
||||
1. Download Cacti source code from
|
||||
[Cacti Web Site](https://www.cacti.net/download_cacti.php)
|
||||
1. Download the Cacti source code from the
|
||||
[Cacti website](https://www.cacti.net/download_cacti.php)
|
||||
|
||||
```console
|
||||
cd /tmp
|
||||
@@ -409,14 +400,14 @@ configure the basics for Cacti.
|
||||
mv -v cacti-1.y.z /usr/share/nginx/html/cacti
|
||||
```
|
||||
|
||||
2. Edit the config.php file
|
||||
2. Create the config.php file
|
||||
|
||||
```console
|
||||
mv -v /usr/share/nginx/html/cacti/include/config.php-dist /usr/share/nginx/html/cacti/include/config.php
|
||||
```
|
||||
|
||||
3. Update database\_ fields with your own details. This section only applies to
|
||||
the Main Cacti Server
|
||||
3. Update the `database_` fields with your own details. This section applies
|
||||
only to the main Cacti server.
|
||||
|
||||
```php
|
||||
$database_type = 'mysql';
|
||||
@@ -431,56 +422,50 @@ configure the basics for Cacti.
|
||||
$database_ssl_ca = '';
|
||||
```
|
||||
|
||||
4. Set your cookie domain to match your web site domain name
|
||||
4. Set your cookie domain to match your website domain name
|
||||
|
||||
```console
|
||||
```php
|
||||
$cacti_cookie_domain = 'cacti.yourdomain.com';
|
||||
```
|
||||
|
||||
5. Create your cron task file or systemd units file
|
||||
|
||||
Starting with Cacti 1.2.16, you have the option to use either the legacy
|
||||
Crontab entry, or an optional cactid units file and server to run your Cacti
|
||||
pollers.
|
||||
Starting with Cacti 1.2.16, you can use either a legacy crontab entry or the
|
||||
optional `cactid` systemd service to run your Cacti pollers.
|
||||
|
||||
For Crontab use, follow the instructions below:
|
||||
|
||||
Create and edit `/etc/cron.d/cacti` file. Make sure to setup the correct path
|
||||
to poller.php
|
||||
For crontab use, create and edit `/etc/cron.d/cacti`, setting the correct
|
||||
path to `poller.php`:
|
||||
|
||||
```console
|
||||
*/5 * * * * nginx php /var/www/html/cacti/poller.php &>/dev/null
|
||||
*/5 * * * * nginx php /usr/share/nginx/html/cacti/poller.php &>/dev/null
|
||||
```
|
||||
|
||||
For systemd unit's file install, you will need to modify the included units
|
||||
file to following your install location and desired user and group's to run
|
||||
the Cacti poller as. To complete the task, follow the procedure below:
|
||||
For systemd, modify the included units file to reflect your install location
|
||||
and the desired user and group, then follow the procedure below:
|
||||
|
||||
```console
|
||||
vim /var/www/html/cacti/service/cactid.service (edit the path)
|
||||
vim /usr/share/nginx/html/cacti/service/cactid.service
|
||||
touch /etc/sysconfig/cactid
|
||||
cp -p /var/www/html/cacti/service/cactid.service /etc/systemd/system
|
||||
cp -p /usr/share/nginx/html/cacti/service/cactid.service /etc/systemd/system
|
||||
systemctl enable cactid
|
||||
systemctl start cactid
|
||||
systemctl status cactid
|
||||
```
|
||||
|
||||
The systemd units file makes managing a highly available Cacti setup a bit
|
||||
more convenient.
|
||||
The systemd units file makes managing a highly available Cacti setup more
|
||||
convenient.
|
||||
|
||||
#### Spine
|
||||
|
||||
1. Install the necessary packages to compile and install spine
|
||||
1. Install the packages required to compile Spine
|
||||
|
||||
```console
|
||||
yum install -y autoconf automake libtool dos2unix help2man \
|
||||
openssl-devel mariadb-devel net-snmp-devel
|
||||
```
|
||||
|
||||
2. Download spine source code from
|
||||
[Cacti Web Site](https://www.cacti.net/spine_download.php)
|
||||
|
||||
Go to /tmp to download the source code and extract it
|
||||
2. Download the Spine source code from the
|
||||
[Cacti website](https://www.cacti.net/spine_download.php)
|
||||
|
||||
```console
|
||||
cd /tmp
|
||||
@@ -489,30 +474,25 @@ configure the basics for Cacti.
|
||||
cd cacti-spine-1.y.z
|
||||
```
|
||||
|
||||
3. Run the configure script and compile spine.
|
||||
3. Compile and install Spine
|
||||
|
||||
```console
|
||||
# ./configure
|
||||
# make & make install
|
||||
config/install-sh -c -d '/usr/local/spine/bin'
|
||||
/bin/sh ./libtool --mode=install /usr/bin/install -c spine '/usr/local/spine/bin'
|
||||
libtool: install: /usr/bin/install -c spine /usr/local/spine/bin/spine
|
||||
config/install-sh -c -d '/usr/local/spine/etc'
|
||||
/usr/bin/install -c -m 644 spine.conf.dist '/usr/local/spine/etc'
|
||||
config/install-sh -c -d '/usr/local/spine/share/man/man1'
|
||||
/usr/bin/install -c -m 644 spine.1 '/usr/local/spine/share/man/man1'
|
||||
./bootstrap
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
chown root:root /usr/local/spine/bin/spine
|
||||
chmod u+s /usr/local/spine/bin/spine
|
||||
```
|
||||
|
||||
4. Edit spine.conf
|
||||
|
||||
Rename spine.conf.dist to spine.conf
|
||||
4. Configure Spine
|
||||
|
||||
```console
|
||||
mv -v /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf
|
||||
vi /usr/local/spine/etc/spine.conf
|
||||
```
|
||||
|
||||
5. Now set up your database connection
|
||||
5. Set up the database connection in `spine.conf`
|
||||
|
||||
```console
|
||||
DB_Host localhost
|
||||
@@ -528,34 +508,66 @@ configure the basics for Cacti.
|
||||
|
||||
### Security Enhanced Linux (SELinux)
|
||||
|
||||
If you are having issues to access the web page, disable SELinux temporarily to
|
||||
prove that the issues come from the SELinux policy. It is NOT recommended to
|
||||
disable SELinux permanently.
|
||||
If you have trouble accessing the web interface, disable SELinux temporarily to
|
||||
determine whether the SELinux policy is the cause. Do not disable SELinux
|
||||
permanently.
|
||||
|
||||
[CentOS](https:////wiki.centos.org/es/HowTos/SELinux) has a lot of documentation
|
||||
on how to make your SELinux policy right.
|
||||
The [CentOS SELinux HowTo](https://wiki.centos.org/HowTos/SELinux) provides
|
||||
guidance on writing a correct SELinux policy.
|
||||
|
||||
Check SELinux status
|
||||
1. Check SELinux status
|
||||
|
||||
```console
|
||||
getenforce
|
||||
```console
|
||||
getenforce
|
||||
```
|
||||
|
||||
2. Disable SELinux temporarily
|
||||
|
||||
```console
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
3. Re-enable SELinux
|
||||
|
||||
```console
|
||||
setenforce 1
|
||||
```
|
||||
|
||||
**Note:** If Cacti is installed outside `/usr/share/nginx/html`, ensure that all
|
||||
SELinux file contexts and permissions are set correctly.
|
||||
|
||||
### Considerations when using proxies in front of Cacti (Cacti 1.2.23+)
|
||||
|
||||
For optimal security, specify only the HTTP headers that your proxy software
|
||||
actually sets. This prevents unauthorized access via header spoofing. Configure
|
||||
the setting by editing the following section of `config.php`:
|
||||
|
||||
```ini
|
||||
* Allow the use of Proxy IPs when searching for client
|
||||
* IP to be used
|
||||
*
|
||||
* This can be set to one of the following:
|
||||
* - false: to use only REMOTE_ADDR
|
||||
* - true: to use all allowed headers (not advised)
|
||||
* - array of one or more the following:
|
||||
*'X-Forwarded-For',
|
||||
*'X-Client-IP',
|
||||
*'X-Real-IP',
|
||||
*'X-ProxyUser-Ip',
|
||||
*'CF-Connecting-IP',
|
||||
*'True-Client-IP',
|
||||
*'HTTP_X_FORWARDED',
|
||||
*'HTTP_X_FORWARDED_FOR',
|
||||
*'HTTP_X_CLUSTER_CLIENT_IP',
|
||||
*'HTTP_FORWARDED_FOR',
|
||||
*'HTTP_FORWARDED',
|
||||
*'HTTP_CLIENT_IP',
|
||||
*
|
||||
* NOTE: The following will always be checked:
|
||||
*'REMOTE_ADDR',
|
||||
*/
|
||||
$proxy_headers = null;
|
||||
```
|
||||
|
||||
Disable SELinux temporarily
|
||||
|
||||
```console
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
Enable SELinux back
|
||||
|
||||
```console
|
||||
setenforce 1
|
||||
```
|
||||
|
||||
**Note:** If you installed Cacti out of `/usr/share/nginx/html` make sure you
|
||||
fix up all SELinux context and permissions.
|
||||
|
||||
---
|
||||
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -1,41 +1,49 @@
|
||||
# Installing Cacti 1.x in Ubuntu/Debian LAMP stack
|
||||
# Installing Cacti 1.x on Ubuntu/Debian — LAMP Stack
|
||||
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
|
||||
> Composer will be used to ensure all of the libraries are installed and are up to date.
|
||||
> Composer will be used to ensure all libraries are installed and up to date.
|
||||
> PHP 8.1 reached end-of-life on 31 December 2025. Check the
|
||||
> [PHP supported versions page](https://www.php.net/supported-versions.php)
|
||||
> and substitute the current supported release (e.g. `php8.3`) where appropriate.
|
||||
|
||||
## Installing the required packages needed for the LAMP stack
|
||||
## Installing the required packages
|
||||
|
||||
```console
|
||||
apt-get update
|
||||
apt-get install -y apache2 rrdtool mariadb-server snmp snmpd php8.1 php8.1-mysql php8.1-snmp php8.1-xml php8.1-mbstring php8.1-json php8.1-gd php8.1-gmp php8.1-zip php8.1-ldap php8.1-mbstring composer
|
||||
apt-get install -y apache2 rrdtool mariadb-server snmp snmpd \
|
||||
php8.3 php8.3-mysql php8.3-snmp php8.3-xml php8.3-mbstring \
|
||||
php8.3-json php8.3-gd php8.3-gmp php8.3-zip php8.3-ldap \
|
||||
php8.3-intl php8.3-curl composer
|
||||
```
|
||||
|
||||
### A special note for systems using PHP-FPM
|
||||
|
||||
Prior to starting the setup process of Cacti you should restart the PHP-FPM
|
||||
Daemon to rebuild the Cache or you may received a HTTP 500 Error
|
||||
Before starting the Cacti setup process, restart the PHP-FPM daemon to rebuild
|
||||
its cache, or you may receive an HTTP 500 error.
|
||||
|
||||
```console
|
||||
systemctl restart php-fpm
|
||||
```
|
||||
|
||||
### A special Note on installing Cacti in LXC Containers such as the ones found on Proxmox
|
||||
### A special note on installing Cacti in LXC containers (e.g. Proxmox)
|
||||
|
||||
It is recommended to create a privileged container you may need to update your containers config file with
|
||||
We recommend creating a privileged container. You may need to update your
|
||||
container's config file with:
|
||||
|
||||
```console
|
||||
lxc.apparmor.profile: unconfined
|
||||
```
|
||||
This will allow for ICMP ping and other functions to work
|
||||
|
||||
A tested configuration file like below should be good however tune to your needs/standards
|
||||
This allows ICMP ping and other functions to work.
|
||||
|
||||
A tested configuration is shown below; tune to your needs and standards.
|
||||
|
||||
```console
|
||||
arch: amd64
|
||||
cores: 2
|
||||
hostname: cacti
|
||||
memory: 2048
|
||||
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=mac-id,ip=dhcp,type=v>
|
||||
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=mac-id,ip=dhcp,type=veth
|
||||
ostype: ubuntu
|
||||
rootfs: local-lvm:vm-110-disk-0,size=8G
|
||||
swap: 2048
|
||||
@@ -44,59 +52,53 @@ lxc.apparmor.profile: unconfined
|
||||
|
||||
### Downloading the Cacti software
|
||||
|
||||
Once the OS packages are installed, you will need to download the Cacti files
|
||||
you can do this by using the git command
|
||||
Once the OS packages are installed, clone the Cacti repository:
|
||||
|
||||
```console
|
||||
git clone -b 1.2.x https://github.com/Cacti/cacti.git
|
||||
Cloning into 'cacti'...
|
||||
remote: Enumerating objects: 81, done.
|
||||
remote: Counting objects: 100% (81/81), done.
|
||||
remote: Compressing objects: 100% (55/55), done.
|
||||
remote: Total 59936 (delta 40), reused 51 (delta 26), pack-reused 59855&
|
||||
Receiving objects: 100% (59936/59936), 76.33 MiB | 1.81 MiB/s, done.
|
||||
Resolving deltas: 100% (43598/43598), done.
|
||||
git clone -b 1.2.x https://github.com/Cacti/cacti.git
|
||||
```
|
||||
|
||||
After cloning the Cacti repository, move the files into the /var/www/html
|
||||
directory
|
||||
Move the files into the web root:
|
||||
|
||||
```console
|
||||
mv cacti /var/www/html
|
||||
```
|
||||
|
||||
#### Database Creation
|
||||
### Database creation
|
||||
|
||||
Next we will create a database for the cacti installation to use
|
||||
Create the Cacti database and user:
|
||||
|
||||
```console
|
||||
mysql -u root -p
|
||||
CREATE DATABASE cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||
```
|
||||
|
||||
```sql
|
||||
CREATE DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'cactiuser';
|
||||
GRANT ALL ON cacti.* TO 'cactiuser'@'localhost';
|
||||
GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@'localhost';
|
||||
ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
You will now need to pre-populate the database used by cacti
|
||||
> **Security note**: Replace `cactiuser`/`cactiuser` with a strong,
|
||||
> unique username and password before using this in production.
|
||||
|
||||
Import the default Cacti schema:
|
||||
|
||||
```console
|
||||
mysql -u root cacti < /var/www/html/cacti/cacti.sql
|
||||
```
|
||||
|
||||
Next, you will need to create the config.php file in /var/www/html/cacti/include
|
||||
### Creating the config file
|
||||
|
||||
```console
|
||||
cd /var/www/html/cacti/include
|
||||
cp config.php.dist config.php
|
||||
```
|
||||
|
||||
Now, edit the config.php file and make sure to change the database settings as
|
||||
needed to match the below entries (though it is highly recommended to use a
|
||||
customised username/password combination for security)
|
||||
Edit `config.php` to match your database settings:
|
||||
|
||||
```console
|
||||
```php
|
||||
$database_type = 'mysql';
|
||||
$database_default = 'cacti';
|
||||
$database_hostname = 'localhost';
|
||||
@@ -108,28 +110,22 @@ $database_ssl = false;
|
||||
$database_ssl_key = '';
|
||||
```
|
||||
|
||||
### Create your cron task file or systemd units file
|
||||
### Create your cron task or systemd units file
|
||||
|
||||
Starting with Cacti 1.2.16, you have the option to use either the
|
||||
legacy Crontab entry, or an optional cactid units file and server
|
||||
to run your Cacti pollers.
|
||||
Starting with Cacti 1.2.16, you can use either a legacy crontab entry or the
|
||||
optional `cactid` systemd service to run your Cacti pollers.
|
||||
|
||||
For Crontab use, follow the instructions below:
|
||||
|
||||
Create and edit `/etc/cron.d/cacti` file.
|
||||
Make sure to setup the correct path to poller.php
|
||||
For crontab use, create and edit `/etc/cron.d/cacti`:
|
||||
|
||||
```console
|
||||
*/5 * * * * apache php /var/www/html/cacti/poller.php &>/dev/null
|
||||
*/5 * * * * www-data php /var/www/html/cacti/poller.php &>/dev/null
|
||||
```
|
||||
|
||||
For systemd unit's file install, you will need to modify the
|
||||
included units file to following your install location
|
||||
and desired user and group's to run the Cacti poller as.
|
||||
To complete the task, follow the procedure below:
|
||||
For systemd, modify the included units file to reflect your install location
|
||||
and the desired user and group, then:
|
||||
|
||||
```console
|
||||
vim /var/www/html/cacti/service/cactid.service (edit the path)
|
||||
vim /var/www/html/cacti/service/cactid.service
|
||||
touch /etc/sysconfig/cactid
|
||||
cp -p /var/www/html/cacti/service/cactid.service /etc/systemd/system
|
||||
systemctl enable cactid
|
||||
@@ -137,18 +133,14 @@ systemctl start cactid
|
||||
systemctl status cactid
|
||||
```
|
||||
|
||||
The systemd units file makes managing a highly available Cacti
|
||||
setup a bit more convenient.
|
||||
The system is now ready. Browse to
|
||||
[http://serverip/cacti](http://serverip/cacti) to start the Cacti
|
||||
initialization wizard.
|
||||
|
||||
The system is now ready to finialise the steps by browsing to
|
||||
[http://serverip/cacti](http://serverip/cacti) to start the cacti initialization
|
||||
wizard.
|
||||
### Considerations when using proxies in front of Cacti (Cacti 1.2.23+)
|
||||
|
||||
### Considerations when using Proxys in front of Cacti (Cacti 1.2.23+)
|
||||
|
||||
For optimal security, only specify the HTTP headers that are set by your proxy
|
||||
software to prevent unauthorized access.
|
||||
These can be set by editing the following section of config.php
|
||||
For optimal security, specify only the HTTP headers that your proxy software
|
||||
actually sets. Configure this by editing the following section of `config.php`:
|
||||
|
||||
```ini
|
||||
* Allow the use of Proxy IPs when searching for client
|
||||
|
||||
+188
-252
@@ -1,42 +1,41 @@
|
||||
# Installing Under Windows
|
||||
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
|
||||
> Composer will be used to ensure all of the libraries are installed and are up to date.
|
||||
> Composer will be used to ensure all libraries are installed and up to date.
|
||||
|
||||
BSOD2600, one of the long term users of Cacti, provides an Installer on Windows.
|
||||
We recommend you use that installer for Cacti. You can obtain that installer
|
||||
under the Windows section of the Cacti forums. However, if you wish to install
|
||||
Cacti yourself, please follow the instructions below.
|
||||
BSOD2600, one of the long-term users of Cacti, provides an installer for Windows.
|
||||
We recommend using that installer. You can obtain it under the Windows section of
|
||||
the Cacti forums. If you prefer to install Cacti manually, follow the instructions
|
||||
below.
|
||||
|
||||
1. (Optional) Apache - This software is optional if running Windows Internet
|
||||
Information Server.
|
||||
|
||||
2. Cacti - Install from the zip distribution and install in the web root or your
|
||||
choice. Many choose to install into a `Cacti` sub folder.
|
||||
2. Cacti - Install from the zip distribution into the web root of your choice.
|
||||
Many choose to install into a `Cacti` subfolder.
|
||||
|
||||
3. Spine - Install from the zip distribution into the `c:\cacti` directory.
|
||||
Make sure your `spine.conf.dist` is located in that directory as well.
|
||||
Ensure `spine.conf.dist` is located in that directory as well.
|
||||
|
||||
4. RRDtool - Install from the Cacti website. Install it into the `c:\cacti`
|
||||
directory.
|
||||
4. RRDtool - Install from the Cacti website into the `c:\cacti` directory.
|
||||
|
||||
5. PHP X - Install into the `c:\php` folder. If you choose to install into
|
||||
`c:\Program Files\php`, you will have to use 8.3 filenames to reference it's
|
||||
5. PHP 8.x - Install into the `c:\php` folder. If you choose to install into
|
||||
`c:\Program Files\php`, you will have to use 8.3 filenames to reference its
|
||||
binaries in Cacti.
|
||||
|
||||
6. MySQL 8.x or MariaDB 10.5.x++ - Install into the default locations.
|
||||
This is typically for MySQL:
|
||||
6. MySQL 8.x or MariaDB 10.5+ - Install into the default locations.
|
||||
For MySQL this is typically:
|
||||
|
||||
`c:\Program Files\MySQL\MySQL Server X.XX`.
|
||||
`c:\Program Files\MySQL\MySQL Server X.XX`
|
||||
|
||||
For MariaDB it is normally:
|
||||
For MariaDB it is typically:
|
||||
|
||||
`c:\Program Files\MariaDB`.
|
||||
`c:\Program Files\MariaDB`
|
||||
|
||||
After the Database is confirmed running, follow the steps to setup the
|
||||
correct settings to InnoDB in the `my.ini` file which include the following:
|
||||
After the database is confirmed running, apply the following settings to the
|
||||
`my.ini` file:
|
||||
|
||||
```
|
||||
```ini
|
||||
[mysqld]
|
||||
character-set-server = utf8mb4
|
||||
collation-server = utf8mb4_unicode_ci
|
||||
@@ -44,10 +43,10 @@ Cacti yourself, please follow the instructions below.
|
||||
max_allowed_packet = 500M # Adjust for your OS memory size
|
||||
tmp_table_size = 512M # Adjust for your OS memory size
|
||||
join_buffer_size = 256M # Adjust for your OS memory size
|
||||
sort_buffer_size = 200M # Adjust for your OS memory size
|
||||
sort_buffer_size = 32M # Per-session buffer; keep small to avoid OOM under load
|
||||
|
||||
# important for compatibility
|
||||
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
|
||||
# sql_mode: NO_AUTO_CREATE_USER was removed in MySQL 8.0; omit it on MySQL 8+
|
||||
sql_mode = NO_ENGINE_SUBSTITUTION
|
||||
|
||||
innodb_flush_log_at_trx_commit = 2
|
||||
innodb_flush_log_at_timeout = 3
|
||||
@@ -55,11 +54,10 @@ Cacti yourself, please follow the instructions below.
|
||||
|
||||
innodb_buffer_pool_size = 4500M # Adjust for your OS memory size
|
||||
|
||||
# for very large indexes
|
||||
innodb_file_format = Barracuda
|
||||
innodb_large_prefix = 1
|
||||
# innodb_file_format and innodb_large_prefix removed in MySQL 8.0 /
|
||||
# MariaDB 10.3+; omit those settings on newer releases.
|
||||
|
||||
# for SSD's on a 64 core server
|
||||
# for SSDs on a multi-core server
|
||||
innodb_doublewrite = OFF
|
||||
innodb_read_io_threads = 32
|
||||
innodb_write_io_threads = 16
|
||||
@@ -68,74 +66,72 @@ Cacti yourself, please follow the instructions below.
|
||||
innodb_flush_method = O_DIRECT
|
||||
```
|
||||
|
||||
Restart MariaDB/MySQL after applying these settings. Once you start the install
|
||||
Cacti will recommend better values.
|
||||
Restart MariaDB/MySQL after applying these settings. Once you start the
|
||||
installer, Cacti will recommend better values for your hardware.
|
||||
|
||||
Ensure you write down your MariaDB/MySQL root password for later use. Keep
|
||||
a backup copy of it safe.
|
||||
Write down your MariaDB/MySQL root password and keep a backup copy in a safe
|
||||
place.
|
||||
|
||||
8. (Optional) Cygwin - Download and execute `setup-x86_64.exe` from the Cygwin website.
|
||||
Keep the `setup-x86_64.exe` file for later use. You will need Cygwin and its
|
||||
development packages for building RRDtool and spine.
|
||||
7. (Optional) Cygwin - Download and execute `setup-x86_64.exe` from the Cygwin
|
||||
website. Keep the `setup-x86_64.exe` file for later use. You will need Cygwin
|
||||
and its development packages for building RRDtool and Spine.
|
||||
|
||||
9. (Optional) Net-SNMP - Install to the `c:\usr` directory. If you choose to
|
||||
use `c:\Program Files\net-snmp` you will have to use 8.3 filenames to
|
||||
reference its binaries in Cacti. The default installation location for Net-SNMP
|
||||
on Windows is `c:\usr` where closely aligns with Linux and Unix install paths.
|
||||
8. (Optional) Net-SNMP - Install to the `c:\usr` directory. If you choose to
|
||||
use `c:\Program Files\net-snmp`, you will have to use 8.3 filenames to
|
||||
reference its binaries in Cacti. The default installation location for
|
||||
Net-SNMP on Windows is `c:\usr`, which closely aligns with Linux and Unix
|
||||
install paths.
|
||||
|
||||
## Common OS Changes
|
||||
|
||||
The following changes will be required regardless of your selected Webserver.
|
||||
The following changes are required regardless of your selected web server.
|
||||
|
||||
1. Add the following directory to the existing Windows System `PATH` environment
|
||||
variable: `c:\php`. The Windows path can be accessed via the Control Panel at:
|
||||
System -> Advanced -> Environment Variables -> System Variables.
|
||||
variable: `c:\php`. The Windows PATH can be accessed via:
|
||||
Control Panel → System → Advanced → Environment Variables → System Variables.
|
||||
|
||||
2. Add the following directory to a new Windows System environment variable
|
||||
called `PHPRC`: `c:\php`.
|
||||
2. Add a new Windows System environment variable `PHPRC` set to `c:\php`.
|
||||
|
||||
3. Add a new Windows System environment variable called `MIBDIRS` set it to
|
||||
`c:\php\extrasmibs`
|
||||
3. Add a new Windows System environment variable `MIBDIRS` set to
|
||||
`c:\php\extrasmibs`.
|
||||
|
||||
4. Rename the file `c:\php\php.ini.dist` to `php.ini`, and make the following
|
||||
changes to it:
|
||||
|
||||
Uncomment the following lines. You will need more modules. The Cacti
|
||||
install process will guide you through this process.
|
||||
4. Rename `c:\php\php.ini.dist` to `php.ini`, and make the following changes.
|
||||
The Cacti installer will guide you through enabling additional modules.
|
||||
|
||||
```ini
|
||||
extension_dir = c:\php\ext
|
||||
extension=php_mysql.dll
|
||||
extension=php_pdo_mysql.dll
|
||||
extension=php_snmp.dll
|
||||
extension=php_sockets.dll
|
||||
cgi.force_redirect = 0
|
||||
date.time_zone = America/Detroit
|
||||
date.timezone = America/Detroit
|
||||
memory_limit = 800M
|
||||
max_execution_time = 300
|
||||
```
|
||||
|
||||
6. In earlier installation guides to PHP, they recommended moving certain DLL's
|
||||
to the `c:\winnt\system32` directory. If so, you will have to remove those
|
||||
files. Please review the PHP installation documentation for instructions on
|
||||
removing those files.
|
||||
> **Note**: `php_mysql.dll` (the old `mysql_*` extension) was removed in
|
||||
> PHP 7.0. Use `php_pdo_mysql.dll` instead.
|
||||
|
||||
7. If you want to allow template importing, uncomment the following line:
|
||||
5. In earlier PHP installation guides, moving certain DLLs to
|
||||
`c:\winnt\system32` was recommended. If you followed those guides, remove
|
||||
those files. Review the PHP installation documentation for instructions.
|
||||
|
||||
6. To allow template importing, uncomment the following line:
|
||||
|
||||
```ini
|
||||
file_uploads = On
|
||||
```
|
||||
|
||||
8. Give the user who will be running the scheduled task, modify rights to the
|
||||
`.index` file in the location pointed to by the `MIBDIRS` Windows System
|
||||
environment variable.
|
||||
7. Give the user running the scheduled task modify rights to the `.index` file
|
||||
in the location pointed to by the `MIBDIRS` environment variable.
|
||||
|
||||
## Web Server Configuration
|
||||
|
||||
1. Make sure you have stopped any IIS web servers before you proceed with Apache
|
||||
installation, or make sure Apache is configured on an alternate port.
|
||||
1. Ensure you have stopped any IIS web servers before proceeding with Apache
|
||||
installation, or configure Apache on an alternate port.
|
||||
|
||||
2. If using Apache 2.x and PHP 8, then add the following lines. The values will
|
||||
change depending on your version of PHP and Apache.
|
||||
2. If using Apache 2.x with PHP 8, add the following lines. Adjust values for
|
||||
your version of PHP and Apache.
|
||||
|
||||
```ini
|
||||
LoadModule php_module "C:\php\php8apache2_4.dll"
|
||||
@@ -147,30 +143,29 @@ The following changes will be required regardless of your selected Webserver.
|
||||
|
||||
## IIS Specific Steps
|
||||
|
||||
1. Start the Internet Information Services (IIS) Manager, right click on the
|
||||
Default Web Site (in most cases) and select Properties.
|
||||
PHP 8.0 removed ISAPI support. For IIS with PHP 8, use the FastCGI handler
|
||||
instead of ISAPI.
|
||||
|
||||
2. Under the Home Directory tab, select Configuration and click Add. Browse to
|
||||
the path of `php8isapi.dll`, and type in .php as the
|
||||
extension. Note: if using IIS6, Enable All Verbs and Script Engine.
|
||||
1. Install the **IIS FastCGI module** if it is not already present (available
|
||||
via Windows Server roles or Web Platform Installer).
|
||||
|
||||
3. Under the ISAPI Filters tab, click Add and browse to the `php8isapi.dll`
|
||||
file. Name the filter "php" and click OK.
|
||||
2. Open IIS Manager. At the server level, open **FastCGI Settings** and add a
|
||||
new application:
|
||||
- **Full Path**: `C:\php\php-cgi.exe`
|
||||
- Set **InstanceMaxRequests** to `10000`
|
||||
|
||||
5. Under the Documents tab, add `index.php` to the list.
|
||||
3. In the site or server **Handler Mappings**, add a new module mapping:
|
||||
- **Request path**: `*.php`
|
||||
- **Module**: `FastCgiModule`
|
||||
- **Executable**: `C:\php\php-cgi.exe`
|
||||
|
||||
6. If using IIS6, goto Web Service Extensions and add a new Web Service
|
||||
Extension. Name the extension "php", and click Add and browse to the
|
||||
`php8isapi.dll` file, enable Set Extension status to
|
||||
Enable, and click OK.
|
||||
4. Under the **Default Document** feature, add `index.php` to the list.
|
||||
|
||||
7. Give the IIS user read & execute permissions to the required files
|
||||
file `%windir%\system32\cmd.exe`. They will also need read permissions on
|
||||
`cacti_web_root/cacti` and it's subfolders.
|
||||
A anm example provided by one user included the following assuming the
|
||||
Cacti web root is `C:\inetpub\wwwroot\cacti`:
|
||||
5. Give the IIS application pool identity (or `IUSR`) read and execute
|
||||
permissions on `%windir%\system32\cmd.exe`, and read/write/execute on the
|
||||
Cacti directories:
|
||||
|
||||
```
|
||||
```batchfile
|
||||
icacls "C:\windows\system32\cmd.exe" /grant "IUSR:(OI)(CI)(RX,W)"
|
||||
icacls "C:\inetpub\wwwroot\cacti\resource\snmp_queries" /grant "IUSR:(OI)(CI)(RX,W)"
|
||||
icacls "C:\inetpub\wwwroot\cacti\resource\script_server" /grant "IUSR:(OI)(CI)(RX,W)"
|
||||
@@ -183,73 +178,72 @@ The following changes will be required regardless of your selected Webserver.
|
||||
icacls "C:\inetpub\wwwroot\cacti\include\vendor\csrf\csrf-secret.php" /grant "IUSR:(RX,W)"
|
||||
```
|
||||
|
||||
8. Completely stop and start the IIS service using the following commands:
|
||||
6. Completely stop and start the IIS service:
|
||||
|
||||
```batchfile
|
||||
net stop iisadmin
|
||||
net start w3svc
|
||||
```
|
||||
|
||||
## Cygwin Installation Steps for spine and RRDtool
|
||||
## Cygwin Installation Steps for Spine and RRDtool
|
||||
|
||||
1. Installing a single instance of Cygwin, and using it for all applications
|
||||
that require it is recommended so you do not have different versions of the
|
||||
Cygwin dlls laying around on your system, which can cause conflicts.
|
||||
1. Installing a single instance of Cygwin and using it for all applications
|
||||
is recommended. Multiple Cygwin installations can have conflicting DLL
|
||||
versions.
|
||||
|
||||
2. Run `setup-x86_64.exe` you previously download.
|
||||
2. Run the `setup-x86_64.exe` you downloaded previously.
|
||||
|
||||
3. Once you reach the portion of setup entitled Select Packages, install the
|
||||
following noting that the versions numbers may have changed:
|
||||
3. At the **Select Packages** step, install the following packages (version
|
||||
numbers may have changed):
|
||||
|
||||
- Base (include all items)
|
||||
- Libs
|
||||
- libcairo2
|
||||
- libcrypt0
|
||||
- libfontconfig-common
|
||||
- libfontconfig1
|
||||
- libfreetype6
|
||||
- libgcrypt20
|
||||
- libgd3
|
||||
- libglib2.0_0
|
||||
- libmariadb3
|
||||
- libssl1.0
|
||||
- libpango1.0_0
|
||||
- libpng16
|
||||
- libreadline7
|
||||
- zlib-devel
|
||||
- zlib0
|
||||
- Devel
|
||||
- autoconf
|
||||
- automake
|
||||
- binutils
|
||||
- clang
|
||||
- cygwin-devel
|
||||
- gcc-core
|
||||
- gcc-g++
|
||||
- libmariadb-devel
|
||||
- help2man
|
||||
- libargp
|
||||
- libltdl7
|
||||
- libtool
|
||||
- net-snmp-devel
|
||||
- patch
|
||||
- texinfo
|
||||
- w32api-headers
|
||||
- w32api-runtime
|
||||
- windows-default-manifest
|
||||
- Web
|
||||
- wget
|
||||
- libcrypt0
|
||||
- libfontconfig-common
|
||||
- libfontconfig1
|
||||
- libfreetype6
|
||||
- libgcrypt20
|
||||
- libgd3
|
||||
- libglib2.0_0
|
||||
- libmariadb3
|
||||
- libssl1.0
|
||||
- libpango1.0_0
|
||||
- libpng16
|
||||
- libreadline7
|
||||
- zlib-devel
|
||||
- zlib0
|
||||
- Devel
|
||||
- autoconf
|
||||
- automake
|
||||
- binutils
|
||||
- clang
|
||||
- cygwin-devel
|
||||
- gcc-core
|
||||
- gcc-g++
|
||||
- libmariadb-devel
|
||||
- help2man
|
||||
- libargp
|
||||
- libltdl7
|
||||
- libtool
|
||||
- net-snmp-devel
|
||||
- patch
|
||||
- texinfo
|
||||
- w32api-headers
|
||||
- w32api-runtime
|
||||
- windows-default-manifest
|
||||
- Web
|
||||
- wget
|
||||
|
||||
4. Add `c:\cygwin\bin` to your Windows System PATH environment variable.
|
||||
|
||||
5. Move `setup-x86_64.exe` to `c:cygwin` for future use. This binary
|
||||
is updated from time to time, so it's recommended that you update it
|
||||
periodically.
|
||||
5. Move `setup-x86_64.exe` to `c:\cygwin` for future use. Update this binary
|
||||
periodically, as it is updated from time to time.
|
||||
|
||||
## RRDtool Download and Installation Instructions
|
||||
## RRDtool Download and Installation
|
||||
|
||||
1. You can obtain Windows compatible versions for RRDtool at https://rrdtool.org.
|
||||
Install them into C:\rrdtool directory.
|
||||
1. Obtain Windows-compatible builds of RRDtool from https://rrdtool.org and
|
||||
install to `C:\rrdtool`.
|
||||
|
||||
2. Create the MariaDB/MySQL database:
|
||||
|
||||
@@ -263,7 +257,7 @@ The following changes will be required regardless of your selected Webserver.
|
||||
shell> mysql --user=root --password cacti < c:\apache2\htdocs\cacti\cacti.sql
|
||||
```
|
||||
|
||||
4. Create a MySQL username and password for Cacti.
|
||||
4. Create a MySQL username and password for Cacti:
|
||||
|
||||
```sh
|
||||
shell> mysql --user=root --password mysql
|
||||
@@ -279,162 +273,104 @@ The following changes will be required regardless of your selected Webserver.
|
||||
|
||||
## Net-SNMP Installation
|
||||
|
||||
1. If you plan to use any hosts with SNMP v2c support, and are using early
|
||||
versions of PHP, you must download and install the Net-SNMP libraries.
|
||||
Net-SNMP provides installers to install their product. However, caution must
|
||||
be taken if you choose to use long file names as Cacti does not see them as
|
||||
long file names. You will have to user 8.3 notation.
|
||||
1. If you plan to use SNMP v2c and are using early versions of PHP, download
|
||||
and install the Net-SNMP libraries. Net-SNMP provides an installer.
|
||||
|
||||
Type | Name
|
||||
--- | ---
|
||||
Original | `c:\Program Files\Net-SNMP\bin`
|
||||
Becomes | `c:\progra~1\net-snmp\bin`.
|
||||
If you use long directory names, note that Cacti requires 8.3 notation:
|
||||
|
||||
## Cacti spine Installation
|
||||
| Format | Path |
|
||||
| --- | --- |
|
||||
| Original | `c:\Program Files\Net-SNMP\bin` |
|
||||
| 8.3 notation | `c:\progra~1\net-snmp\bin` |
|
||||
|
||||
1. Extract the Spine zip file to `c:\spine` and modify the `spine.conf.dist`
|
||||
file to include the following statements.
|
||||
## Cacti Spine Installation
|
||||
|
||||
1. Extract the Spine zip file to `c:\spine` and edit `spine.conf.dist` with
|
||||
your database details:
|
||||
|
||||
```ini
|
||||
DB_Host 127.0.0.1 or hostname (not localhost)
|
||||
DB_Database cacti
|
||||
DB_User cactiuser
|
||||
DB_Password cactiuser
|
||||
DB_Port 3306
|
||||
DB_Host 127.0.0.1
|
||||
DB_Database cacti
|
||||
DB_User cactiuser
|
||||
DB_Password cactiuser
|
||||
DB_Port 3306
|
||||
```
|
||||
|
||||
All other pre 0.8.6 settings are obsolete.
|
||||
> **Note**: Use `127.0.0.1` rather than `localhost` for the DB host on Windows.
|
||||
|
||||
2. Spine now comes with a binary distribution. However, we strongly suggest that
|
||||
you install Cygwin and then remove all the DLL files and `sh.exe` from the
|
||||
`c:\spine` directory. If you simply downloaded all the Cygwin components and
|
||||
compiled spine from source, the only two files you will require in the
|
||||
`c:\spine` directory will be `spine.exe` itself and `spine.conf`.
|
||||
2. Spine is distributed as a binary. We strongly recommend installing Cygwin
|
||||
and removing all DLL files and `sh.exe` from `c:\spine`, keeping only
|
||||
`spine.exe` and `spine.conf`.
|
||||
|
||||
## Finishing your Setup
|
||||
## Finishing Your Setup
|
||||
|
||||
1. Edit `cacti_web_root/cacti/include/config.php` and specify the MariaDB/MySQL user,
|
||||
password, database, and database port for your Cacti configuration.
|
||||
1. Edit `cacti_web_root/cacti/include/config.php` and specify the database
|
||||
connection details:
|
||||
|
||||
```php
|
||||
$database_default = "cacti";
|
||||
$database_default = "cacti";
|
||||
$database_hostname = "localhost";
|
||||
$database_username = "cactiuser";
|
||||
$database_password = "cactiuser";
|
||||
$database_port = "3306";
|
||||
$database_port = "3306";
|
||||
```
|
||||
|
||||
2. Point your web browser to:
|
||||
2. Browse to `http://your-server/cacti/` and log in with `admin`/`admin`.
|
||||
You will be prompted to change the password immediately.
|
||||
|
||||
`http://your-server/cacti/`
|
||||
3. Go to **Settings → Paths** and verify/update all paths to point to the
|
||||
correct locations. If using Spine, all paths must use forward slashes.
|
||||
|
||||
Log in using the username and password of admin/admin. You will be required
|
||||
to change this password immediately.
|
||||
- PHP Binary Path: `c:/php/php.exe`
|
||||
- RRDtool Binary Path: `c:/rrdtool/rrdtool.exe`
|
||||
- SNMP Binary Paths: `c:/usr/bin/snmpget.exe`, `c:/usr/bin/snmpwalk.exe`, etc.
|
||||
- Cacti Logfile Path: `c:/mycacti/website/cacti/log/cacti.log`
|
||||
- Spine Path: `c:/spine/spine.exe`
|
||||
|
||||
3. From Cacti, go to Settings -> Paths and verify/udate your paths to point to
|
||||
the correct locations. Recommended examples are posted below. If you plan on
|
||||
using Spine, then it is very important that all paths include forward slashes
|
||||
instead of backslashes.
|
||||
4. If you enabled automation, once the Cacti poller starts it will discover
|
||||
compatible devices using your SNMP settings and default automation rules.
|
||||
A Localhost device is created automatically at install time.
|
||||
|
||||
- PHP Binary Path:
|
||||
|
||||
`c:/php/php.exe`
|
||||
|
||||
- RRDtool Binary Path:
|
||||
|
||||
`c:/rrdtool/rrdtool.exe`
|
||||
|
||||
- SNMPGET, SNMPWALK, SNMPBULKWALK, SNMPGETNEXT Paths:
|
||||
|
||||
`c:/usr/bin/snmpget.exe`
|
||||
`c:/usr/bin/snmpwalk.exe`
|
||||
`c:/usr/bin/snmpbulkwalk.exe`
|
||||
`c:/usr/bin/snmpgetnext.exe`
|
||||
|
||||
- Cacti Logfile Path:
|
||||
|
||||
`c:/mycacti/website/cacti/log/cacti.log`
|
||||
|
||||
- Spine Path:
|
||||
|
||||
`c:/spine/spine.exe`
|
||||
|
||||
4. If you chose automation, once the Cacti poller starts, it will create
|
||||
any compatible devices found on the network using the snmp settings
|
||||
and default automation rules. These are tuned specifically for Linux
|
||||
Cisco and Windows devices by default. A Localhost device will automatically
|
||||
be created for you at install time.
|
||||
|
||||
5. Log into the user account you'll be using for the scheduled task and verify
|
||||
starting a Cacti polling cycle works. Do this by running the following from
|
||||
the command prompt:
|
||||
5. Log into the account you will use for the scheduled task and verify a
|
||||
polling cycle works:
|
||||
|
||||
```sh
|
||||
php c:/cacti_web_root/cacti/poller.php
|
||||
```
|
||||
|
||||
The output should look something like the following:
|
||||
Expected output includes lines like:
|
||||
|
||||
```sh
|
||||
C:\>php c:inetpubwwwrootcactipoller.php
|
||||
```
|
||||
OK u:0.00 s:0.06 r:1.32
|
||||
OK u:0.00 s:0.06 r:1.32
|
||||
OK u:0.00 s:0.16 r:2.59
|
||||
OK u:0.00 s:0.17 r:2.62
|
||||
10/28/2005 04:57:12 PM - SYSTEM STATS: Time:4.7272 Method:cmd.php Processes:1 Threads:N/A Hosts:1 HostsPerProcess:2 DataSources:4 RRDsProcessed:2
|
||||
10/28/2005 04:57:12 PM - SYSTEM STATS: Time:4.7272 Method:cmd.php ...
|
||||
```
|
||||
|
||||
After this has ran once, you should have `cacti.log` in `/cacti/log/` and
|
||||
RRDfiles in `/cacti/rra/`.
|
||||
After the first run, `cacti.log` will appear in `/cacti/log/` and RRD files
|
||||
in `/cacti/rra/`.
|
||||
|
||||
8. You are going to need to schedule a task while logged on as an Administrator.
|
||||
This task is required to you can run `poller.php` every 5 minutes. Make sure
|
||||
the Task Scheduler service is started and follow the steps below to begin.
|
||||
6. Schedule a recurring task to run `poller.php` every 5 minutes:
|
||||
|
||||
> **Note:* The following instructions are based on most Windows installs.
|
||||
> **Note**: The following instructions apply to most Windows versions.
|
||||
|
||||
1. Select Start -> Settings -> Control Panel and double click on Scheduled
|
||||
Tasks.
|
||||
|
||||
2. Double click on Add Scheduled Task.
|
||||
|
||||
3. Click Next and Browse on the following screen. Find `c:php` and select
|
||||
`php.exe`. Choose Daily on and click Next.
|
||||
|
||||
4. Click Next again without changing the time or date settings.
|
||||
|
||||
5. In the steps above, you should have granted access to the Cacti user, but
|
||||
if the poller encounters problems, make sure you have the correct permissions
|
||||
to the directories below:
|
||||
|
||||
`cacti_web_root/cacti/rra`
|
||||
`cacti_web_root/log`
|
||||
|
||||
Make sure the user has read, write, and execute access to the following
|
||||
directories:
|
||||
|
||||
`c:\php`
|
||||
`c:\phpsapi`
|
||||
|
||||
7. Click Next and Finish to close the wizard.
|
||||
|
||||
8. Right click on the task you just created, and select Properties.
|
||||
|
||||
9. Select the Schedule tab.
|
||||
|
||||
10. Make sure Daily is selected and click the Advanced button.
|
||||
|
||||
11. Check the Repeat checkbox, set it for 5 minutes and set the duration for
|
||||
24 hours.
|
||||
|
||||
12. Click Ok
|
||||
|
||||
13. In the Run textbox enter the following text making sure to use the
|
||||
appropriate paths.
|
||||
1. Open **Task Scheduler** (Control Panel → Scheduled Tasks).
|
||||
2. Click **Add Scheduled Task** and then **Next**.
|
||||
3. Browse to `c:\php` and select `php.exe`. Choose **Daily** and click **Next**.
|
||||
4. Click **Next** without changing the time or date settings.
|
||||
5. Ensure the task account has the correct permissions on:
|
||||
- `cacti_web_root/cacti/rra`
|
||||
- `cacti_web_root/log`
|
||||
- `c:\php`
|
||||
- `c:\phpsapi`
|
||||
6. Click **Next** and **Finish** to close the wizard.
|
||||
7. Right-click the task and select **Properties**.
|
||||
8. On the **Schedule** tab, confirm **Daily** is selected and click **Advanced**.
|
||||
9. Check **Repeat**, set to **5 minutes**, and set duration to **24 hours**.
|
||||
10. Click **OK**.
|
||||
11. In the **Run** field, enter:
|
||||
|
||||
`c:\php\php.exe c:\mycacti\website\cacti\poller.php`
|
||||
|
||||
The start in box should say `c:\mycacti\website\cacti`.
|
||||
Set **Start in** to `c:\mycacti\website\cacti`.
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -138,7 +138,7 @@ version = 2.8
|
||||
longname = Device Monitoring
|
||||
author = The Cacti Group
|
||||
email =
|
||||
homepage = http://www.cacti.net
|
||||
homepage = https://www.cacti.net
|
||||
compat = 1.2.15
|
||||
requires = thold:1.2.1
|
||||
capabilities = online_view:1, online_mgmt:1, offline_view:0, offline_mgmt:0, remote_collect:0
|
||||
@@ -153,7 +153,7 @@ version = 4.2
|
||||
longname = Syslog Monitoring
|
||||
author = The Cacti Group
|
||||
email =
|
||||
homepage = http://www.cacti.net
|
||||
homepage = https://www.cacti.net
|
||||
compat = 1.2.23
|
||||
nosync = config.php
|
||||
capabilities = online_view:1, online_mgmt:1, offline_view:1, offline_mgmt:1, remote_collect:0, remote_poller:1
|
||||
@@ -192,7 +192,7 @@ plugins other than RRDtool.
|
||||
- [Billboard.js](https://naver.github.io/billboard.js/)
|
||||
- [D3](https://d3js.org/)
|
||||
- [Chart.js](http://www.chartjs.org/)
|
||||
- [DyGraphs](http://dygraphs.com/)
|
||||
- [DyGraphs](https://dygraphs.com/)
|
||||
- [jQuery Sparklines](http://omnipotent.net/jquery.sparkline/)
|
||||
|
||||
## Logging
|
||||
|
||||
@@ -438,7 +438,7 @@ This hook allows you to add custom actions to the host edit page, below the
|
||||
|
||||
## device_filter_end
|
||||
|
||||
This hook allows you to add custom filter fields before Cacti buildin filter to
|
||||
This hook allows you to add custom filter fields before Cacti built-in filter to
|
||||
the host list page
|
||||
|
||||
| file | introduced | retired |
|
||||
@@ -447,7 +447,7 @@ the host list page
|
||||
|
||||
## device_filter_start
|
||||
|
||||
This hook allows you to add custom filter fields after Cacti buildin filter to
|
||||
This hook allows you to add custom filter fields after Cacti built-in filter to
|
||||
the host list page
|
||||
|
||||
| file | introduced | retired |
|
||||
|
||||
+2
-3
@@ -102,8 +102,7 @@ data, but doing this in a timely fashion, will minimize data loss.
|
||||
|
||||
Ensure you restart rsyslog after these changes are completed. Other logging
|
||||
servers such as Syslog-NG are also supported with this plugin. Please see some
|
||||
additional documentation here: [Cacti Documentation
|
||||
Site](https://docs.cacti.net/plugin:syslog.config)
|
||||
additional documentation in the [plugin_syslog repository](https://github.com/Cacti/plugin_syslog)
|
||||
|
||||
We are using the pure integer values that rsyslog provides to both the priority
|
||||
and facility in this version syslog, which makes the data collection must less
|
||||
@@ -374,7 +373,7 @@ you can leverage the built in variable substitution to format the input to the s
|
||||
The Syslog plugin allows administrators to delete incoming messages
|
||||
so they are not stored in the DB.
|
||||
For example, if you are not interested in seeing Syslog messages
|
||||
everytime a user logs into a device you may add a rule to delete the message.
|
||||
every time a user logs into a device you may add a rule to delete the message.
|
||||
|
||||
to do this click on the Syslog settings tab in the console then click removal rules
|
||||
|
||||
|
||||
+4
-4
@@ -40,7 +40,7 @@ this file. It may contain important installation information.
|
||||

|
||||
|
||||
After this, the **Plugin** is installed and enabled. However, there will likely
|
||||
be onfiguration that must take place after the **Plugin** is enabled. See the
|
||||
be configuration that must take place after the **Plugin** is enabled. See the
|
||||
**Plugin** documentation for instructions on how to configure and use them.
|
||||
|
||||
## Updating a Plugin
|
||||
@@ -82,9 +82,9 @@ plugin which will not drop the SQL tables and thus save your settings.
|
||||
|
||||
### Video Walkthrough
|
||||
|
||||
[](https://youtu.be/TPKu-2XYKok)
|
||||
[](https://youtu.be/TPKu-2XYKok)
|
||||
|
||||
## Unistall a Plugin
|
||||
## Uninstall a Plugin
|
||||
|
||||
To uninstall a plugin go into the plugins page
|
||||
`Console > Configuration > Plugins` Click on the plugin to Disable the plugin.
|
||||
@@ -107,7 +107,7 @@ the plugin will show to be available to be installed.
|
||||
|
||||
Some dependencies such as THOLD aka Thresholds rely on another plugin in this
|
||||
case thold reliese on the monitor plugin which is missing in this case you will
|
||||
see the below messege box in order to continue you must install the required
|
||||
see the below message box in order to continue you must install the required
|
||||
plugin.
|
||||
|
||||

|
||||
|
||||
@@ -150,7 +150,7 @@ use your own | invoke Nagios agents
|
||||
|
||||
and much more...
|
||||
|
||||
There a two ways extending Cacti's build-in capabilities:
|
||||
There are two ways to extend Cacti's built-in capabilities:
|
||||
|
||||
[Data Input Methods](Data-Input-Methods.md) for querying **single or
|
||||
multiple**, but **non-indexed** readings
|
||||
|
||||
@@ -94,8 +94,8 @@ PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
This section contains the relevant information on how to ensure that any
|
||||
contribution is kept to the same standards that are applied for the Cacti
|
||||
Group. It should be noted that non-compliance does not mean automatically
|
||||
exclusion of proposed changes.
|
||||
Group. Non-compliance does not automatically mean exclusion of proposed
|
||||
changes.
|
||||
|
||||
### Known Issues
|
||||
|
||||
@@ -109,9 +109,9 @@ PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
3. Installing Cacti on Linux
|
||||
|
||||
3.1. [Installation Under CentOS 7 - LAMP Stack](Install-Under-CentOS_LAMP.md)
|
||||
3.1. [Installation Under Enterprise Linux (RHEL/Rocky/AlmaLinux) - LAMP Stack](Install-Under-Enterprise-Linux-LAMP.md)
|
||||
|
||||
3.2. [Installation Under CentOS 7 - LEMP Stack](Install-Under-CentOS_LEMP.md)
|
||||
3.2. [Installation Under Enterprise Linux (RHEL/Rocky/AlmaLinux) - LEMP Stack](Install-Under-Enterprise-Linux-LEMP.md)
|
||||
|
||||
3.3.
|
||||
[Installation Under Ubuntu/Debian - LAMP Stack](Installing-Under-Ubuntu-Debian.md)
|
||||
@@ -264,7 +264,7 @@ PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
13. Reporting
|
||||
|
||||
13.1. [Reports Admistrative Interface](Reports-Admin.md)
|
||||
13.1. [Reports Administrative Interface](Reports-Admin.md)
|
||||
|
||||
13.2. [Reports User Interface](Reports-User.md)
|
||||
|
||||
@@ -386,7 +386,7 @@ Watch Howto's and Tutorials on the Cacti Official YouTube page if you prefer. If
|
||||
|
||||
### Template Specific Documentation
|
||||
|
||||
This section will be for template specific configuration requriments
|
||||
This section will be for template specific configuration requirements
|
||||
|
||||
1. [Apache Server Template](template_apache_config.md)
|
||||
|
||||
@@ -394,7 +394,7 @@ This section will be for template specific configuration requriments
|
||||
|
||||
### Device Template Specific Documentation
|
||||
|
||||
This section will be for device template specific configuration requriments
|
||||
This section will be for device template specific configuration requirements
|
||||
|
||||
1. [Proxmox External Storage Usage with Linux Device Template](device-template-specific-proxmox.md)
|
||||
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ After that, the options below define what Graphs from the Device are to be inclu
|
||||
- **Sequence** - The Graph Items Sequence number. This is a Read Only variable.
|
||||
|
||||
The last **Report Item** that we will document here is the **Tree** type.
|
||||
The Text and Horizontal Rule types are pretty much self explanitory.
|
||||
The Text and Horizontal Rule types are pretty much self explanatory.
|
||||
The image below is the layout that will be shown
|
||||
when you change the **Report Item** to **Tree**.
|
||||
|
||||
|
||||
+44
-44
@@ -2,50 +2,54 @@
|
||||
|
||||
Cacti requires that the following software is installed on your system.
|
||||
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
|
||||
> Composer will be used to ensure all of the libraries are installed and are up to date.
|
||||
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required. When installing from source or
|
||||
> the develop branch, PHP Composer is required to install vendor dependencies. Pre-packaged
|
||||
> releases include the required vendor files, so Composer is not needed for standard installs.
|
||||
|
||||
- Web Server that supports PHP e.g. Apache, Nginx, or IIS
|
||||
|
||||
- Build environment when using spine (gcc, automake, autoconf, libtool,
|
||||
help2man)
|
||||
|
||||
- RRDtool 1.3 or greater, 1.5+ recommended
|
||||
- RRDtool 1.5 or greater (1.8+ required for Cacti 1.3.x / develop branch)
|
||||
|
||||
- PHP 5.4 or greater, 5.5+ recommended
|
||||
- PHP 8.1 or greater
|
||||
- Required modules:
|
||||
- ctype, date, filter, gettext, gd, gmp, intl
|
||||
- hash, json, ldap, mbstring, openssl, pcre
|
||||
- PDO, pdo_mysql, session, simplexml, sockets, spl
|
||||
- standard, xml, zlib
|
||||
- ctype, date, dom, filter, gettext, gd, gmp, intl
|
||||
- hash, json, ldap, mbstring, mysqlnd, openssl, pcre
|
||||
- PDO, pdo_mysql, Phar, session, simplexml, sockets, spl
|
||||
- sqlite3, standard, xml, zlib
|
||||
- com_dotnet (windows only)
|
||||
- posix (linux only)
|
||||
- pcntl, posix (linux only)
|
||||
|
||||
- Optional modules:
|
||||
- snmp (falls back to NetSNMP)
|
||||
- snmp - The PHP SNMP extension is optional. Cacti selectively bypasses it in
|
||||
favor of Net-SNMP binaries for SNMPv3 queries, IPv6 targets, bulkwalk, and
|
||||
hex-string output. You do not need to remove php-snmp; Cacti handles the
|
||||
fallback automatically based on query type and device configuration.
|
||||
|
||||
- Problematic software and configuration
|
||||
- On Linux OS do not turn on SELinux or APPArmor
|
||||
- On web server do not turn on ModSecurity
|
||||
- SELinux, AppArmor, and ModSecurity can interfere with ICMP ping, socket
|
||||
connections, and RRDtool file writes. Configure appropriate policies or
|
||||
exceptions rather than disabling these protections entirely. Disabling
|
||||
SELinux or AppArmor system-wide is a security regression and is not
|
||||
recommended for production systems.
|
||||
|
||||
SELinux and ModSecurity can cause problem with ICMP ping, socket connections, ...
|
||||
|
||||
- MySQL 5.6 or MariaDB 5.5 or greater
|
||||
- MySQL 5.7 or MariaDB 10.2 or greater
|
||||
- Timezone support must be enabled
|
||||
|
||||
- The following are my.cnf recommendations:
|
||||
|
||||
- **version >= 5.6**
|
||||
- **version >= 5.7 (MySQL) / 10.2 (MariaDB)**
|
||||
|
||||
MySQL 5.6+ and MariaDB 10.0+ are great releases, and are very good
|
||||
versions to choose. Make sure you run the very latest release though
|
||||
which fixes a long standing low level networking issue that was causing
|
||||
spine many issues with reliability.
|
||||
MySQL 5.7+ and MariaDB 10.2+ are the minimum supported versions.
|
||||
Make sure you run the very latest release though, which fixes a long
|
||||
standing low level networking issue that was causing spine many issues
|
||||
with reliability.
|
||||
|
||||
- **innodb = ON**
|
||||
|
||||
It is recommended that you enable InnoDB in any MySQL/MariaDB version
|
||||
greater than 5.1.
|
||||
Enable InnoDB in any MySQL/MariaDB version greater than 5.1.
|
||||
|
||||
- **collation_server = utf8mb4_unicode_ci**
|
||||
|
||||
@@ -78,7 +82,7 @@ Cacti requires that the following software is installed on your system.
|
||||
then you must leave headroom for user connections, which will change
|
||||
depending on the number of concurrent login accounts.
|
||||
|
||||
- **max_heap_table_size >= 5**
|
||||
- **max_heap_table_size >= 5% of system RAM**
|
||||
|
||||
If using the Cacti Performance Booster and choosing a memory storage
|
||||
engine, you have to be careful to flush your Performance Booster buffer
|
||||
@@ -94,15 +98,15 @@ Cacti requires that the following software is installed on your system.
|
||||
expected consumption of the Performance Booster tables under Console ->
|
||||
System Utilities -> View Boost Status.
|
||||
|
||||
NOTE: If you are using a recent version of MariaDB or MySQL, using
|
||||
memory tables is no longer a requirement. You may choose to continue
|
||||
to use memory tables to spare your NVMe or SSD drives excessive use
|
||||
wear. However, outside of that, it is no longer a requirement.
|
||||
As such, the value of the **max_heap_table_size** is not as important
|
||||
as in previous releases. Additionally, if you are using Galera
|
||||
replication with Cacti, all your tables must be in InnoDB format. So,
|
||||
the only feature in MariaDB or MySQL becomes temporary table space
|
||||
which may not be dependent on the **max_heap_table_size**.
|
||||
> **Note**: If you are using a recent version of MariaDB or MySQL, using
|
||||
> memory tables is no longer a requirement. You may choose to continue
|
||||
> to use memory tables to spare your NVMe or SSD drives excessive use
|
||||
> wear. However, outside of that, it is no longer a requirement.
|
||||
> As such, the value of the **max_heap_table_size** is not as important
|
||||
> as in previous releases. If you are using Galera
|
||||
> replication with Cacti, all your tables must be in InnoDB format, and
|
||||
> the only benefit of MariaDB or MySQL memory tables becomes temporary
|
||||
> table space, which may not be dependent on **max_heap_table_size**.
|
||||
|
||||
- **table_open_cache >= 200**
|
||||
|
||||
@@ -135,7 +139,7 @@ Cacti requires that the following software is installed on your system.
|
||||
migrate to the per file storage by enabling the feature, and then
|
||||
running an alter statement on all InnoDB tables.
|
||||
|
||||
- **innodb_buffer_pool_size >= 25**
|
||||
- **innodb_buffer_pool_size >= 25% of system RAM**
|
||||
|
||||
InnoDB will hold as much tables and indexes in system memory as is
|
||||
possible. Therefore, you should make the innodb_buffer_pool large
|
||||
@@ -149,10 +153,10 @@ Cacti requires that the following software is installed on your system.
|
||||
With modern SSD type storage, this operation actually degrades the disk
|
||||
more rapidly and adds a 50% overhead on all write operations.
|
||||
|
||||
- **innodb_additional_mem_pool_size >= 80M**
|
||||
- ~~**innodb_additional_mem_pool_size**~~ (removed in MySQL 5.7.4 / MariaDB 10.0)
|
||||
|
||||
This is where metadata is stored. If you had a lot of tables, it would
|
||||
be useful to increase this.
|
||||
This setting no longer exists. MySQL/MariaDB manages metadata memory
|
||||
internally. Remove it from my.cnf if present; MySQL 8.0+ will error on startup.
|
||||
|
||||
- **innodb_lock_wait_timeout >= 50**
|
||||
|
||||
@@ -189,12 +193,9 @@ Cacti requires that the following software is installed on your system.
|
||||
innodb_buffer_pool is less than 1GB, you should use the pool size
|
||||
divided by 128MB. Continue to use this equation up to the max of 64.
|
||||
|
||||
Note:
|
||||
|
||||
- Some of these recommendations may not be applicable depending on the
|
||||
version of MySQL/MariaDB you are running.
|
||||
|
||||
- Some of these recommendations should be scaled where appropriate
|
||||
> **Note**: Some of these recommendations may not be applicable depending
|
||||
> on the version of MySQL/MariaDB you are running, and some should be
|
||||
> scaled where appropriate.
|
||||
|
||||
- Newer MySQL/MariaDB software are using [strict
|
||||
modes](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html) and it can
|
||||
@@ -225,8 +226,7 @@ paste them into my.cnf
|
||||
innodb_buffer_pool_size = 250M
|
||||
innodb_io_capacity = 5000
|
||||
innodb_io_capacity_max = 10000
|
||||
innodb_file_format = Barracuda
|
||||
innodb_large_prefix = 1
|
||||
# innodb_file_format and innodb_large_prefix are removed in MySQL 8.0; omit on MySQL 8.0+ / MariaDB 10.3+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
+4
-4
@@ -43,7 +43,7 @@ Those settings include:
|
||||
- **Poller Interval** - This setting must align with the highest frequency
|
||||
**Data Source Profile** polling interval.
|
||||
|
||||
> **NOTE**: This only applies to the **Data Source Profiles** that are in
|
||||
> **Note**: This only applies to the **Data Source Profiles** that are in
|
||||
> use. If you only plan on polling every minute and therefore only using
|
||||
> the `1 Minute` **Data Source Profile**, then your **Poller Interval**
|
||||
> should be `1 Minute` as well.
|
||||
@@ -81,7 +81,7 @@ Those settings include:
|
||||
returned per UDP turn when obtaining `snmpwalk` data from an
|
||||
SNMP enabled **Device**.
|
||||
|
||||
> **NOTE**: This only works with SNMP v2 and v3. It is not supported
|
||||
> **Note**: This only works with SNMP v2 and v3. It is not supported
|
||||
> on older SNMP v1 **Devices**.
|
||||
|
||||
- **SNMP Get OID Limit** - The default maximum number of SNMP Get
|
||||
@@ -158,7 +158,7 @@ Those settings include:
|
||||
- **Threads per Process** - The default number of `spine` threads
|
||||
per Concurrent Poller Process above.
|
||||
|
||||
> **NOTE**: The Thread setting only applies if you are using the
|
||||
> **Note**: The Thread setting only applies if you are using the
|
||||
> `spine` poller. It does not apply to the `cmd.php` poller.
|
||||
|
||||
## Additional Spine Parameters
|
||||
@@ -179,7 +179,7 @@ Those settings include:
|
||||
is it's ability to create a pool of memory resident PHP
|
||||
interpreters for running PHP scripts, making spine very powerful.
|
||||
Every concurrent process will have this many memory resident
|
||||
PHP interpreters pooled fro running scripts.
|
||||
PHP interpreters pooled for running scripts.
|
||||
|
||||
- **Script and Script Server Timeout Value** - This is the timeout
|
||||
to stop run-on script from blocking poller performance. If a script
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ The standard Settings sub-tabs include:
|
||||
that the Cacti administrator has control of. It also includes some
|
||||
settings around RRDfile maintenance.
|
||||
- [Device Defaults](Settings-Device-Defaults.md) - This is where you can establish
|
||||
presets that every new Cacti **Device** get's by default, through
|
||||
presets that every new Cacti **Device** gets by default, through
|
||||
**Automation**, the CLI or though the Web Interface.
|
||||
- [Poller](Settings-Poller.md) - Though most **Poller** settings have been
|
||||
moved to the **Data Collectors**, some are still managed at the system
|
||||
|
||||
@@ -33,7 +33,7 @@ While Spine is really fast, choosing the correct setup will ensure that all
|
||||
processor resources are used. Required settings for Maximum Concurrent Poller
|
||||
Processes are 1-2 times the number of CPU cores available for Spine.
|
||||
|
||||
When using spine, you must be senstivive to the number of connections that are
|
||||
When using spine, you must be sensitive to the number of connections that are
|
||||
available for MySQL or MariaDB. Under
|
||||
`Console > Utilities > System Utilities > General` Cacti will provide a
|
||||
recommended `max_connection` for MySQL/MariaDB.
|
||||
@@ -49,13 +49,13 @@ recommended `max_connection` for MySQL/MariaDB.
|
||||
| Name | Description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Maximum Threads per Process | The maximum threads allowed per process. Using a higher number when using Spine will improve performance. Required settings are 10-15. Values above 50 are most often insane and may degrade performance vs. improve it. |
|
||||
| Number of PHP Script Servers | The number of concurrent script server processes to run per Spine process. Settings between 1 and 10 are accepted. Script Servers will pre-load a PHP environment. Then, the Script Server Scripts are included into that environment to save the overhead of reloading PHP and re-interpreting the binary for each call. |
|
||||
| Number of PHP Script Servers | The number of concurrent script server processes to run per Spine process. Settings between 1 and 15 are accepted. Script Servers will pre-load a PHP environment. Then, the Script Server Scripts are included into that environment to save the overhead of reloading PHP and re-interpreting the binary for each call. |
|
||||
|
||||
###### Table 15-3. Spine Parameters maintained at the Device Level
|
||||
|
||||
| Name | Description |
|
||||
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| The Maximum SNMP OIDs Per SNMP Get Request | The maximum number of SNMP get OIDs to issue per SNMP request. Increasing this value increases poller performance over slow links. The maximum value is 60 OIDs, but that value is highly dependent on the MTU for your links to the remote devices. In some cases, using a **Remote Data Collector** is much more effective for polling remote **Davices**. Additionally, some **Device Types** do not handle large SNMP OID get requests. It's best to experiment until you find the correct setting. |
|
||||
| The Maximum SNMP OIDs Per SNMP Get Request | The maximum number of SNMP get OIDs to issue per SNMP request. Increasing this value increases poller performance over slow links. The maximum value is 60 OIDs, but that value is highly dependent on the MTU for your links to the remote devices. In some cases, using a **Remote Data Collector** is much more effective for polling remote **Devices**. Additionally, some **Device Types** do not handle large SNMP OID get requests. It's best to experiment until you find the correct setting. |
|
||||
| Device Threads | The maximum number spine threads used to gather information from a **Device**. When using this setting at the **Device** level, you have to ensure that you have enough threads allocated to a process so as to not block other **Devices** being polled from the same spine binary. |
|
||||
|
||||
### Installing Spine
|
||||
|
||||
@@ -428,7 +428,7 @@ the file.
|
||||
| This code is designed, written, and maintained by the Cacti Group. See |
|
||||
| about.php and/or the AUTHORS file for specific developer information. |
|
||||
+-------------------------------------------------------------------------+
|
||||
| http://www.cacti.net/ |
|
||||
| https://www.cacti.net/ |
|
||||
+-------------------------------------------------------------------------+
|
||||
*/
|
||||
```
|
||||
|
||||
@@ -141,7 +141,7 @@ prefix are core Cacti API's that are only to be used by third party
|
||||
developers and should NEVER include a call to a
|
||||
`$_REQUEST`, `$_POST`, or `$_GET` variable.
|
||||
|
||||
Files that have the `html` prefix, generally invole the rendering of page
|
||||
Files that have the `html` prefix, generally involve the rendering of page
|
||||
content, for example the `html_form.php` library draws forms and
|
||||
`html_validate.php` includes functions to validate page variables there
|
||||
are other various files in the current cacti `lib/` directory that will
|
||||
|
||||
+1
-1
@@ -393,7 +393,7 @@ Graph Templates and Data Queries available for this Class of **Devices**.
|
||||
Assume, you're searching for a specific set of templates to monitor a special
|
||||
type of device. Apart from designing templates from scratch, there's a good
|
||||
chance to find a solution in the
|
||||
[Scripts and Templates Forum](http://forums.cacti.net/forum-12.html). The set of
|
||||
[Scripts and Templates Forum](https://forums.cacti.net/forum-12.html). The set of
|
||||
templates is usually provided as a single XML file holding all required
|
||||
definitions for a data template and a graph template. Depending on the goal of
|
||||
the original author, he/she may have provided a **Device Template** as well as
|
||||
|
||||
@@ -36,19 +36,15 @@ of how Tree Sorting is accomplished.
|
||||
|
||||

|
||||
|
||||
### Table 8-1. Tree Sporting Type Definitions
|
||||
### Table 8-1. Tree Sorting Type Definitions
|
||||
|
||||
Field | Value | Description
|
||||
--- | --- | ---
|
||||
Name | Name of the tree entry. | The sort order of all trees themselves is
|
||||
always alphabetical
|
||||
Sorting Type | Manual Ordering (No Sorting) | Y
|
||||
ou may chance the sequence at your will
|
||||
Alphabetical Ordering | 1, Ab, ab | All sub-trees are ordered alphabetically,
|
||||
unless specifies otherwise (you may chance sort options at sub-tree label)
|
||||
Name | Name of the tree entry. | The sort order of all trees themselves is always alphabetical
|
||||
Sorting Type | Manual Ordering (No Sorting) | You may change the sequence at your will
|
||||
Alphabetical Ordering | 1, Ab, ab | All sub-trees are ordered alphabetically, unless specified otherwise (you may change sort options at sub-tree label)
|
||||
Natural Ordering | ab1, ab2, ab7, ab10, ab20 | N/A
|
||||
Numeric Ordering | 01, 02, 4, 04 | Leading zeroes are not taken into account
|
||||
when ordering numerically
|
||||
Numeric Ordering | 01, 02, 4, 04 | Leading zeroes are not taken into account when ordering numerically
|
||||
|
||||
End users will not be able to view the **Tree** or it's Graphs until you
|
||||
publish it. To edit a **Tree**, you will be required to lock it for your use.
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
# Upgrading Cacti Under FreeBSD
|
||||
|
||||
1. Backup the old Cacti database.
|
||||
1. Back up the old Cacti database.
|
||||
|
||||
```sh
|
||||
shell> mysqldump -l --add-drop-table --lock-tables=false cacti > mysql.cacti
|
||||
shell> mysqldump --single-transaction --add-drop-table cacti > mysql.cacti
|
||||
```
|
||||
|
||||
> **Note:** You will probably have to specify the -u and -p flags for the
|
||||
> MySQL username and password. This user must have permission to read from
|
||||
> Cacti's database or you will end up with an empty backup.
|
||||
> **Note**: You will probably need to specify `-u` and `-p` for the MySQL
|
||||
> username and password. This user must have permission to read from Cacti's
|
||||
> database or you will end up with an empty backup.
|
||||
>
|
||||
> `--single-transaction` provides a consistent InnoDB snapshot without
|
||||
> locking tables, which is the correct approach for Cacti's InnoDB schema.
|
||||
|
||||
2. Backup the old Cacti directory.
|
||||
2. Back up the old Cacti directory.
|
||||
|
||||
```sh
|
||||
shell> cd /usr/local/share
|
||||
shell> tar -zcf cacti_backup_YYYYMMDD.tgz cacti
|
||||
```
|
||||
|
||||
3. Install new version from compiled packages or FreeBSD ports.
|
||||
3. Install the new version from compiled packages or FreeBSD ports.
|
||||
|
||||
```sh
|
||||
shell> pkg delete cacti
|
||||
@@ -34,8 +37,8 @@
|
||||
shell> make deinstall clean install
|
||||
```
|
||||
|
||||
4. If you are using the optional feature Performance -> Image Caching, also
|
||||
recreate the folder and correct the permissions.
|
||||
4. If you are using the optional **Performance → Image Caching** feature,
|
||||
recreate the cache folder and set the correct permissions.
|
||||
|
||||
```sh
|
||||
shell> cd /usr/local/share/cacti
|
||||
@@ -43,16 +46,12 @@
|
||||
shell> chown -R cacti cache
|
||||
```
|
||||
|
||||
5. Point your web browser to:
|
||||
5. Browse to `http://your-server/cacti/` and follow the on-screen instructions
|
||||
to update the database schema to the new version.
|
||||
|
||||
`http://your-server/cacti/`
|
||||
|
||||
Follow the on-screen instructions so your database can be updated to the
|
||||
new version.
|
||||
|
||||
> Note that starting with Cacti 1.0, all **Data Collectors** will upgrade
|
||||
> themselves automatically within two polling cycles. If for some reason they
|
||||
> do not, upgrade them one at a time.
|
||||
> **Note**: Starting with Cacti 1.0, all Data Collectors upgrade themselves
|
||||
> automatically within two polling cycles. If they do not, upgrade them one
|
||||
> at a time.
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -1,100 +1,77 @@
|
||||
# Upgrading Cacti under Windows
|
||||
# Upgrading Cacti Under Windows
|
||||
|
||||
Download [latest stable version](https://www.cacti.net/download_cacti.php)
|
||||
of Cacti which is referred to as `cacti-xxx.zip` in this document.
|
||||
Download the [latest stable version](https://www.cacti.net/download_cacti.php)
|
||||
of Cacti, referred to as `cacti-xxx.zip` in this document.
|
||||
|
||||
1. Stop poller.
|
||||
1. Stop the poller:
|
||||
- Cacti Console → Configuration → Settings → Poller
|
||||
- Uncheck **Data Collection Enabled** and save.
|
||||
|
||||
- Cacti Console
|
||||
|
||||
- Configuration
|
||||
|
||||
- Settings
|
||||
|
||||
- Poller
|
||||
|
||||
- uncheck Data Collection Enabled and Save
|
||||
|
||||
1. Run Command Prompt as administrator and backup database.
|
||||
2. Run Command Prompt as Administrator and back up the database:
|
||||
|
||||
```sh
|
||||
shell> cd Documents
|
||||
shell> "\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe" -uroot -p -l
|
||||
--add-drop-table cacti > cacti-version-YYYYMMDD.sql
|
||||
shell> mysqldump.exe -uroot -p --single-transaction --add-drop-table cacti > cacti-version-YYYYMMDD.sql
|
||||
```
|
||||
|
||||
1. Backup the old Cacti directory.
|
||||
> **Note**: `mysqldump.exe` is located under your MySQL/MariaDB installation
|
||||
> bin directory, e.g. `%PROGRAMFILES%\MySQL\MySQL Server X.Y\bin\`.
|
||||
|
||||
3. Back up the old Cacti directory:
|
||||
|
||||
```sh
|
||||
shell> cd \inetpub\wwwroot
|
||||
shell> robocopy cacti cacti-version-YYYYMMDD /s /b /copyall
|
||||
```
|
||||
|
||||
1. Windows Update
|
||||
4. Run **Windows Update**.
|
||||
|
||||
1. MySQL
|
||||
5. Upgrade MySQL/MariaDB:
|
||||
- Open **MySQL Installer - Community** (or the MariaDB upgrade tool)
|
||||
- Update the catalog
|
||||
- Upgrade the server
|
||||
|
||||
- Open `MySQL Installer - Community`
|
||||
6. Upgrade PHP:
|
||||
- Back up the `C:\php\` folder
|
||||
- Download a [supported PHP version](https://www.php.net/supported-versions.php)
|
||||
from [PHP for Windows](https://windows.php.net/download/) using the
|
||||
appropriate build for IIS (Non-Thread Safe + FastCGI) or Apache
|
||||
- Overwrite `C:\php\` with the contents of the new zip file
|
||||
|
||||
- update Catalog
|
||||
7. Install the new Cacti version:
|
||||
Extract the contents of the `cacti-xxx` folder from `cacti-xxx.zip` to
|
||||
`C:\inetpub\wwwroot\cacti\`, replacing existing files.
|
||||
|
||||
- upgrade MySQL Server
|
||||
|
||||
1. PHP
|
||||
|
||||
- Backup `C:\php\` folder
|
||||
|
||||
- Download a [supported version](http://php.net/supported-versions.php) of
|
||||
[PHP for Windows](https://windows.php.net/download/) using the appropriate
|
||||
build for IIS or Apache. If missing, install the appropriate VC build.
|
||||
|
||||
- Overwrite `C:\php\` folder contents from zip file.
|
||||
|
||||
1. Overwrite new Cacti version to production folder.
|
||||
Extract contents of `cacti-xxx` folder in `cacti-xxx.zip` to
|
||||
`C:\inetpub\wwwroot\cacti\` and replace files.
|
||||
|
||||
1. Edit `include/config.php` and specify the MySQL user, password and database
|
||||
for your Cacti configuration.
|
||||
8. Edit `include/config.php` and verify the database connection details:
|
||||
|
||||
```sh
|
||||
shell> notepad cacti/include/config.php
|
||||
```
|
||||
|
||||
```php
|
||||
$database_type = "mysql";
|
||||
$database_default = "cacti";
|
||||
$database_type = "mysql";
|
||||
$database_default = "cacti";
|
||||
$database_hostname = "localhost";
|
||||
$database_username = "cactiuser";
|
||||
$database_password = "cacti";
|
||||
```
|
||||
|
||||
1. Point your web browser to: `http://localhost/cacti/`
|
||||
9. Browse to `http://localhost/cacti/` and follow the on-screen instructions
|
||||
to update the database schema to the new version.
|
||||
|
||||
Follow the on-screen instructions so your database can be updated to the
|
||||
new version.
|
||||
If any session variables need adjustment, set them from the MySQL/MariaDB
|
||||
command-line client:
|
||||
|
||||
Open "MySQL 5.7 Command Line Client" and set variables as needed in
|
||||
following format:
|
||||
|
||||
```sh
|
||||
set global max_allowed_packet = 16777216;
|
||||
set global tmp_table_size = 67108864;
|
||||
set global join_buffer_size = 67108864;
|
||||
set global innodb_flush_log_at_timeout = 3;
|
||||
```sql
|
||||
SET GLOBAL max_allowed_packet = 16777216;
|
||||
SET GLOBAL tmp_table_size = 67108864;
|
||||
SET GLOBAL join_buffer_size = 67108864;
|
||||
SET GLOBAL innodb_flush_log_at_timeout = 3;
|
||||
```
|
||||
|
||||
1. Start poller
|
||||
|
||||
- Cacti Console
|
||||
|
||||
- Configuration
|
||||
|
||||
- Settings
|
||||
|
||||
- Poller
|
||||
|
||||
- check Data Collection Enabled and Save
|
||||
10. Re-enable the poller:
|
||||
- Cacti Console → Configuration → Settings → Poller
|
||||
- Check **Data Collection Enabled** and save.
|
||||
|
||||
---
|
||||
Copyright (c) 2004-2026 The Cacti Group
|
||||
@@ -36,16 +36,16 @@ Edit page has multiple Sub-tabs. They include:
|
||||
- **User Settings** - Settings for the User of the Group if they can not manage
|
||||
settings on their own
|
||||
|
||||
The first form elements are pretty self explanitory. The Tree,
|
||||
The first form elements are pretty self explanatory. The Tree,
|
||||
Graph List, and Preview rights speak to Cacti three Graph Viewing modes
|
||||
which are explained in the Viewing Graphs section of the Document.
|
||||
|
||||
Lastly Login options, are how the user should be re-directed after logging.
|
||||
This is again, pretty self explanitory.
|
||||
This is again, pretty self explanatory.
|
||||
|
||||

|
||||
|
||||
The next image shows the Member list. This one is pretty self explanitory.
|
||||
The next image shows the Member list. This one is pretty self explanatory.
|
||||
You can see all the users defined on the system and whether or not they
|
||||
below to the User Group, and the ability to add or remove them enmass.
|
||||
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ huge file one day, the large spike will be ignored. Common Nth percentile is 95,
|
||||
which would cut off the top 5% of the traffic.
|
||||
|
||||
The Nth Percentile variables, when placed in Graph Comments will be detected and
|
||||
the syntax will be parsed and the reulting numeric value will replace the
|
||||
the syntax will be parsed and the resulting numeric value will replace the
|
||||
formula. They are used in both 95th Percentile and Bandwidth Traffic Graphs
|
||||
today.
|
||||
|
||||
|
||||
@@ -24,14 +24,29 @@ Run `visudo` and add line
|
||||
Debian-snmp ALL=(ALL) NOPASSWD: /usr/sbin/pvesm status
|
||||
```
|
||||
|
||||
Modify file `/etc/systemd/system/multi-user.target.wants/snmpd.service`,
|
||||
add these lines to the service section:
|
||||
Create a systemd drop-in file to allow snmpd to call the monitoring script.
|
||||
Use a drop-in rather than editing the service file directly, so package
|
||||
updates do not overwrite your changes:
|
||||
|
||||
```console
|
||||
ProtectSystem=off
|
||||
ProtectHome=off
|
||||
mkdir -p /etc/systemd/system/snmpd.service.d
|
||||
cat > /etc/systemd/system/snmpd.service.d/proxmox-monitoring.conf << 'EOF'
|
||||
[Service]
|
||||
# Allow snmpd to execute the monitoring script and call sudo pvesm.
|
||||
# PrivateTmp is disabled because some Proxmox storage backends access
|
||||
# /tmp during status queries. Narrow this further if your storage
|
||||
# backends do not require /tmp access.
|
||||
PrivateTmp=false
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
```
|
||||
|
||||
> **Note**: Avoid setting `ProtectSystem=off` or `ProtectHome=off` unless
|
||||
> you have confirmed that pvesm requires broader filesystem access on your
|
||||
> specific Proxmox version. The sudoers entry above already restricts
|
||||
> the script to a single command, which limits the blast radius of a
|
||||
> compromised snmpd process.
|
||||
|
||||
Create new shell script `/usr/local/bin/monitoring.sh`:
|
||||
```console
|
||||
#!/bin/bash
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
| This code is designed, written, and maintained by the Cacti Group. See |
|
||||
| about.php and/or the AUTHORS file for specific developer information. |
|
||||
+-------------------------------------------------------------------------+
|
||||
| http://www.cacti.net/ |
|
||||
| https://www.cacti.net/ |
|
||||
+-------------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ ExtendedStatus On
|
||||
|
||||
## Debian Specific Configuration
|
||||
|
||||
Enable the apcache2 `status` module:
|
||||
Enable the apache2 `status` module:
|
||||
|
||||
Place the below config into a new file (eg, 80-server-status.conf) within
|
||||
`/etc/apache2/conf-available`
|
||||
@@ -40,7 +40,7 @@ ExtendedStatus On
|
||||
</Location
|
||||
```
|
||||
|
||||
Then use the following commands to enable the `stauts` module and new
|
||||
Then use the following commands to enable the `status` module and new
|
||||
configuration **Note**: You must restart the apache ( systemctl restart apache2)
|
||||
for the config to take effect
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ESXi/VMWare Template
|
||||
|
||||
The ESXi template uses snmp, so ESXi must have SNMP configured correctly.
|
||||
You can use ESXCLI commands directly on tge host using the ESXi Shell
|
||||
You can use ESXCLI commands directly on the host using the ESXi Shell
|
||||
or via ssh.
|
||||
|
||||
```console
|
||||
|
||||
Reference in new issue
Block a user