Monitoramento · 13 min read · Oct 27, 2025
Como Instalar e Configurar o Sistema de Monitoramento Graphite no Ubuntu 22.04

Graphite é uma ferramenta de código aberto usada para rastrear e graficar o desempenho de sistemas de computador. Você pode usá-la para rastrear o desempenho de sites, aplicativos, serviços empresariais e servidores em rede. É altamente flexível e pode ser configurado para que você possa obter os benefícios tanto de representações detalhadas quanto de visões gerais amplas do desempenho e da saúde das métricas que está rastreando.
Graphite é composto por vários componentes: o aplicativo web, um backend de armazenamento chamado Carbon e a biblioteca de banco de dados chamada whisper. Neste tutorial, você aprenderá a instalar e configurar o Graphite em um servidor Ubuntu 22.04.
Pré-requisitos
- Um servidor rodando Ubuntu 22.04.
- Um nome de domínio totalmente qualificado (FQDN) apontando para o servidor. Para nosso tutorial, usaremos o domínio
graphite.example.com. - Um usuário não-root com privilégios sudo.
- O Firewall sem complicações (UFW) está habilitado e em execução.
- Certifique-se de que tudo está atualizado.
$ sudo apt update && sudo apt upgrade - Instale pacotes de utilitários básicos. Alguns deles podem já estar instalados.
$ sudo apt install wget curl nano unzip -y
Passo 1 - Configurar o Firewall
Antes de instalar qualquer pacote, o primeiro passo é configurar o firewall para permitir conexões HTTP e HTTPS.
Verifique o status do firewall.
$ sudo ufw status
Você deve ver algo como o seguinte.
Status: ativo
Para Ação De
-- ------ ----
OpenSSH PERMITIR Em qualquer lugar
OpenSSH (v6) PERMITIR Em qualquer lugar (v6)
Permita as portas HTTP e HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Verifique o status novamente para confirmar.
$ sudo ufw status
Status: ativo
Para Ação De
-- ------ ----
OpenSSH PERMITIR Em qualquer lugar
80/tcp PERMITIR Em qualquer lugar
443 PERMITIR Em qualquer lugar
OpenSSH (v6) PERMITIR Em qualquer lugar (v6)
80/tcp (v6) PERMITIR Em qualquer lugar (v6)
443 (v6) PERMITIR Em qualquer lugar (v6)
Passo 2 - Instalar Pacotes Necessários
Instalaremos o Graphite usando o gerenciador de pacotes PIP do Python. O primeiro passo é instalar os pacotes necessários para a instalação.
$ sudo apt install vim python3-dev python3-pip libcairo2-dev libffi-dev build-essential
Passo 3 - Instalar Graphite e Graphite Web
Instalaremos o Graphite no diretório /opt/graphite.
$ export PYTHONPATH="/opt/graphite/lib/:/opt/graphite/webapp/"
$ sudo pip install --no-binary=:all: https://github.com/graphite-project/whisper/tarball/master
$ sudo pip install --no-binary=:all: https://github.com/graphite-project/carbon/tarball/master
$ sudo pip install --no-binary=:all: https://github.com/graphite-project/graphite-web/tarball/master
Passo 4 - Instalar e Configurar PostgreSQL
Usaremos o repositório APT oficial do PostgreSQL para instalar. Execute o seguinte comando para adicionar a chave GPG do PostgreSQL.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Adicione o repositório APT à sua lista de fontes.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Atualize o repositório do sistema.
$ sudo apt update
Agora, você pode instalar o PostgreSQL e pacotes auxiliares usando o seguinte comando.
$ sudo apt install postgresql postgresql-contrib libpq-dev
Verifique o status do serviço PostgreSQL.
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2022-09-27 10:09:35 UTC; 4s ago
Process: 4456 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4456 (code=exited, status=0/SUCCESS)
CPU: 1ms
Sep 27 10:09:35 matrix systemd[1]: Starting PostgreSQL RDBMS...
Sep 27 10:09:35 matrix systemd[1]: Finished PostgreSQL RDBMS.
Você pode ver que o serviço está habilitado e em execução por padrão.
Faça login no shell do PostgreSQL.
$ sudo -su postgres psql
Crie um usuário de banco de dados para o Graphite.
postgres=# CREATE USER graphite WITH PASSWORD 'your_password';
Crie um banco de dados para o Graphite e dê a propriedade ao usuário graphite.
postgres=# CREATE DATABASE graphitedb WITH OWNER graphite;
Saia do shell do PostgreSQL.
postgres=# \q
Passo 5 - Configurar Graphite Carbon e Web
O próximo passo é configurar o Graphite Carbon e o Graphite web.
Configurar Carbon
O Carbon é composto por três serviços:
- carbon-cache: aceita métricas e as grava no disco.
- carbon-relay: replica os dados.
- carbon-aggregator: roda na frente do serviço carbon-cache para armazenar métricas ao longo do tempo antes de encaminhá-las para o Whisper.
Configurar carbon-cache é necessário, mas carbon-relay e carbon-aggregator são opcionais.
Crie o arquivo carbon.conf usando o arquivo de exemplo fornecido.
$ sudo cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
Em seguida, crie a configuração dos esquemas de armazenamento.
$ sudo cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
Abra o arquivo de configuração do esquema de armazenamento.
$ sudo nano /opt/graphite/conf/storage-schemas.conf
Dentro, você encontrará entradas como
[carbon]
pattern = ^carbon\.
retentions = 60:90d
Isso implica que um padrão que corresponde a uma expressão regular ^carbon\. deve reter os dados com uma política de retenção 60:90d, o que significa
- com que frequência uma métrica é registrada: 60 segundos
- duração do tempo para armazenar esses valores: 90 dias
Você pode adicionar sua própria entrada. Vamos pegar um exemplo test, ou seja, monitorando pontos de dados e nossas entradas de pontos de dados começarão com a string test. Esta entrada deve ser adicionada antes da entrada padrão mencionada na parte inferior do arquivo.
[test]
pattern = ^test\.
retentions = 10s:10m,1m:1h
Isso corresponderá a quaisquer métricas que comecem com test. Ele armazenará os dados que coleta duas vezes, em detalhes variados. A primeira definição (1s:10m) criará um ponto de dados a cada dez segundos. Ele armazenará os dados apenas por dez minutos. A segunda definição criará um ponto de dados a cada minuto. Ele coletará todos os dados do último minuto (seis pontos, uma vez que a definição anterior cria um ponto a cada dez segundos) e agregará para criar o ponto. Ele armazena os dados nesse nível de detalhe por uma hora.
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Inicie o serviço carbon-cache.
$ sudo /opt/graphite/bin/carbon-cache.py start
Configurar o Graphite Web
O próximo passo é configurar o aplicativo web do Graphite.
Gere uma chave secreta para o aplicativo Graphite. Copie a chave exibida para uso posterior.
$ python3 -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
sp%71)6b$%^bc(7xpz1d!)x3(azog01&k^8l02*!y0#)72p07y
Crie o arquivo de configurações do aplicativo web.
$ sudo cp /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
Você precisa configurar o aplicativo web do Graphite com as configurações do banco de dados. Abra o local_settings.py para edição.
$ sudo nano /opt/graphite/webapp/graphite/local_settings.py
Descomente a variável SECRET_KEY e insira um valor aleatório para ela.
SECRET_KEY = 'your-secret-key'
Descomente a variável ALLOWED_HOSTS.
ALLOWED_HOSTS = [ '*' ]
Descomente a variável TIME_ZONE e defina-a para o valor apropriado.
TIME_ZONE = 'Asia/Kolkata'
Descomente a variável USE_REMOTE_USER_AUTHENTICATION e defina-a como TRUE para que o usuário remoto seja autenticado antes de fazer qualquer alteração no banco de dados.
USE_REMOTE_USER_AUTHENTICATION = True
Altere as configurações do banco de dados.
DATABASES = {
'default': {
'NAME': 'graphitedb',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'graphite',
'PASSWORD': 'your_password',
'HOST': '127.0.0.1',
'PORT': ''
}
}
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Instale alguns pré-requisitos para o wrapper PostgreSQL do Python.
$ sudo pip install psycopg2-binary
Execute o seguinte comando para importar o esquema do banco de dados.
$ sudo PYTHONPATH=/opt/graphite/webapp/ django-admin.py migrate --settings=graphite.settings
Você receberá a seguinte saída.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes, dashboard, events, sessions, tagging, tags, url_shortener
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying account.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying dashboard.0001_initial... OK
Applying events.0001_initial... OK
Applying sessions.0001_initial... OK
Applying tagging.0001_initial... OK
Applying tagging.0002_on_delete... OK
Applying tags.0001_initial... OK
Applying url_shortener.0001_initial... OK
Em seguida, colete os arquivos estáticos.
$ sudo PYTHONPATH=/opt/graphite/webapp/ django-admin.py collectstatic --settings=graphite.settings
Defina as configurações de propriedade corretas.
$ sudo chown -R www-data:www-data /opt/graphite/storage/
$ sudo chown -R www-data:www-data /opt/graphite/static/
$ sudo chown -R www-data:www-data /opt/graphite/webapp/
Crie um usuário root para login.
$ sudo PYTHONPATH=/opt/graphite/webapp/ django-admin.py createsuperuser --settings=graphite.settings
Username (leave blank to use 'root'): navjot
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Ele pedirá que você crie um superusuário. Este usuário será usado mais tarde para se conectar ao aplicativo Graphite.
Passo 6 - Configurar o Apache
O Graphite vem com arquivos de configuração do Apache por padrão. Instale o servidor Apache.
$ sudo apt install apache2 libapache2-mod-wsgi-py3
Crie o arquivo mod_wsgi.
$ sudo cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
Copie o arquivo de configuração de exemplo do graphite para o local do Apache.
$ sudo cp /opt/graphite/examples/example-graphite-vhost.conf /etc/apache2/sites-available/graphite.conf
Abra o arquivo de configuração do Graphite para edição.
$ sudo nano /etc/apache2/sites-available/graphite.conf
Altere o número da porta na primeira linha de 80 para 127.0.0.1:8080. Colocar 127.0.0.1 na frente restringe o acesso pela web.
Adicione seu nome de domínio.
ServerName graphite.example.com #Substitua pelo seu domínio
Adicione as seguintes linhas abaixo da linha Alias /static/ /opt/graphite/static/.
#Adicione as linhas abaixo
Require all granted
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Desative o host virtual padrão e ative o arquivo de host virtual do Graphite.
$ sudo a2dissite 000-default
$ sudo a2ensite graphite
Também precisaremos informar ao Apache para escutar na porta 8080 e parar de escutar na porta 80, pois usaremos o Nginx como servidor proxy.
Abra o arquivo /etc/apache2/ports.conf para edição.
$ sudo nano /etc/apache2/ports.conf
Encontre a linha Listen 80 e substitua-a pela seguinte.
Listen 127.0.0.1:8080
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Reinicie o servidor Apache.
$ sudo systemctl restart apache2
Para verificar se o Graphite está funcionando corretamente e é acessível, execute o seguinte comando.
$ curl 127.0.0.1:8080
Você receberá a seguinte saída.
Navegador Graphite
Isso confirma que está funcionando bem.
Passo 7 - Instalar Nginx
Usaremos o Nginx como servidor proxy para o Apache. Dessa forma, podemos colher os benefícios de segurança e obscuridade, enquanto usamos a configuração existente fornecida pelo Graphite.
O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.
Importe a chave de assinatura do Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Adicione o repositório para a versão estável do Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Atualize os repositórios do sistema.
$ sudo apt update
Instale o Nginx.
$ sudo apt install nginx
Verifique a instalação.
$ nginx -v
nginx version: nginx/1.22.0
Inicie o servidor Nginx.
$ sudo systemctl start nginx
Passo 8 - Instalar SSL
Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.
O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.
$ sudo snap install core
$ sudo snap refresh core
Instale o Certbot.
$ sudo snap install --classic certbot
Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Execute o seguinte comando para gerar um Certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d graphite.example.com
O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/graphite.example.com em seu servidor.
Gere um certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Verifique o serviço do agendador de renovação do Certbot.
$ sudo systemctl list-timers
Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.................................................................................................................................
Wed 2022-09-28 00:00:00 UTC 7h left Tue 2022-09-27 00:00:01 UTC 16h ago logrotate.timer logrotate.service
Wed 2022-09-28 02:39:09 UTC 10h left Tue 2022-09-27 09:42:42 UTC 6h ago apt-daily.timer apt-daily.service
Wed 2022-09-28 06:02:00 UTC 13h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Para verificar se a renovação do SSL está funcionando bem, faça um teste do processo.
$ sudo certbot renew --dry-run
Se você não ver erros, está tudo certo. Seu certificado será renovado automaticamente.
Passo 9 - Configurar Nginx
Abra o arquivo /etc/nginx/nginx.conf para edição.
$ sudo nano /etc/nginx/nginx.conf
Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Crie e abra o arquivo /etc/nginx/conf.d/uvdesk.conf para edição.
$ sudo nano /etc/nginx/conf.d/graphite.conf
Cole o seguinte código nele.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name graphite.example.com;
access_log /var/log/nginx/graphite.access.log;
error_log /var/log/nginx/graphite.error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/graphite.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/graphite.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/graphite.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 8.8.8.8;
location / {
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name graphite.example.com;
return 301 https://$host$request_uri;
}
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.
Verifique a sintaxe do arquivo de configuração do Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie o serviço Nginx.
$ sudo systemctl restart nginx
Passo 10 - Acessar e Usar o Graphite
Visite a URL https://graphite.example.com em seu navegador e você verá a seguinte tela.

Clique no link Login no canto superior direito para abrir a página de login. Insira suas credenciais de superusuário criadas no passo 5 e pressione o botão login para prosseguir.
Existem vários métodos para alimentar dados ao Graphite. Adicionamos um correspondedor de padrões no esquema de armazenamento, de acordo com o qual qualquer padrão que comece com test será registrado como nosso padrão. Vamos adicionar alguns dados aleatórios usando o seguinte comando.
$ echo "test.count 9 `date +%s`" | nc -q0 127.0.0.1 2003;
Isso adicionará uma métrica de dados com valor 9 ao sistema. Vamos adicionar mais dados percorrendo valores.
$ for i in 4 6 8 16 2; do echo "test.count $i `date +%s`" | nc -q0 127.0.0.1 2003; sleep 6; done
Volte ao painel do Graphite e abra Metrics >> test >> count na barra lateral esquerda. Você deve ver algo como o seguinte.

Agora você pode começar a usá-lo para monitoramento. Você também pode combiná-lo com o Grafana para obter um alto nível de personalização.
Conclusão
Isso conclui nosso tutorial sobre como instalar e configurar o Graphite em um servidor Ubuntu 22.04 junto com o Nginx como servidor proxy. Se você tiver alguma dúvida, poste nos comentários abaixo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.