Get metrics from Cacti in real time to:
The Cacti check is included in the Datadog Agent package, to start gathering metrics you first need to:
librrd
headers and libraries.rrdtool
.On Debian/Ubuntu:
sudo apt-get install librrd-dev
On RHEL/CentOS:
sudo yum install rrdtool-devel
Now add the rrdtool
Python package to the Agent with the following command:
sudo -u dd-agent /opt/datadog-agent/embedded/bin/pip install rrdtool
Create a Datadog user with read-only rights to the Cacti database.
sudo mysql -e "create user 'datadog'@'localhost' identified by '<MYSQL_PASSWORD>';"
sudo mysql -e "grant select on cacti.* to 'datadog'@'localhost';"
Check the user and rights:
mysql -u datadog --password=<MYSQL_PASSWORD> -e "show status" | \
grep Uptime && echo -e "\033[0;32mMySQL user - OK\033[0m" || \
echo -e "\033[0;31mCannot connect to MySQL\033[0m"
mysql -u datadog --password=<MYSQL_PASSWORD> -D cacti -e "select * from data_template_data limit 1" && \
echo -e "\033[0;32mMySQL grant - OK\033[0m" || \
echo -e "\033[0;31mMissing SELECT grant\033[0m"
Give the datadog-agent
user access to the RRD files:
sudo gpasswd -a dd-agent www-data
sudo chmod -R g+rx /var/lib/cacti/rra/
sudo su - datadog-agent -c 'if [ -r /var/lib/cacti/rra/ ];
then echo -e "\033[0;31mdatadog-agent can read the RRD files\033[0m";
else echo -e "\033[0;31mdatadog-agent can not read the RRD files\033[0m";
fi'
Configure the Agent to connect to MySQL, edit your cacti.d/conf.yaml
file. See the sample cacti.d/conf.yaml for all available configuration options:
init_config:
instances:
## @param mysql_host - string - required
## url of your MySQL database
#
- mysql_host: "localhost"
## @param mysql_port - integer - optional - default: 3306
## port of your MySQL database
#
# mysql_port: 3306
## @param mysql_user - string - required
## User to use to connect to MySQL in order to gather metrics
#
mysql_user: "datadog"
## @param mysql_password - string - required
## Password to use to connect to MySQL in order to gather metrics
#
mysql_password: "<MYSQL_PASSWORD>"
## @param rrd_path - string - required
## The Cacti checks requires access to the Cacti DB in MySQL and to the RRD
## files that contain the metrics tracked in Cacti.
## In almost all cases, you'll only need one instance pointing to the Cacti
## database.
## The `rrd_path` will probably be `/var/lib/cacti/rra` on Ubuntu
## or `/var/www/html/cacti/rra` on any other machines.
#
rrd_path: "<CACTI_RRA_PATH>"
Run the Agent’s status subcommand and look for cacti
under the Checks section.
cacti.hosts.count (gauge) | The number of hosts monitored by Cacti Shown as host |
cacti.metrics.count (gauge) | The number of metrics collected from Cacti |
cacti.rrd.count (gauge) | The number of Cacti RRD files Shown as file |
system.disk.free.last (gauge) | The amount of disk space that is free - last polling value Shown as byte |
system.disk.free.max (gauge) | The amount of disk space that is free - max polling value Shown as byte |
system.disk.free.min (gauge) | The amount of disk space that is free - min polling value Shown as byte |
system.disk.used.last (gauge) | The amount of disk space that is used - last polling value Shown as byte |
system.disk.used.max (gauge) | The amount of disk space that is used - max polling value Shown as byte |
system.disk.used.min (gauge) | The amount of disk space that is used - min polling value Shown as byte |
system.load.1.last (gauge) | The average system load over one minute - last polling value |
system.load.1.max (gauge) | The average system load over one minute - max polling value |
system.load.1.min (gauge) | The average system load over one minute - min polling value |
system.load.15.last (gauge) | The average system load over 15 minute - last polling value |
system.load.15.max (gauge) | The average system load over 15 minute - max polling value |
system.load.15.min (gauge) | The average system load over 15 minute - min polling value |
system.load.5.last (gauge) | The average system load over five minute - last polling value |
system.load.5.max (gauge) | The average system load over five minute - max polling value |
system.load.5.min (gauge) | The average system load over five minute - min polling value |
system.mem.buffered.last (gauge) | The amount of physical RAM used for file buffers - last polling value Shown as byte |
system.mem.buffered.max (gauge) | The amount of physical RAM used for file buffers - max polling value Shown as byte |
system.mem.buffered.min (gauge) | The amount of physical RAM used for file buffers - min polling value Shown as byte |
system.ping.latency (gauge) | The system ping latency - avg polling value Shown as millisecond |
system.ping.latency.max (gauge) | The system ping latency - max polling value Shown as millisecond |
system.proc.running.last (gauge) | The number of processes running - last polling value Shown as process |
system.proc.running.max (gauge) | The number of processes running - max polling value Shown as process |
system.proc.running.min (gauge) | The number of processes running - min polling value Shown as process |
system.swap.free.max (gauge) | The amount of free swap space - max polling value Shown as byte |
system.users.current.last (gauge) | The number of logged in users - last polling value |
system.users.current.max (gauge) | The number of logged in users - max polling value |
system.users.current.min (gauge) | The number of logged in users - min polling value |
Collecting logs is disabled by default in the Datadog Agent, enable it in your datadog.yaml
file:
logs_enabled: true
Add this configuration block to your cacti.d/conf.yaml
file to start collecting your Cacti logs:
logs:
- type: file
path: /opt/cacti/log/cacti.log
source: cacti
Change the path
parameter value based on your environment. See the sample cacti.d/conf.yaml for all available configuration options.
The Cacti check does not include any events.
The Cacti check does not include any service checks.
The Python library used by this integration leaks memory under certain circumstances. If you experience this, one workaround is to install the python-rrdtool package instead of rrdtool. This older package is not maintained and is not officially supported by this integration but it has helped others resolve the memory issues.
A Github issue has been opened to track this memory leak.
Need help? Contact Datadog support.