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:
Thomas Vincent authored and GitHub committed 2026-08-16 20:34:31 +01:00
1 parent c707c76cf4
commit cb29d10426
43 files changed
+888 -868

No files matched your search

+6
View File
@@ -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
+23
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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.
![Data-Source-Templates](images/datasource-template.png)
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.
![Data-Source-Templates](images/datasource-template2.png)
+15 -9
View File
@@ -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
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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.
---
+3 -3
View File
@@ -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
View File
@@ -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:
+1 -1
View File
@@ -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.
+52 -29
View File
@@ -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
View File
@@ -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.
![Overview](images/device-templates-ssh-tunnel.png)
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:
![Add device](images/device-templates-ssh-add-device.png)
Voila ! Your target server is graphed by Cacti :)
Your target server is now graphed by Cacti.
---
Copyright (c) 2004-2026 The Cacti Group
+6 -6
View File
@@ -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
+49 -57
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -40,7 +40,7 @@ this file. It may contain important installation information.
![thold plugin enable](images/thold-enable.png)
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
[![Video Tuturial](http://img.youtube.com/vi/TPKu-2XYKok/0.jpg)](https://youtu.be/TPKu-2XYKok)
[![Video Tutorial](https://img.youtube.com/vi/TPKu-2XYKok/0.jpg)](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.
![plugin dependencies](images/plugins-dependencies.png)
+1 -1
View File
@@ -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
+7 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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/ |
+-------------------------------------------------------------------------+
*/
```
+1 -1
View File
@@ -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
View File
@@ -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
+5 -9
View File
@@ -36,19 +36,15 @@ of how Tree Sorting is accomplished.
![Tree Sorting](images/tree-options-sorting.png)
### 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.
+17 -18
View File
@@ -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
+41 -64
View File
@@ -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
+3 -3
View File
@@ -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.
![User Groups General](images/user-groups-edit-general.png)
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
View File
@@ -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.
+19 -4
View File
@@ -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
+1 -1
View File
@@ -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/ |
+-------------------------------------------------------------------------+
*/
+2 -2
View File
@@ -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 -1
View File
@@ -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