Skip to main content

Cacti - v1.2.18



Introdução


O Cacti é uma ferramenta Open Source que obtém dados e mostra esses dados em forma de gráficos, normalmente obtendo dados de uma ou mais redes, mas podendo exibir dados do host local também. Basicamente qualquer método que possa exibir um valor de tempos em tempos pode ser adicionado ao Cacti para que se tenha um gráfico.


O Cacti é uma ferramenta feita em PHP que usa como base o RRDTool (Round-robin database tool), ele quem coleta, armazena e gera os gráficos, o Cacti em sí é apenas uma interface gráfica que torna toda a administração mais fácil. Em sua maior funcionalidade, o Cacti permite carregar scripts para fazer coleta, mas seu grande funcionamento é através do SNMP.


Outro grande fator que contribui para o crescimento do Cacti é o uso de plugins, com eles podemos expandir a funcionalidade e usabilidade do Cacti.

Um plugin que não pode faltar é o PHP Network Weathermap, que permite criar mapas da rede e mostra o estado de cada elemento nele.



Instalação


Existem duas formas de instalar o Cacti, uma delas é pelo repositório da distribuição e outra é instalando direto do código fonte, eu vou optar por usar o código fonte do site.

No momento da criação desse tutorial, a versão que está no repositório do Ubuntu 20.04 é a 1.2.10, enquanto que a versão via código fonte é a 1.2.18.

Página de Downlaod/Instalação.


Requisitos

Antes de instalarmos o Cacti, temos que satisfazer alguns requisitos da instalação dele, os requisitos são:

  • RRDTool 1.0.49 ou mais recente, a versão 1.4 ou maior é recomendada;
  • MySQL 5.x ou mais recente;
  • PHP 5.1 ou mais recente;
  • Web Server que suporte PHP, como: Apache ou IIS.

Vamos instalar os requisitos então:

$› sudo apt install -y apache2 libapache2-mod-php mysql-server php php php-gd php-gmp php-json php-ldap php-mbstring php-snmp php-xml php-zip php-gd php-gmp php-ldap php-mbstring php-mysql php-snmp php-xml gcc rrdtool binutils snmp build-essential libtool autoconf automake snmpd


Configuração do ambiente


Antes de compilarmos a aplicação, precisamos preparar o ambiente para que tudo funcione.

# Iniciando o script do mysql_secure:
$› sudo mysql_secure_installation

## Respostas:
y, 1, "SENHA", "SENHA", y, y, y, y, y

# Exemplo de senha usada no passo acima:
BvI1Tbx2VX6DH980piOJIGFq

# Agora precisamos criar o banco de dados:
$› sudo mysql
mysql> CREATE DATABASE cacti;
mysql> CREATE USER 'cactiuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TDfwLqYhG+2b/9Xlr3eE3bsz';
mysql> GRANT ALL PRIVILEGES ON cacti.* TO "cactiuser"@"localhost";
# Dando acesso ao usuário do Cacti poder acessar o timezones do mysql:
mysql> GRANT SELECT ON mysql.time_zone_name TO "cactiuser"@"localhost";
mysql> FLUSH PRIVILEGES;

# Agora popule a tabela de zonas no mysql (horas):
$› mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql

# Crie o user do Cacti no sistema, toda a aplicação vai rodar atras desse usuário:
$› sudo useradd -s /bin/bash -d /dev/null cactiuser

Feito isso, vamos iniciar a instalação do Cacti:

# Entre na pasta:
$› cd /usr/src

# Baixe o código:
$› sudo wget https://files.cacti.net/cacti/linux/cacti-1.2.18.tar.gz

# Descompacte o arquivo:
$› sudo tar xvf cacti-1.2.18.tar.gz

# Entre na pasta:
$› cd cacti-1.2.18/

# Importe o esqueleto do banco de dados para o que acabamos de criar:
$› sudo mysql -u root cacti < cacti.sql

# Mude o collation do banco do Cacti:
$› sudo mysql cacti
ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Mude as informações de acesso ao banco de dados no arquivo abaixo:
$› sudo vim include/config.php
# Se você fez todos os passos como os meus, será necessário mudar apenas a senha.
# Mude também a opção 'url_patch' deixando-a assim: $url_path = '/';

Agora vamos finalizar a instalação:

# Edite o serviço do Cacti, mudando a localização do diretório root dele, 
# modifique também o user/group e local da variável 'EnvironmentFile':
$› sudo vim service/cactid.service

#### No meu caso, deixei assim ####
[Unit]
Description=Cacti Daemon Main Poller Service
After=network.target

[Service]
Type=forking
User=cactiuser
Group=cactiuser
RemainAfterExit=true
EnvironmentFile=/etc/default/cactid
ExecStart=/var/www/cacti/cactid.php
StandardOutput=journal
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
#### FIM ####

# Copie o 'service/cactid.service' para '/etc/systemd/system/':
$› sudo cp service/cactid.service /etc/systemd/system/

# Embora não seja necessário, em algumas ocasiões você pode precisar usar o arquivo '/etc/defaut/cactid', então crie ele:
$› sudo touch /etc/default/cactid

# Recarregue o daemon do SystemD:
$› sudo systemctl daemon-reload

# Copie esse dir nosso (do cacti) para '/var/www/':
cd ..
$› sudo cp -r cacti-1.2.18 /var/www/cacti

# Mude o dono/grupo de tudo para o usuário do cacti:
$› sudo chown cactiuser. -R /var/www/cacti

# Permite que o apache escreva em apenas algumas pastas apenas durante a instalação:
## chown -R cactiuser rra/ log/ cache/
$› sudo chown -R www-data.www-data /var/www/cacti

# Inicie e habilite o Cacti no boot do Sistema:
$› sudo systemctl start cactid
$› sudo systemctl enable cactid

# Verificando se tudo está em ordem:
$› sudo systemctl status cactid
● cactid.service - Cacti Daemon Main Poller Service
Loaded: loaded (/etc/systemd/system/cactid.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2021-09-24 14:33:30 UTC; 4s ago
Tasks: 0 (limit: 2305)
Memory: 0B
CGroup: /system.slice/cactid.service

Sep 24 14:33:30 cacti systemd[1]: Starting Cacti Daemon Main Poller Service...
Sep 24 14:33:30 cacti cactid.php[14879]: System log file is not available for writing, plea>
Sep 24 14:33:30 cacti cactid.php[14879]: Log: /var/www/cacti/log/cacti.log
Sep 24 14:33:30 cacti systemd[1]: Started Cacti Daemon Main Poller Service.

Como o Cacti passou a usar o SystemD, o arquivo que antes ficava rodando no crontab hoje não é mais necessário.


$ cat service/README.md | grep -A1 ^7
7. Comment out the cacti crontab file or simply remove the /etc/cron.d/cacti file in place today



Proteção de lista de permissão de validação de entrada

Os métodos de entrada de dados do Cacti que chamam um script podem ser explorados de maneiras que um não administrador pode danificar os arquivos pertencentes à conta do poller e, nos casos em que alguém executa o poller do Cacti como root, pode comprometer o sistema operacional, permitindo que os invasores explorar sua infraestrutura.


Portanto, várias versões atrás, o Cacti foi aprimorado para fornecer recursos de lista branca nesses tipos de métodos de entrada de dados. Embora isso proteja os Cacti mais profundamente, aumenta a quantidade de trabalho exigida pelo administrador do Cacti para importar e gerenciar modelos e pacotes.


A maneira como a Whitelisting funciona é que quando você importa um Método de entrada de dados pela primeira vez, ou reimporta um Método de entrada de dados, e o script e/ou argumentos mudam de alguma forma, o Método de entrada de dados e todas as fontes de dados correspondentes devem ser desativado imediatamente até que o administrador valide que o Método de entrada de dados é válido.


Para identificar os métodos de entrada de dados neste estado, o Cacti fornece um script de validação no diretório CLI do Cacti que pode ser executado com as seguintes opções:

# Entre na pasta:
cd /var/www/cacti/cli/

# Para ativar, descomente a seguinte linha do arquivo '/var/www/cacti/include/config.php':
$input_whitelist = '/usr/local/etc/cacti/input_whitelist.json';

## php -q input_whitelist.php --audit
# This script option will search for any Data Input Methods that are currently banned and provide details as to why.

## php -q input_whitelist.php --update
# This script option un-ban the Data Input Methods that are currently banned.

## php -q input_whitelist.php --push
# This script option will re-enable any disabled Data Sources.


Configurando o apache


Se estivesse colocado o diretório do Cacti em /var/www/html, poderia acessar o Cacti usando o pelo navegador assim http://192.168.121.150/cacti, mas como não coloquei, vou criar um vhost para nossa página do Cacti.

$› sudo vim /etc/apache2/sites-available/cacti.conf
#### CONTEÚDO ####
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/cacti

<Directory /var/www/cacti>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
#### FIM CONTEÚDO ####

# Agora ative nosso vhost e desative o vhost padrão:
$› sudo a2dissite 000-default.conf
$› sudo a2ensite cacti.conf

# Agora reinicie o apache:
$› sudo systemctl restart apache2


Tunning do MySQL


Para que o mysql opere sem problemas, vamos fazer o tunning dele:

# Edite o arquivo abaixo e adicione as informações fornecidas para fazer o tunning do mysql:
$› sudo vim /etc/mysql/my.cnf

#### INÍCIO DO CONTEÚDO ####
[mysqld]
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
default-time-zone='America/Sao_Paulo'

# innodb settings - Cacti provides recommendations at upgrade time
innodb_buffer_pool_size = 1G
innodb_sort_buffer_size = 1G
innodb_log_buffer_size = 256M
innodb_log_file_size = 1G
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_buffer_pool_instances = 10
innodb_flush_log_at_timeout = 3
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000
innodb_flush_log_at_trx_commit = 2
innodb_doublewrite = ON

# required
innodb_file_per_table = ON

# Memory tunables - Cacti provides recommendations at upgrade time
join_buffer_size = 100M
tmp_table_size = 100M
max_heap_table_size = 100M
max_allowed_packet=500M
sort_buffer_size = 100M

long_query_time = 1
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slowquery.log
log_queries_not_using_indexes = 1

### for SSD's/NVMe
#innodb_read_io_threads = 32
#innodb_write_io_threads = 16
#innodb_io_capacity = 10000
#innodb_io_capacity_max = 20000
#innodb_flush_method = O_DIRECT

#### FIM DO CONTEÚDO ####

# Reinicie o Mysql:
$› sudo systemctl restart mysql


Error: A valid timezone that matches MySQL and the system

Para esse erro, altere o timezone na cli e na parte web do php:

# php no apache
$› sudo vim /etc/php/7.4/apache2/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/Sao_paulo

# Ainda nesse arquivo, altere também, os valores de: 'memory_limit' e 'max_execution_time':
max_execution_time = 60
memory_limit = 400M

## Esses são os valores padrões!

##########################################################################################

$› sudo vim /etc/php/7.4/cli/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/Sao_paulo

# Reinicie o apache:
systemctl restart apache2


Error: Your MySQL TimeZone database is not populated. Please populate this database before proceeding

Para resolver esse alerta, algo deve ter falhado quando populamos o TimeZone alguns passos atrás, execute o comando novamente.

$› mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root -p mysql 


Agora acesse o navegador http://IP, quando aparecer o site do Cacti, o usuário é admin e senha admin. Faça a instalação via interface gráfica, para qualquer erro que possa ter, veja a Sessão Debug mais adiante.

nova senha:

hiUO7D@Ep$OQKfIj2j092f/Z5l


Após finalizar a instalação via Web


Agora que a instalação foi finalizada, temos que rodar os comandos abaixo para criar a whitelist:

# Crie a pasta do Cacti no local indicado:
$› sudo mkdir /usr/local/etc/cacti

# Entre na pasta:
cd /var/www/cacti/cli/

# Rode o update para criar o arquivo:
$› sudo php -q input_whitelist.php --update

# Agora rode o audit:
$› sudo php -q input_whitelist.php --audit

# Volte as permissoes como devam ser:
$› sudo chown -R cactiuser.cactiuser /var/www/cacti/
cd /var/www/cacti/
$› sudo chmod -R 775 rra/ log/ resource/ scripts/ cache/

# Dando permissão para o apache escrever os logs:
$› sudo chmod 774 -R /var/www/cacti/log/
$› sudo chown -R cactiuser.www-data /var/www/cacti/log/

# Reinicie o serviço:
$› sudo systemctl restart cactid
$› sudo systemctl status cactid

ATENÇÃO

Se não funcionar, espere 5 minutos para ver se o gráfico foi criado.



Atualizando o Cacti


Existem duas formas de atualizar o Cacti, via repositório e o processo manual.



Usando APT


O processo e extremamente simples, mas o importante e fazer backup antes de começarmos a atualizar.

# Faca backup da pasta do Cacti:
$› cp -r /usr/share/cacti .

# Faca backup do banco de dados:
$› mysqldump --uroot –p -1 --add-drop-table cacti > cacti_mysql_backup.sql

# Atualize o pacote do Cacti:
$› apt-get upgrade cacti


Usando processo manual


Primeiro de tudo, caso use crontab para chamar o poller, comente a linha no cron.

# O local mais provável ficam em:
$› vim /etc/cron.d/cacti

# Pare via SystemD:
$› sudo systemctl stop cactid

Agora vamos fazer backup do banco de dados:

$› mysqldump -uroot –p -1 --add-drop-table cacti > cacti_mysql.sql

Agora faça download da nova versão:

# Entre no dir abaixo:
$› cd /usr/src

# Baixe a nova versão:
$› wget http://www.cacti.net/downloads/cacti-new_version.tar.gz

# Descompacte:
$› tar xvf cacti-new_version.tar.gz

# Renomeie a pasta atual do Cacti:
$› mv /var/www/cacti /var/www/cactiold

# Agora copie os RRAs, SCRIPTSs, LOGs e RESOURCESs da pasta antiga:
$› cp /var/www/cactiold/{rra,scripts,resource,log}/* cacti/{rra,scripts,resource,log}/

# Agora mude o dono/grupo:
$› sudo chown -R cactiuser.cactiuser cacti/
$› cd cacti/
$› sudo chmod -R 775 rra/ log/ resource/ scripts/ cache/

# Dando permissão para o apache escrever os logs:
$› sudo chmod 774 -R log/
$› sudo chown -R cactiuser.www-data log/

# Mova a pasta para /var/www/cacti
$› cd ..
$› mv cacti /var/www/

# Descomente a linha do cron:
$› sudo vim /etc/cron.d/cacti

# Ou inicie novamente o servico:
$› sudo systemctl start cactid


Patch


Os Patchs são trechos de códigos que normalmente são usados para correção de bugs e falhas de segurança, vamos ver como aplicar um patch. Provavelmente os links com Patch não estão mais ativo, mas segue como seria feito.

# Faça backup da pasta do Cacti:
$› cp -r /usr/share/cacti .

# Faça backup do banco:
$› mysqldump -uroot –p -1 --add-drop-table cacti > cacti_mysql.sql

# Entre na pasta onde o Cacti está instalado:
$› cd /var/www/cacti

#### Baixe o patch!

# Aplique o patch
patch -p1 -N < cacti-version.patch


Mudar senha dos usuarios no Cacti


Vamos ver como mudar a senha de qualquer usuario no Cacti.

# Prefixo para mudar a senha:
update user_auth set password=md5('SENHA') where username='USERNAME';

# Entre no mysql:
$› mysql -u root -p

# Use o comando abaixo para ver os usuários que tem no cacti:
mysql> select id,username,password from user_auth;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | admin | 8c97d025da63f8c19e38eb4208a6f902 |
| 3 | guest | 43e9a4ab75570f5b |
+----+----------+----------------------------------+
2 rows in set (0.00 sec)

# Mude a senha:
mysql> update user_auth set password=md5('hiUO7D@Ep$OQKfIj2j092f/Z5l') where username='admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0


Instalando o Spine poller


O Poller padrão do Cacti é escrito em PHP e serve bem para pequenas e médias infraestruturas, mas para grandes ele pode ser um problema. Vamos ver como instalar o Spine Poller, ele foi escrito em C e possui capacidades multitarefa de Sistemas Operacionais e Hardwares modernos.

# Entre na pasta abaixo:
cd /usr/src

# Faça download do arquivo:
$› sudo wget https://files.cacti.net/spine/cacti-spine-latest.tar.gz

# Descompacte o arquivo:
$› sudo tar -xzvf cacti-spine-latest.tar.gz

# Entre na pasta:
cd cacti-spine-1.2.18/

# Vamos preparar o diretório para compilação:
$› sudo ./bootstrap
INFO: Starting Spine build process
INFO: Removing cache directories
INFO: Running auto-tools to verify buildability
aclocal: installing 'm4/libtool.m4' from '/usr/share/aclocal/libtool.m4'
aclocal: installing 'm4/ltoptions.m4' from '/usr/share/aclocal/ltoptions.m4'
aclocal: installing 'm4/ltsugar.m4' from '/usr/share/aclocal/ltsugar.m4'
aclocal: installing 'm4/ltversion.m4' from '/usr/share/aclocal/ltversion.m4'
aclocal: installing 'm4/lt~obsolete.m4' from '/usr/share/aclocal/lt~obsolete.m4'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: linking file 'config/ltmain.sh'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: copying file 'config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:11: installing 'config/compile'
configure.ac:13: installing 'config/missing'
Makefile.am: installing 'config/depcomp'
INFO: Spine bootstrap process completed

These instructions assume the default install location for spine
of /usr/local/spine. If you choose to use another prefix, make
sure you update the commands as required for that new path.

To compile and install Spine using MySQL versions 5.5 or higher
please do the following:

./configure
make
make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine

To compile and install Spine using MySQL versions previous to 5.5
please do the following:

./configure --with-reentrant
make
make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine

# Instale o pacote abaixo para que seja possível a compilação:
$› sudo apt install libmysql-ocaml-dev

# Configure o ambiente para compilarmos:
$› sudo ./configure

# Compile o spine:
$› sudo make

# Instale a compilação:
$› sudo make install

# Aplique as permissões abaixo:
$› sudo chown root:root /usr/local/spine/bin/spine
$› sudo chmod +s /usr/local/spine/bin/spine

# Crie um arquivo de configuração:
$› sudo cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf

# Edite o arquivo de configuração (Mudar os dados de acesso do mysql e descomentar a linha de log):
$› sudo vim /etc/spine.conf

# Crie um link simbólico para o spine:
$› sudo ln -s /usr/local/spine/bin/spine /sbin/spine

# Testar se está funcionando:
$› sudo /usr/local/spine/bin/spine -R -S -V 3


### Entre no Cacti, Vá em 'Configuration' -> 'Settings' -> 'PATH'.
## Configure os Paths como abaixo:
Spine Binary File Location: /usr/local/spine/bin/spine
Spine Config File Path: /etc/spine.conf

### Entre no Cacti, Vá em 'Configuration' -> 'Settings' -> 'POLLER'.
## Configure o 'Poller Type' para 'SPINE'.

# Reinicie o serviço:
$› sudo systemctl restart cactid

######### Ver se funcionou

# Antes de fazer isso veria em Logs a linha abaixo (Method:cmd.php):
2021-09-24 13:20:01 - SYSTEM STATS: Time:1.2396 Method:cmd.php Processes:1 Threads:1 Hosts:1 HostsPerProcess:1 DataSources:5 RRDsProcessed:5

# Agora você deve ver como abaixo (Method:spine):
2021-09-24 13:40:01 - SYSTEM STATS: Time:1.2317 Method:spine Processes:1 Threads:1 Hosts:1 HostsPerProcess:1 DataSources:5 RRDsProcessed:5


Fazendo backup do Banco de Dados (finalizar)


Para fazer um backup periódico do banco de dados siga os passos abaixo:

# Crie um script:

mysqldump -u root -p --lock-tables --add-drop-table cacti > /root/cacti_backup.sql


Preparando Hosts para o Cacti


Agora que temos o Cacti configurado, temos que adicionar equipamentos para que possamos ter equipamentos monitorados. Para esses novos dispositivos, vamos usar servidores Linux, então instale o snmpd e o snmp nele:

# No cliente instale:
$› sudo apt install snmpd snmp

# Edite o arquivo abaixo:
$› sudo vim /etc/snmp/snmpd.conf

#### Inicio ####

rocommunity public

#### Fim ####

# Faça um teste (Esse GET mostra em quantos porcentos a CPU está IDLE):
$› snmpget -v2c -c public localhost .1.3.6.1.4.1.2021.11.11.0
iso.3.6.1.4.1.2021.11.11.0 = INTEGER: 99

Agora vamos fazer a configuração no lado do Servidor!



Adicionando um dispositivo


Para adicionar um device va em: Console, na parte de Management, clique Devices, clique em Add.


Com isso, será aberto o menu para criação de dispositvo. Adicione as opções que deseja como: nome, IP, Snmp Version, Snmp Community, porta do snmp que será usado no cliente, entre outras informações. Veja um exemplo da imagem abaixo:

Add_device

O Host template e responsavel pelo tipo de dado que e necessario para ser coletado de um tipo de host especifico.

Basicamente já cria certos gráficos para o novo device.



Adicionando gráfico


Agora que temos um dispostivo a ser monitorado, vamos adicionar um gráfico para termos algo a monitorar.


Para adicionar um gráfico vá em: Console, na parte de Create, clique New Graphs. Veja a imagem abaixo para mudar o Host ao qual vamos criar o gráfico.

new_graph


Agora selecione o método que será usado para coletar essa informação, nesse caso, como é apenas um exemplo simples, vamos usar SNMP - Generic OID Template, com isso só vamos precisar fornecer o OID para que o SNMP busque a informação, veja na imagem abaixo:

add_graph

Com isso, clique em create! Agora preencha as imformações na nova página igual a imagem abaixo, depois disso clique em create.

1as


Agora basta esperarmos que o Cacti vai criar o gráfico seguindo um padrão simples de template, por padrão, o poller atualiza a cada 5 minutos, então espere mais ou menos isso para que o gráfico seja criado.


A imagem abaixo representa. Agora precisamos adicionar esse gráfico a arvoré principal, não se preocupe com isso, voltaremos a esse assunto mais adiante, por hora, vamos ver como fazer para deixar esse gráfico visível com os demais.


Em Console, vá na aba Management, clique em Graph Management, marque a caixa de diálogo do gráfico que deseja realizar uma alteração e em Choose an action: deixe com Place on a Tree (Default Tree), como a imagem abaixo, depois clique em Go.

1d

Um jeito muito útil de fazer debug de gráfico, ver se está tendo coleta de informação, é ir em Console - Management -> Data Source e clicar no gráfico que deseja.

Depois clique em Turn On Data Source Debug Mode para habilitar o modo de debug (apenas nessa paǵina), com isso, poderá ver se as coletas estão sendo realizadas.







Adicionando um Script para coleta no Cacti

Vá em Collection Methods -> Data Input Methods -> Add.


Dê um nome para o Script, o tipo de Input pode deixar Script/Command e em Input String deixe como abaixo:

/usr/share/cacti/site/scripts/check_cpu <hostname> <snmp_version> <snmp_community>

Agora clique em Create.


Cada string dentro de <> será reconhecido como o nome de uma variável, nessa etapa temos que falar para o Cacti as variáveis de entrada e o que será gerado como resultado.


Em Input Fields vamos adicionar essas variáveis, então clique em Add.

# Em 'Field [Input]' Vamos escolher qual a variável vamos trabalhar ('hostname' no caso).

# Em 'Friendly Name' Vamos definir um nome para essa variável, um nome amigável, eu sempre deixo o mesmo nome, deixe:
hostname

# Em 'Regular Expression Match' É caso queiramos fazer algum regra matemática com esse dado, não precisa colocar nada.

# Em 'Allow Empty Input' É se esse campo pode ser vazio, caso sim, marque a caixa, no nosso caso não vamos marcar.

# Em 'Special Type Code' É um campo que será reconhecido pelo Host Template, aqui podemos usar algumas variáveis, no caso deixe como abaixo:
hostname

Em Output Fields vamos adicionar o dado que será retornado, então clique em Add.

# Em 'Field [Output]' Vamos dar um nome para este campo, deixe como abaixo:
CPU

# Em 'Friendly Name' Vamos definir um nome para essa variável, um nome amigável, eu sempre deixo o mesmo nome, deixe:
CPU1

Clique em Salvar.



Outros Erros


Para outros erros, veja alguns abaixo:


Graph not added due to whitelist check failure.

Siga o passo a passo abaixo:

# Entre na pasta '/var/www/cacti/cli':
cd /var/www/cacti/cli

# Rode o comando:
$› sudo php -q input_whitelist.php --update --push

# reinicie o serviço do cactid:
$› sudo systemctl restart cactid

### Vá em 'CONSOLE' -> 'MANAGEMENT' -> 'DEVICES'
# Marque o box do device que quer criar os gráficos, Selecione a opção 'Apply Automation Rules' e de um 'Go'.


Gráfico não aparece, tente isso!

Caso o gráfico não apareça (arquivo não foi criado), tente entrar em CONSOLE -> MANAGEMENT -> GRAPHS e logo em seguida clique em Unlock Graph.



Fontes


https://www.mediawiki.org/wiki/Manual:Wiki_family

https://www.mediawiki.org/wiki/Manual:Installation_guide

https://www.mediawiki.org/wiki/Manual:Installation_requirements

https://sharkysoft.com/wiki/how_to_configure_multiple_MediaWiki_instances_on_a_single_host

https://github.com/netniV/cacti/wiki/Testing-Environment:-CentOS#change-default-permissions-1

https://docs.cacti.net/Requirements.md

https://docs.cacti.net/

https://github.com/Cacti/documentation/blob/develop/README.md

https://medium.com/make-it-easy/how-to-install-spine-for-cacti-on-ubuntu-20-04-b1bc4c75c502

https://files.cacti.net/docs/html/unix_apply_patches.html

https://github.com/cacti/cacti