{"id":1533,"date":"2026-09-11T00:11:27","date_gmt":"2026-09-11T03:11:27","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/openobserve-ubuntu-servidor-dedicado-s3-gcs-minio\/"},"modified":"2026-09-11T00:55:34","modified_gmt":"2026-09-11T03:55:34","slug":"openobserve-ubuntu-servidor-dedicado-s3-gcs-minio","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/openobserve-ubuntu-servidor-dedicado-s3-gcs-minio\/","title":{"rendered":"OpenObserve en Ubuntu: servidor dedicado, S3, GCS, OCI y MinIO"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/openobserve-ubuntu-servidor-dedicado-v1.webp\" alt=\"Mascote LinuxPro administrando o OpenObserve em um servidor Ubuntu com armazenamento de observabilidade\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Depois de conhecer o <a href=\"\/2026\/09\/openobserve-observabilidade-logs-metricas-traces\/\">OpenObserve e sua plataforma unificada de logs, m\u00e9tricas e traces<\/a>, o pr\u00f3ximo passo \u00e9 oper\u00e1-lo em um servidor Ubuntu dedicado <strong>sem Docker<\/strong>. Este guia instala o bin\u00e1rio oficial como servi\u00e7o <code>systemd<\/code>, mant\u00e9m a porta do OpenObserve no loopback, publica a interface por nginx com TLS e mostra quando usar disco local ou S3, Google Cloud Storage, Oracle Cloud Object Storage e MinIO.<\/p>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Escopo:<\/strong> \u00e9 uma instala\u00e7\u00e3o de n\u00f3 \u00fanico. Ela \u00e9 indicada quando uma janela de manuten\u00e7\u00e3o e uma restaura\u00e7\u00e3o testada s\u00e3o aceit\u00e1veis. Alta disponibilidade \u00e9 outra arquitetura: use o desenho HA oficial com os componentes exigidos e fa\u00e7a uma homologa\u00e7\u00e3o antes de mover dados importantes.<\/div>\n<h2>Arquitetura e dimensionamento<\/h2>\n<table>\n<thead>\n<tr>\n<th>Cen\u00e1rio<\/th>\n<th>Metadados<\/th>\n<th>Dados de telemetria<\/th>\n<th>Quando usar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Servidor dedicado com disco<\/td>\n<td>SQLite local<\/td>\n<td>Disco local em Parquet<\/td>\n<td>Ambiente pequeno ou m\u00e9dio, opera\u00e7\u00e3o simples e reten\u00e7\u00e3o limitada.<\/td>\n<\/tr>\n<tr>\n<td>Servidor pequeno + object storage<\/td>\n<td>SQLite local<\/td>\n<td>S3, GCS, Oracle Object Storage ou MinIO<\/td>\n<td>Quando capacidade e durabilidade devem sair do disco da VM.<\/td>\n<\/tr>\n<tr>\n<td>Alta disponibilidade<\/td>\n<td>PostgreSQL<\/td>\n<td>Object storage<\/td>\n<td>Servi\u00e7o cr\u00edtico, escala horizontal e toler\u00e2ncia a falhas.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>O modo local \u00e9 o padr\u00e3o: usa SQLite para metadados e pode gravar dados de streams no disco ou em armazenamento compat\u00edvel com S3. Para um bucket em n\u00f3 \u00fanico, defina <code>ZO_LOCAL_MODE_STORAGE=s3<\/code>. N\u00e3o troque o backend de uma inst\u00e2ncia com dados sem plano de migra\u00e7\u00e3o, backup e teste de restaura\u00e7\u00e3o: apontar para um bucket n\u00e3o transporta automaticamente os Parquet existentes.<\/p>\n<table>\n<thead>\n<tr>\n<th>Meta de dados \u00fateis<\/th>\n<th>Perfil inicial<\/th>\n<th>Disco sugerido<\/th>\n<th>Uso indicado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>At\u00e9 500 GB<\/td>\n<td>4 vCPU, 16 GB RAM<\/td>\n<td>2 \u00d7 1 TB NVMe em RAID 1<\/td>\n<td>Poucos servi\u00e7os, m\u00e9tricas de hosts e produ\u00e7\u00e3o leve.<\/td>\n<\/tr>\n<tr>\n<td>At\u00e9 1 TB<\/td>\n<td>8 vCPU, 32 GB RAM<\/td>\n<td>2 \u00d7 2 TB NVMe em RAID 1<\/td>\n<td>V\u00e1rios servi\u00e7os, dashboards e consultas moderadas.<\/td>\n<\/tr>\n<tr>\n<td>At\u00e9 4 TB<\/td>\n<td>12\u201316 vCPU, 64 GB RAM<\/td>\n<td>2 \u00d7 8 TB NVMe em RAID 1<\/td>\n<td>Reten\u00e7\u00e3o local maior; acompanhe I\/O, compacta\u00e7\u00e3o e backup.<\/td>\n<\/tr>\n<tr>\n<td>Servidor pequeno + bucket<\/td>\n<td>4\u20138 vCPU, 16\u201332 GB RAM<\/td>\n<td>200\u2013500 GB NVMe local + bucket<\/td>\n<td>SQLite, WAL e dados tempor\u00e1rios locais; Parquet no object storage.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Esses perfis s\u00e3o pontos de partida, n\u00e3o promessa de capacidade. Me\u00e7a a ingest\u00e3o di\u00e1ria real, execute um piloto por ao menos uma semana e ajuste a reten\u00e7\u00e3o. Reserve espa\u00e7o para WAL, compacta\u00e7\u00e3o e cache: por padr\u00e3o, o cache em disco pode usar at\u00e9 50% do espa\u00e7o livre. RAID 1 reduz o impacto da falha de um disco, mas n\u00e3o substitui backup contra exclus\u00e3o, corrup\u00e7\u00e3o l\u00f3gica ou credenciais comprometidas.<\/p>\n<h2>1. Preparar o Ubuntu e criar o usu\u00e1rio do servi\u00e7o<\/h2>\n<p>Atualize o sistema e instale apenas os utilit\u00e1rios usados para baixar, validar e descompactar o arquivo. O processo do OpenObserve roda com uma conta de sistema sem login; o bin\u00e1rio permanece sob controle do root e os dados ficam em <code>\/var\/lib\/openobserve<\/code>.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y ca-certificates curl openssl tar\n\nsudo adduser --system --group --home \/var\/lib\/openobserve \\\n  --shell \/usr\/sbin\/nologin openobserve\nsudo install -d -o root -g root -m 0755 \/usr\/local\/lib\/openobserve\nsudo install -d -o openobserve -g openobserve -m 0750 \/var\/lib\/openobserve\nsudo install -d -o root -g openobserve -m 0750 \/etc\/openobserve<\/code><\/pre>\n<p>N\u00e3o use uma conta com shell administrativo para o servi\u00e7o. A separa\u00e7\u00e3o permite limitar quem l\u00ea as credenciais e quem escreve nos dados locais.<\/p>\n<h2>2. Baixar e instalar o bin\u00e1rio oficial<\/h2>\n<p>Consulte primeiro a <a href=\"https:\/\/openobserve.ai\/downloads\/\" target=\"_blank\" rel=\"noopener\">p\u00e1gina oficial de downloads<\/a> e troque <code>OO_VERSION<\/code> por uma release est\u00e1vel que voc\u00ea decidiu homologar. O exemplo usa <code>v0.92.2<\/code>, dispon\u00edvel no reposit\u00f3rio oficial de downloads em 11 de setembro de 2026. Ele detecta <code>amd64<\/code> ou <code>arm64<\/code>; para m\u00e1quinas com glibc antiga, a documenta\u00e7\u00e3o orienta usar o pacote <code>linux-amd64-musl<\/code>, com poss\u00edvel custo de desempenho.<\/p>\n<pre><code class=\"language-bash\">export OO_VERSION=v0.92.2\ncase \"$(dpkg --print-architecture)\" in\n  amd64|arm64) OO_ARCH=\"$(dpkg --print-architecture)\" ;;\n  *) echo \"Arquitetura n\u00e3o suportada\"; exit 1 ;;\nesac\n\nOO_TARBALL=\"openobserve-${OO_VERSION}-linux-${OO_ARCH}.tar.gz\"\nOO_URL=\"https:\/\/downloads.openobserve.ai\/releases\/openobserve\/${OO_VERSION}\/${OO_TARBALL}\"\n\ncd \/tmp\ncurl -fL -o \"$OO_TARBALL\" \"$OO_URL\"\nsha256sum \"$OO_TARBALL\"  # compare com o SHA-256 exibido na p\u00e1gina Downloads\n\nrm -rf \/tmp\/openobserve-install\nmkdir \/tmp\/openobserve-install\ntar -xzf \"$OO_TARBALL\" -C \/tmp\/openobserve-install\nsudo install -o root -g root -m 0755 \\\n  \/tmp\/openobserve-install\/openobserve \\\n  \"\/usr\/local\/lib\/openobserve\/openobserve-${OO_VERSION}\"\nsudo ln -sfn \"\/usr\/local\/lib\/openobserve\/openobserve-${OO_VERSION}\" \\\n  \/usr\/local\/bin\/openobserve\n\n\/usr\/local\/bin\/openobserve --version<\/code><\/pre>\n<p>O checksum \u00e9 uma etapa obrigat\u00f3ria antes de executar um bin\u00e1rio baixado. Guarde a vers\u00e3o instalada: atualiza\u00e7\u00f5es devem baixar uma nova release, validar o hash, instalar outro arquivo e s\u00f3 ent\u00e3o trocar o link simb\u00f3lico durante uma janela de manuten\u00e7\u00e3o.<\/p>\n<h2>3. Criar o arquivo de ambiente<\/h2>\n<p>O OpenObserve \u00e9 configurado por vari\u00e1veis de ambiente. Crie um arquivo que s\u00f3 root e o grupo do servi\u00e7o possam ler. A senha raiz \u00e9 usada na primeira inicializa\u00e7\u00e3o; gere uma senha longa, salve-a em um cofre e substitua os valores de exemplo <strong>antes<\/strong> de iniciar o servi\u00e7o.<\/p>\n<pre><code class=\"language-bash\">sudo tee \/etc\/openobserve\/openobserve.env &gt; \/dev\/null &lt;&lt;'EOF'\nZO_ROOT_USER_EMAIL=admin@example.com\nZO_ROOT_USER_PASSWORD=TROQUE_POR_UMA_SENHA_LONGA_E_ALEATORIA\n\n# N\u00f3 \u00fanico, dados no disco local\nZO_LOCAL_MODE=true\nZO_LOCAL_MODE_STORAGE=disk\nZO_DATA_DIR=\/var\/lib\/openobserve\n\n# O nginx ser\u00e1 a \u00fanica entrada p\u00fablica\nZO_HTTP_ADDR=127.0.0.1\nZO_HTTP_PORT=5080\nZO_GRPC_ADDR=127.0.0.1\nZO_WEB_URL=https:\/\/o2.exemplo.com\nZO_CORS_ALLOWED_ORIGINS=https:\/\/o2.exemplo.com\n\n# Ajuste a reten\u00e7\u00e3o ao piloto e ao espa\u00e7o dispon\u00edvel\nZO_COMPACT_DATA_RETENTION_DAYS=30\nEOF\nsudo chown root:openobserve \/etc\/openobserve\/openobserve.env\nsudo chmod 0640 \/etc\/openobserve\/openobserve.env\n\n# Gere uma senha para copiar ao cofre; depois cole-a no arquivo acima.\nopenssl rand -base64 36<\/code><\/pre>\n<p><code>ZO_HTTP_ADDR=127.0.0.1<\/code> evita publicar a porta 5080 diretamente. Definimos tamb\u00e9m <code>ZO_GRPC_ADDR=127.0.0.1<\/code> para que a porta gRPC padr\u00e3o n\u00e3o fique aberta na rede. Se o OpenObserve for servido em um subcaminho, como <code>https:\/\/exemplo.com\/logs\/<\/code>, use <code>ZO_BASE_URI=\/logs<\/code> e ajuste o proxy.<\/p>\n<h2>4. Rodar como servi\u00e7o systemd<\/h2>\n<p>Crie a unidade. O limite de descritores segue a recomenda\u00e7\u00e3o do guia oficial; <code>Restart=on-failure<\/code> faz o processo voltar ap\u00f3s uma falha, sem transformar um erro de configura\u00e7\u00e3o em loop silencioso.<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=OpenObserve\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=openobserve\nGroup=openobserve\nWorkingDirectory=\/var\/lib\/openobserve\nEnvironmentFile=\/etc\/openobserve\/openobserve.env\nExecStart=\/usr\/local\/bin\/openobserve\nExecStop=\/bin\/kill -s QUIT $MAINPID\nRestart=on-failure\nRestartSec=5\nLimitNOFILE=65535\nNoNewPrivileges=true\nPrivateTmp=true\nProtectHome=true\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo tee \/etc\/systemd\/system\/openobserve.service &gt; \/dev\/null &lt;&lt;'EOF'\n[Unit]\nDescription=OpenObserve\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=openobserve\nGroup=openobserve\nWorkingDirectory=\/var\/lib\/openobserve\nEnvironmentFile=\/etc\/openobserve\/openobserve.env\nExecStart=\/usr\/local\/bin\/openobserve\nExecStop=\/bin\/kill -s QUIT $MAINPID\nRestart=on-failure\nRestartSec=5\nLimitNOFILE=65535\nNoNewPrivileges=true\nPrivateTmp=true\nProtectHome=true\n\n[Install]\nWantedBy=multi-user.target\nEOF\n\nsudo systemctl daemon-reload\nsudo systemctl enable --now openobserve\nsudo systemctl status openobserve --no-pager\ncurl -fsS http:\/\/127.0.0.1:5080\/healthz; echo\nsudo journalctl -u openobserve -n 100 --no-pager<\/code><\/pre>\n<p>A resposta esperada do health check \u00e9 <code>{\"status\":\"ok\"}<\/code>. Se o servi\u00e7o n\u00e3o iniciar, confirme permiss\u00f5es em <code>\/var\/lib\/openobserve<\/code>, a sintaxe do arquivo de ambiente e o log do <code>journalctl<\/code>. N\u00e3o altere a senha raiz em uma inst\u00e2ncia j\u00e1 inicializada esperando recriar o usu\u00e1rio: essas vari\u00e1veis s\u00e3o necess\u00e1rias apenas no primeiro start.<\/p>\n<h2>5. Instalar nginx e publicar com TLS<\/h2>\n<p>Depois de validar o OpenObserve no loopback, publique-o com um nome DNS pr\u00f3prio, por exemplo <code>o2.exemplo.com<\/code>. Antes de pedir o certificado, crie os registros A (e AAAA, se usar IPv6) apontando para o servidor e confirme que as portas 80 e 443 chegam at\u00e9 ele. O OpenObserve continua em <code>127.0.0.1:5080<\/code>; somente o nginx ficar\u00e1 exposto.<\/p>\n<h3>Instalar o proxy reverso<\/h3>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y nginx certbot python3-certbot-nginx\nsudo systemctl enable --now nginx\nsudo nginx -t\nsudo systemctl status nginx --no-pager<\/code><\/pre>\n<p>Se o host usa UFW, preserve primeiro o acesso administrativo e libere somente HTTP\/HTTPS. Em provedores de nuvem, fa\u00e7a a mesma libera\u00e7\u00e3o no firewall ou security group do provedor.<\/p>\n<pre><code class=\"language-bash\"># Execute somente se UFW j\u00e1 faz parte da pol\u00edtica deste host.\nsudo ufw allow OpenSSH\nsudo ufw allow 'Nginx Full'\nsudo ufw status verbose<\/code><\/pre>\n<p>Crie primeiro um virtual host HTTP. Ele permite verificar o proxy e atender ao desafio HTTP-01 do Let&#8217;s Encrypt. N\u00e3o publique a porta 5080 nem a 5081 no firewall.<\/p>\n<pre><code class=\"language-bash\">sudo tee \/etc\/nginx\/sites-available\/openobserve &gt;\/dev\/null &lt;&lt;'EOF'\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name o2.exemplo.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:5080;\n        proxy_http_version 1.1;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\nEOF\n\nsudo ln -s \/etc\/nginx\/sites-available\/openobserve \/etc\/nginx\/sites-enabled\/openobserve\nsudo rm -f \/etc\/nginx\/sites-enabled\/default\nsudo nginx -t\nsudo systemctl reload nginx\ncurl -fsSI http:\/\/o2.exemplo.com\/<\/code><\/pre>\n<p>Use um subdom\u00ednio, como no exemplo. Se optar por publicar sob um caminho, como <code>https:\/\/exemplo.com\/logs\/<\/code>, siga a documenta\u00e7\u00e3o do OpenObserve e defina <code>ZO_BASE_URI=\/logs<\/code>; apenas acrescentar <code>location \/logs\/<\/code> no nginx n\u00e3o \u00e9 suficiente.<\/p>\n<h3>Emitir e renovar o certificado<\/h3>\n<p>Com o DNS propagado e a porta 80 acess\u00edvel publicamente, o plugin nginx do Certbot pode obter o certificado e instalar o bloco HTTPS. Fa\u00e7a c\u00f3pia da configura\u00e7\u00e3o antes de permitir que o Certbot a altere.<\/p>\n<pre><code class=\"language-bash\">sudo cp -a \/etc\/nginx \/etc\/nginx.backup.$(date +%F)\nsudo certbot --nginx --redirect -d o2.exemplo.com\nsudo nginx -t\nsudo systemctl reload nginx\nsudo certbot renew --dry-run\ncurl -fsSI https:\/\/o2.exemplo.com\/<\/code><\/pre>\n<p>O <code>--redirect<\/code> redireciona HTTP para HTTPS. O teste <code>renew --dry-run<\/code> confirma a renova\u00e7\u00e3o antes da data de expira\u00e7\u00e3o. Para certificados corporativos ou valida\u00e7\u00e3o DNS-01, n\u00e3o rode o comando acima: instale o certificado conforme a pol\u00edtica da organiza\u00e7\u00e3o e mantenha o mesmo proxy para <code>127.0.0.1:5080<\/code>.<\/p>\n<pre><code class=\"language-bash\">ss -lntp | grep -E ':(80|443|5080|5081)\\b'<\/code><\/pre>\n<p>O resultado deve mostrar nginx em 80\/443 e as portas 5080 e 5081 do OpenObserve apenas em loopback, nunca em <code>0.0.0.0<\/code>. N\u00e3o exponha a interface, APIs de ingest\u00e3o ou o endpoint MCP em HTTP simples.<\/p>\n<h2>6. Usar S3, GCS, Oracle Cloud ou MinIO<\/h2>\n<p>Com object storage, SQLite e WAL continuam no disco local. Edite o mesmo arquivo <code>\/etc\/openobserve\/openobserve.env<\/code>, mude <code>ZO_LOCAL_MODE_STORAGE<\/code> para <code>s3<\/code>, acrescente <strong>um<\/strong> bloco do provedor e reinicie o servi\u00e7o. Crie o bucket antes, use um prefixo exclusivo por ambiente e teste escrita, leitura e reten\u00e7\u00e3o em ambiente de homologa\u00e7\u00e3o.<\/p>\n<h3>AWS S3<\/h3>\n<p>Em EC2, prefira uma IAM Role com acesso m\u00ednimo ao bucket e ao prefixo em vez de credenciais est\u00e1ticas. Para S3 padr\u00e3o, n\u00e3o defina <code>ZO_S3_SERVER_URL<\/code>; o SDK busca a identidade da inst\u00e2ncia. Fora da AWS, injete as chaves por um gerenciador de segredos ou pelo arquivo de ambiente com permiss\u00e3o <code>0640<\/code>; nunca as inclua em Git.<\/p>\n<pre><code class=\"language-bash\"># Em EC2 com IAM Role: n\u00e3o defina AWS_ACCESS_KEY_ID nem AWS_SECRET_ACCESS_KEY\nZO_LOCAL_MODE_STORAGE=s3\nZO_S3_PROVIDER=s3\nZO_S3_REGION_NAME=us-east-1\nZO_S3_BUCKET_NAME=openobserve-producao\nZO_S3_BUCKET_PREFIX=openobserve\/producao\/<\/code><\/pre>\n<pre><code class=\"language-bash\"># Fora da AWS: entregue estes valores por cofre de segredos\nAWS_ACCESS_KEY_ID=CHAVE_DE_ACESSO\nAWS_SECRET_ACCESS_KEY=SEGREDO_DE_ACESSO\nZO_LOCAL_MODE_STORAGE=s3\nZO_S3_PROVIDER=s3\nZO_S3_REGION_NAME=us-east-1\nZO_S3_BUCKET_NAME=openobserve-producao\nZO_S3_BUCKET_PREFIX=openobserve\/producao\/<\/code><\/pre>\n<h3>Google Cloud Storage<\/h3>\n<p>O GCS pode usar a API compat\u00edvel com S3. Crie uma chave HMAC com acesso restrito ao bucket e use HTTP\/1, exigido pela configura\u00e7\u00e3o documentada:<\/p>\n<pre><code class=\"language-bash\">ZO_LOCAL_MODE_STORAGE=s3\nZO_S3_SERVER_URL=https:\/\/storage.googleapis.com\nZO_S3_REGION_NAME=auto\nZO_S3_ACCESS_KEY=CHAVE_HMAC_GCS\nZO_S3_SECRET_KEY=SEGREDO_HMAC_GCS\nZO_S3_BUCKET_NAME=openobserve-producao\nZO_S3_BUCKET_PREFIX=openobserve\/producao\/\nZO_S3_FEATURE_HTTP1_ONLY=true\nZO_S3_PROVIDER=s3<\/code><\/pre>\n<p>Tamb\u00e9m existe integra\u00e7\u00e3o direta: use <code>ZO_S3_PROVIDER=gcs<\/code> e, quando n\u00e3o houver identidade da inst\u00e2ncia, forne\u00e7a em <code>ZO_S3_ACCESS_KEY<\/code> o caminho para a chave JSON da conta de servi\u00e7o, com permiss\u00e3o de leitura apenas para o usu\u00e1rio <code>openobserve<\/code>.<\/p>\n<h3>Oracle Cloud Object Storage<\/h3>\n<p>O Object Storage da Oracle oferece API S3-compatible. Use uma Customer Secret Key, mantenha a URL no formato da sua tenancy e regi\u00e3o e valide a configura\u00e7\u00e3o em um bucket de teste antes de gravar dados de produ\u00e7\u00e3o.<\/p>\n<pre><code class=\"language-bash\">ZO_LOCAL_MODE_STORAGE=s3\nZO_S3_SERVER_URL=https:\/\/SEU_NAMESPACE.compat.objectstorage.SUA_REGIAO.oci.customer-oci.com\nZO_S3_REGION_NAME=SUA_REGIAO\nZO_S3_ACCESS_KEY=OCI_ACCESS_KEY\nZO_S3_SECRET_KEY=OCI_CUSTOMER_SECRET_KEY\nZO_S3_BUCKET_NAME=openobserve-producao\nZO_S3_BUCKET_PREFIX=openobserve\/producao\/\nZO_S3_PROVIDER=s3\nZO_S3_FEATURE_FORCE_HOSTED_STYLE=false<\/code><\/pre>\n<h3>MinIO<\/h3>\n<p>MinIO \u00e9 uma op\u00e7\u00e3o S3-compatible para datacenter, outra VM ou Kubernetes. Crie o bucket antes do start e use TLS entre o OpenObserve e o endpoint. Um MinIO no mesmo host n\u00e3o cria redund\u00e2ncia: uma falha da m\u00e1quina pode derrubar aplica\u00e7\u00e3o e dados ao mesmo tempo.<\/p>\n<pre><code class=\"language-bash\">ZO_LOCAL_MODE_STORAGE=s3\nZO_S3_SERVER_URL=https:\/\/minio.exemplo.com\nZO_S3_REGION_NAME=us-east-1\nZO_S3_ACCESS_KEY=MINIO_ACCESS_KEY\nZO_S3_SECRET_KEY=MINIO_SECRET_KEY\nZO_S3_BUCKET_NAME=openobserve-producao\nZO_S3_BUCKET_PREFIX=openobserve\/producao\/\nZO_S3_PROVIDER=minio<\/code><\/pre>\n<pre><code class=\"language-bash\">sudoedit \/etc\/openobserve\/openobserve.env\nsudo systemctl restart openobserve\nsudo journalctl -u openobserve -f<\/code><\/pre>\n<h2>7. Integrar agentes de IA e aplica\u00e7\u00f5es LLM<\/h2>\n<p><strong>Sim: o OpenObserve pode participar de um fluxo com LLM de duas formas.<\/strong> A primeira \u00e9 observar a aplica\u00e7\u00e3o de IA via OpenTelemetry \u2014 tokens, lat\u00eancia, modelo, erros e chamadas de ferramentas viram traces e m\u00e9tricas. A segunda \u00e9 conectar um cliente MCP para consultar logs, m\u00e9tricas e traces em linguagem natural.<\/p>\n<p>O endpoint MCP segue o formato <code>https:\/\/o2.exemplo.com\/api\/ID_DA_ORGANIZACAO\/mcp<\/code>. A documenta\u00e7\u00e3o informa suporte em Open Source, Enterprise e Cloud. Em uma inst\u00e2ncia HTTPS, um teste com Claude Code pode seguir este padr\u00e3o; gere o token somente na m\u00e1quina do operador e n\u00e3o o registre em reposit\u00f3rios, chat ou arquivos compartilhados.<\/p>\n<pre><code class=\"language-bash\">read -r -p \"E-mail do usu\u00e1rio MCP: \" O2_EMAIL\nread -r -s -p \"Senha do usu\u00e1rio MCP: \" O2_PASSWORD; echo\nO2_TOKEN=$(printf '%s' \"$O2_EMAIL:$O2_PASSWORD\" | base64 -w0)\n\nclaude mcp add --scope user openobserve \\\n  https:\/\/o2.exemplo.com\/api\/default\/mcp \\\n  -t http \\\n  --header \"Authorization: Basic $O2_TOKEN\"\n\nunset O2_PASSWORD O2_TOKEN\nclaude mcp list<\/code><\/pre>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Seguran\u00e7a no MCP:<\/strong> na edi\u00e7\u00e3o Open Source, chamadas MCP usam os privil\u00e9gios completos da conta conectada; RBAC granular est\u00e1 dispon\u00edvel na Enterprise e no Cloud. No OSS, use uma conta exclusiva para rastreabilidade e rota\u00e7\u00e3o, mas n\u00e3o a trate como privil\u00e9gio m\u00ednimo. Restrinja o endpoint por rede\/IP, pe\u00e7a confirma\u00e7\u00e3o para opera\u00e7\u00f5es de escrita e considere qualquer texto vindo de logs como dado n\u00e3o confi\u00e1vel \u2014 inclusive contra prompt injection.<\/div>\n<p>Telemetria de IA pode conter prompts, respostas, identificadores e documentos recuperados. Defina antes quais atributos podem sair da aplica\u00e7\u00e3o, fa\u00e7a redaction quando necess\u00e1rio e alinhe reten\u00e7\u00e3o, LGPD e acesso. N\u00e3o envie segredos ou chaves de API em logs ou spans.<\/p>\n<h2>Opera\u00e7\u00e3o, backup e atualiza\u00e7\u00e3o<\/h2>\n<ul>\n<li><strong>Monitore o pr\u00f3prio servi\u00e7o:<\/strong> CPU, RAM, I\/O, espa\u00e7o livre, erros de ingest\u00e3o, tempo de consulta e crescimento do bucket.<\/li>\n<li><strong>Proteja os metadados:<\/strong> em n\u00f3 \u00fanico, o SQLite local cont\u00e9m configura\u00e7\u00f5es, usu\u00e1rios, dashboards e alertas; fa\u00e7a backup consistente de <code>\/var\/lib\/openobserve<\/code> e do arquivo de ambiente, mantendo segredos protegidos.<\/li>\n<li><strong>Teste restaura\u00e7\u00e3o:<\/strong> recuperar apenas Parquet no bucket n\u00e3o recria automaticamente usu\u00e1rios, dashboards ou regras.<\/li>\n<li><strong>Atualize com rollback:<\/strong> instale uma nova vers\u00e3o lado a lado em <code>\/usr\/local\/lib\/openobserve<\/code>, valide o SHA-256, troque o link <code>\/usr\/local\/bin\/openobserve<\/code> e reinicie. Mantenha a vers\u00e3o anterior at\u00e9 homologar.<\/li>\n<li><strong>Revise reten\u00e7\u00e3o:<\/strong> <code>ZO_COMPACT_DATA_RETENTION_DAYS<\/code> tem padr\u00e3o de 3650 dias; defina uma pol\u00edtica expl\u00edcita e compat\u00edvel com as regras de lifecycle do bucket.<\/li>\n<\/ul>\n<h2>Checklist final<\/h2>\n<ul>\n<li>Bin\u00e1rio oficial instalado e SHA-256 conferido antes da execu\u00e7\u00e3o.<\/li>\n<li>Servi\u00e7o <code>openobserve<\/code> ativo, com dados grav\u00e1veis apenas pela conta dedicada.<\/li>\n<li>Portas 5080 e 5081 ligadas ao loopback; interface dispon\u00edvel somente em HTTPS pelo nginx.<\/li>\n<li>Senha raiz e credenciais de bucket armazenadas fora de Git, chat e backups sem criptografia.<\/li>\n<li>Reten\u00e7\u00e3o calculada com a ingest\u00e3o real, n\u00e3o com uma taxa de compress\u00e3o presumida.<\/li>\n<li>Teste de escrita\/leitura no bucket e restaura\u00e7\u00e3o de metadados conclu\u00eddos antes da produ\u00e7\u00e3o.<\/li>\n<\/ul>\n<h2>Fontes oficiais<\/h2>\n<ul>\n<li><a href=\"https:\/\/openobserve.ai\/downloads\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: downloads de bin\u00e1rios<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/getting-started\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: instala\u00e7\u00e3o self-hosted<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/administration\/maintenance\/operator-guide\/systemd\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: servi\u00e7o systemd<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/administration\/configuration\/environment-variables\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: refer\u00eancia de vari\u00e1veis de ambiente<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/administration\/maintenance\/storage-management\/storage\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: storage local, S3, GCS e MinIO<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/administration\/maintenance\/operator-guide\/nginx-proxy\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: nginx como proxy reverso<\/a><\/li>\n<li><a href=\"https:\/\/eff-certbot.readthedocs.io\/en\/stable\/using.html\" target=\"_blank\" rel=\"noopener\">Certbot: plugin nginx e renova\u00e7\u00e3o de certificados<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/integration\/ai\/mcp\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: servidor MCP<\/a><\/li>\n<li><a href=\"https:\/\/openobserve.ai\/docs\/integration\/ai\/\" target=\"_blank\" rel=\"noopener\">OpenObserve: integra\u00e7\u00f5es de IA e LLM<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/Object\/Tasks\/s3compatibleapi.htm\" target=\"_blank\" rel=\"noopener\">Oracle Cloud: API compat\u00edvel com Amazon S3<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Depois de conhecer o OpenObserve e sua plataforma unificada de logs, m\u00e9tricas e traces, o pr\u00f3ximo passo \u00e9 oper\u00e1-lo em um servidor Ubuntu dedicado sem Docker. Este guia instala o bin\u00e1rio oficial como servi\u00e7o systemd, mant\u00e9m a porta do OpenObserve no loopback, publica a interface por nginx com TLS e mostra quando usar disco local &#8230; <a title=\"OpenObserve en Ubuntu: servidor dedicado, S3, GCS, OCI y MinIO\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/openobserve-ubuntu-servidor-dedicado-s3-gcs-minio\/\" aria-label=\"Read more about OpenObserve no Ubuntu: servidor dedicado, S3, GCS, OCI e MinIO\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,21,2,120],"tags":[47,461,463,455,454,459,462,460,5],"class_list":["post-1533","post","type-post","status-publish","format-standard","hentry","category-devops","category-infra","category-linux","category-servidores","tag-devops","tag-gcs","tag-minio","tag-observabilidade","tag-openobserve","tag-opentelemetry","tag-oracle-cloud","tag-s3","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=1533"}],"version-history":[{"count":2,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1533\/revisions"}],"predecessor-version":[{"id":1536,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1533\/revisions\/1536"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=1533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=1533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=1533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}