<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Prometheus on DevOps Engineer &amp; CloudAdmin</title><link>https://ruadmin.root.sx/tags/prometheus/</link><description>Recent content in Prometheus on DevOps Engineer &amp; CloudAdmin</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><atom:link href="https://ruadmin.root.sx/tags/prometheus/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET Backend Observability &amp; Telemetry Integration</title><link>https://ruadmin.root.sx/posts/sre-observability/dotnet-telemetry-observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/sre-observability/dotnet-telemetry-observability/</guid><description>&lt;h2 id="net-backend-observability-telemetry-integration--performance-optimization"&gt;.NET Backend Observability: Telemetry Integration &amp;amp; Performance Optimization&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;E-commerce platform with high-load .NET 8 backend&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;The .NET backend had no observability — no distributed tracing, no centralized metrics, no structured logging. Finding slow requests required manual log digging. The team needed full OpenTelemetry integration: trace propagation from Ingress through .NET to downstream services (PostgreSQL, Redis, RabbitMQ, HTTP upstreams), automatic slow-query detection, and a path to optimize P99 latency.&lt;/p&gt;</description></item><item><title>CI/CD &amp; Production Infrastructure for a Social App</title><link>https://ruadmin.root.sx/posts/cicd/ci-cd-dating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/cicd/ci-cd-dating/</guid><description>&lt;h2 id="production-infrastructure--cicd-for-a-social-app-launch"&gt;Production Infrastructure &amp;amp; CI/CD for a Social App Launch&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;Puzzle Master — a social matching platform&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;The startup had a production-ready Nest.js backend and Angular frontend, but zero infrastructure: deployments were manual, there was no CI/CD, no monitoring, no backups, and no separation between dev and prod environments. The goal was to build a complete DevOps stack from scratch before the public launch.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="solution"&gt;Solution&lt;/h4&gt;
&lt;h6 id="1-application-containerization"&gt;1. Application Containerization&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Multi-stage Dockerfile for backend (Nest.js + Prisma, non-root user)&lt;/li&gt;
&lt;li&gt;Multi-stage Dockerfile for frontend (Angular 12, legacy OpenSSL, Nginx for static assets)&lt;/li&gt;
&lt;li&gt;Docker Compose full stack: PostgreSQL 15, Redis 7, imgproxy, Nginx&lt;/li&gt;
&lt;li&gt;Healthchecks and &lt;code&gt;depends_on&lt;/code&gt; for correct startup ordering&lt;/li&gt;
&lt;li&gt;Isolated dev and prod environments in &lt;code&gt;/opt/dev&lt;/code&gt; and &lt;code&gt;/opt/prod&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-gitlab-cicd"&gt;2. GitLab CI/CD&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Migration of repository from Bitbucket to GitLab&lt;/li&gt;
&lt;li&gt;Pipeline for backend and frontend: build → push → deploy&lt;/li&gt;
&lt;li&gt;GitLab Container Registry for Docker image storage&lt;/li&gt;
&lt;li&gt;Automatic deploy to dev on every push; manual trigger for prod&lt;/li&gt;
&lt;li&gt;SSH deployment to VPS via &lt;code&gt;SSH_PRIVATE_KEY&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-nginx-reverse-proxy"&gt;3. Nginx Reverse Proxy&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Environment-agnostic config via &lt;code&gt;envsubst&lt;/code&gt; for dev/prod parity&lt;/li&gt;
&lt;li&gt;SSL/TLS (TLSv1.2, TLSv1.3) with Cloudflare certificates&lt;/li&gt;
&lt;li&gt;Routing: &lt;code&gt;/api/*&lt;/code&gt; → backend:4000, &lt;code&gt;/*&lt;/code&gt; → frontend:80&lt;/li&gt;
&lt;li&gt;www → root domain redirect (301)&lt;/li&gt;
&lt;li&gt;Separate imgproxy stack with SSL termination&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-security-ansible"&gt;4. Security (Ansible)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Server hardening via Ansible: SSH key-only auth, root login disabled&lt;/li&gt;
&lt;li&gt;UFW Firewall: only ports 80, 443, and custom SSH open&lt;/li&gt;
&lt;li&gt;Database accessible only via SSH tunnel&lt;/li&gt;
&lt;li&gt;All secrets stored in GitLab CI/CD variables&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-monitoring"&gt;5. Monitoring&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Prometheus + Grafana with automated dashboard provisioning&lt;/li&gt;
&lt;li&gt;Exporters: Node, cAdvisor, Postgres, Redis, Nginx, Blackbox&lt;/li&gt;
&lt;li&gt;5 Grafana dashboards: server, Docker containers, PostgreSQL, Redis, Nginx&lt;/li&gt;
&lt;li&gt;Alertmanager with Slack/webhook integration; alerts on CPU/RAM/Disk/API/SSL&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-database-backups"&gt;6. Database Backups&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Automated &lt;code&gt;pg_dump&lt;/code&gt; every hour&lt;/li&gt;
&lt;li&gt;gzip compression and upload to S3-compatible object storage (Cloudflare R2)&lt;/li&gt;
&lt;li&gt;Prometheus backup metrics: success status, size, timestamp&lt;/li&gt;
&lt;li&gt;Alerts: &lt;code&gt;DatabaseBackupMissing&lt;/code&gt;, &lt;code&gt;DatabaseBackupFailed&lt;/code&gt;, &lt;code&gt;DatabaseBackupSizeAnomaly&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="technologies"&gt;Technologies&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/gitlab-original.svg" alt="GitLab"&gt;&lt;div&gt;GitLab CI&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/ansible-original.svg" alt="Ansible"&gt;&lt;div&gt;Ansible&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/prometheus-original.svg" alt="Prometheus"&gt;&lt;div&gt;Prometheus&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/nginx.svg" alt="Nginx"&gt;&lt;div&gt;Nginx&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/postgresql.svg" alt="PostgreSQL"&gt;&lt;div&gt;PostgreSQL&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Deploy:&lt;/strong&gt; git push to main → automatic build and deploy to server&lt;br&gt;
✅ &lt;strong&gt;Environments:&lt;/strong&gt; full dev/prod isolation on a single VPS&lt;br&gt;
✅ &lt;strong&gt;Monitoring:&lt;/strong&gt; 5 dashboards, alerts across 6 categories&lt;br&gt;
✅ &lt;strong&gt;Backups:&lt;/strong&gt; automated hourly &lt;code&gt;pg_dump&lt;/code&gt; to Cloudflare R2&lt;br&gt;
✅ &lt;strong&gt;Security:&lt;/strong&gt; UFW, key-based SSH, database inaccessible from outside&lt;br&gt;
✅ &lt;strong&gt;Scalability:&lt;/strong&gt; architecture ready for database extraction to a dedicated server&lt;/p&gt;</description></item><item><title>CI/CD &amp; Production Infrastructure for a Web Application</title><link>https://ruadmin.root.sx/posts/cicd/ci-cd-js/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/cicd/ci-cd-js/</guid><description>&lt;h2 id="production-infrastructure--cicd-for-a-company-website"&gt;Production Infrastructure &amp;amp; CI/CD for a Company Website&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;A manufacturer of branded research products that needed a website to present its product catalog to customers&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;The developers had written the code of a conventional web application (NestJS backend + Next.js frontend), but infrastructure was completely missing: manual deployments, no CI/CD, no server setup, no monitoring, no backups and no separation between test and production environments. The goal was to build a complete DevOps stack from scratch: GitLab CI/CD, a self-hosted server, two isolated environments, HTTPS, monitoring, alerting and automated backups.&lt;/p&gt;</description></item><item><title>Geo-Distributed Blockchain Node Cluster in Kubernetes</title><link>https://ruadmin.root.sx/posts/clouds/blockchain-k8s-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/clouds/blockchain-k8s-cluster/</guid><description>&lt;h2 id="geo-distributed-blockchain-node-cluster-in-kubernetes"&gt;Geo-Distributed Blockchain Node Cluster in Kubernetes&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;Cryptocurrency platform (Web3 / DeFi)&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;The client needed fault-tolerant infrastructure to run ETH and BSC full nodes across four regions (EU, US, AP, LatAm) with minimal latency for end users, DDoS and RPC spam protection, secure HSM-based transaction signing, and centralized observability. Cold node sync takes 2–3 weeks — a fast-bootstrap solution was required.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="solution"&gt;Solution&lt;/h4&gt;
&lt;h6 id="1-infrastructure--iac-terraform--eks"&gt;1. Infrastructure &amp;amp; IaC (Terraform + EKS)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Terraform modules: VPC, subnets, security groups for 4 regions (Frankfurt, Virginia, Singapore, São Paulo)&lt;/li&gt;
&lt;li&gt;Managed Kubernetes (EKS 1.29+) per region with dedicated node pools: full nodes, archive nodes, signing service&lt;/li&gt;
&lt;li&gt;NVMe StorageClass (gp3) via CSI driver for high-performance chaindata storage&lt;/li&gt;
&lt;li&gt;Helm charts for geth / bsc-node with per-region custom values&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-gitops-flux-cd-multi-cluster"&gt;2. GitOps: Flux CD Multi-Cluster&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Flux CD v2 with &lt;code&gt;Kustomization&lt;/code&gt; per region — single source of truth for all clusters&lt;/li&gt;
&lt;li&gt;Secrets management: HashiCorp Vault + External Secrets Operator (ESO)&lt;/li&gt;
&lt;li&gt;All infrastructure changes applied via git push — no direct cluster access required&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-load-balancing--anti-spam"&gt;3. Load Balancing &amp;amp; Anti-Spam&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;HAProxy 2.8: sticky sessions, health checks via &lt;code&gt;eth_syncing&lt;/code&gt; — traffic routed only to fully synced nodes&lt;/li&gt;
&lt;li&gt;Nginx Ingress: rate limiting, IP reputation filtering (Lua-based, fail2ban-style)&lt;/li&gt;
&lt;li&gt;Cloudflare Workers: geo-routing + L7 DDoS protection&lt;/li&gt;
&lt;li&gt;Custom Go sidecar: health endpoint returns &lt;code&gt;ready&lt;/code&gt; only when node is fully synced&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-hsm-integration-for-transaction-signing"&gt;4. HSM Integration for Transaction Signing&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;AWS CloudHSM (prod) / YubiHSM2 (staging) for private key storage&lt;/li&gt;
&lt;li&gt;Go microservice with PKCS#11 abstraction — swap HSM vendor without rewriting code&lt;/li&gt;
&lt;li&gt;Isolated K8s namespace + NetworkPolicy: no egress except to HSM endpoint&lt;/li&gt;
&lt;li&gt;gRPC API for backend: sign tx, get pubkey&lt;/li&gt;
&lt;li&gt;Full audit log of all signing operations → Loki&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-monitoring--alerting"&gt;5. Monitoring &amp;amp; Alerting&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Custom Prometheus exporter (Go): &lt;code&gt;eth_blockNumber&lt;/code&gt;, &lt;code&gt;eth_syncing&lt;/code&gt;, peer count per node&lt;/li&gt;
&lt;li&gt;Grafana dashboards: sync lag, block height per region, RPC latency, SLO 99.9%&lt;/li&gt;
&lt;li&gt;Alertmanager → PagerDuty: alerts on block lag &amp;gt; N blocks, node down, peer count below threshold&lt;/li&gt;
&lt;li&gt;Loki + Promtail: structured logs from all nodes with region/pod correlation&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-operations--disaster-recovery"&gt;6. Operations &amp;amp; Disaster Recovery&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Snapshot bootstrap: chaindata from S3 via rclone — node ready in hours instead of weeks&lt;/li&gt;
&lt;li&gt;DR playbook: step-by-step runbooks for regional recovery&lt;/li&gt;
&lt;li&gt;Chaos Engineering (Chaos Mesh): node kill, network partition, pod failure tests&lt;/li&gt;
&lt;li&gt;Architecture Decision Records (ADR) for all key design choices&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="technologies"&gt;Technologies&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/kubernetes-plain.svg" alt="Kubernetes"&gt;&lt;div&gt;Kubernetes&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/terraform-original.svg" alt="Terraform"&gt;&lt;div&gt;Terraform&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/helm-original.svg" alt="Helm"&gt;&lt;div&gt;Helm&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/flux-cd.svg" alt="Flux CD"&gt;&lt;div&gt;Flux CD&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/prometheus-original.svg" alt="Prometheus"&gt;&lt;div&gt;Prometheus&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/grafana-original.svg" alt="Grafana"&gt;&lt;div&gt;Grafana&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Geo-routing:&lt;/strong&gt; latency reduced by routing users to the nearest region&lt;br&gt;
✅ &lt;strong&gt;Fast bootstrap:&lt;/strong&gt; node ready in hours via S3 snapshot instead of 2–3 weeks of sync&lt;br&gt;
✅ &lt;strong&gt;Anti-spam:&lt;/strong&gt; rate limiting + IP reputation — public RPC handles bot load without degradation&lt;br&gt;
✅ &lt;strong&gt;HSM:&lt;/strong&gt; private keys never leave the hardware module&lt;br&gt;
✅ &lt;strong&gt;GitOps:&lt;/strong&gt; every infrastructure change goes through git with a full audit trail&lt;br&gt;
✅ &lt;strong&gt;SLO 99.9%:&lt;/strong&gt; tracked in Grafana, PagerDuty alerts on any degradation&lt;/p&gt;</description></item><item><title>Prometheus + Grafana Monitoring Stack</title><link>https://ruadmin.root.sx/posts/sre-observability/monitoring-prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/sre-observability/monitoring-prometheus/</guid><description>&lt;h2 id="observability-stack-for-microservices-architecture"&gt;Observability Stack for Microservices Architecture&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;Early-stage startup&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;After migrating to a microservices architecture (15+ services), the team had no centralized monitoring in place. Issues were only discovered through user complaints — typically 30+ minutes after they occurred. A full observability stack was needed to detect and diagnose problems proactively.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="solution"&gt;Solution&lt;/h4&gt;
&lt;h6 id="1-monitoring-architecture"&gt;1. Monitoring Architecture&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; for metrics collection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana&lt;/strong&gt; for visualization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Loki&lt;/strong&gt; for centralized log aggregation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jaeger&lt;/strong&gt; for distributed tracing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertmanager&lt;/strong&gt; for notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-metrics-collection"&gt;2. Metrics Collection&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Automatic service discovery in Kubernetes&lt;/li&gt;
&lt;li&gt;Application-level custom metrics&lt;/li&gt;
&lt;li&gt;System metrics via node-exporter&lt;/li&gt;
&lt;li&gt;Database metrics via postgres-exporter and redis-exporter&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-grafana-dashboards"&gt;3. Grafana Dashboards&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Per-service dashboards for each microservice&lt;/li&gt;
&lt;li&gt;Unified infrastructure overview dashboard&lt;/li&gt;
&lt;li&gt;SLA/SLO tracking metrics&lt;/li&gt;
&lt;li&gt;Business metrics (RPS, conversion rate)&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-centralized-logging-loki"&gt;4. Centralized Logging (Loki)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Log aggregation across all services&lt;/li&gt;
&lt;li&gt;Full-text log search via Grafana&lt;/li&gt;
&lt;li&gt;Log-to-metric correlation&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-distributed-tracing-jaeger"&gt;5. Distributed Tracing (Jaeger)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;HTTP request tracing across services&lt;/li&gt;
&lt;li&gt;Call chain visualization&lt;/li&gt;
&lt;li&gt;Bottleneck identification&lt;/li&gt;
&lt;li&gt;Per-service latency analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-alerting"&gt;6. Alerting&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Alerts delivered to Slack / PagerDuty / custom webhooks&lt;/li&gt;
&lt;li&gt;Critical issue escalation&lt;/li&gt;
&lt;li&gt;On-call rotation support&lt;/li&gt;
&lt;li&gt;Automatic incident creation&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="technologies"&gt;Technologies&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/prometheus-original.svg" alt="Prometheus"&gt;&lt;div&gt;Prometheus&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/grafana-original.svg" alt="Grafana"&gt;&lt;div&gt;Grafana&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/kubernetes-plain.svg" alt="Kubernetes"&gt;&lt;div&gt;Kubernetes&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/helm-original.svg" alt="Helm"&gt;&lt;div&gt;Helm&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;MTTD:&lt;/strong&gt; reduced from 30 minutes to under 1 minute&lt;br&gt;
✅ &lt;strong&gt;MTTR:&lt;/strong&gt; recovery time reduced by 60%&lt;br&gt;
✅ &lt;strong&gt;Alerts:&lt;/strong&gt; proactive notifications before users are impacted&lt;br&gt;
✅ &lt;strong&gt;Visibility:&lt;/strong&gt; full observability across all services&lt;br&gt;
✅ &lt;strong&gt;Capacity planning:&lt;/strong&gt; data-driven resource forecasting&lt;/p&gt;</description></item></channel></rss>