Toolman 100% local

Port 9090 — Prometheus

TCP registered

What runs on port 9090

The Prometheus metrics server and web UI.

Prometheus's web interface and API, and also Cockpit on some Linux distributions. Prometheus has no authentication of its own by design — the expectation is that it sits behind a reverse proxy that provides it. An exposed Prometheus hands over a complete map of the infrastructure it monitors: hostnames, service names, versions and traffic patterns.

Security considerations

Prometheus has no authentication of its own. Put it behind a reverse proxy that does.

Checking whether something is listening

# Linux / macOS — what is bound to the port
sudo lsof -i :9090
sudo ss -lntp | grep :9090

# Windows
netstat -ano | findstr :9090
Get-NetTCPConnection -LocalPort 9090

# is it reachable from outside?
nc -zv example.com 9090
curl -v telnet://example.com:9090

Freeing the port

# find the process, then stop it
sudo lsof -ti :9090 | xargs kill        # Linux / macOS
netstat -ano | findstr :9090            # note the PID, then:
taskkill /PID <pid> /F                    # Windows

Should this port be open to the internet?

Usually not. Expose it only if a specific external client needs it, and restrict by source address where you can.

Opening or blocking port 9090

Finding the port is usually the first half of the job. Start narrow — the second rule is there for services that genuinely serve the public, and most do not:

# ufw — Debian, Ubuntu
sudo ufw allow from 10.0.0.0/8 to any port 9090 proto tcp
sudo ufw allow 9090/tcp                   # only if it genuinely serves the public

# firewalld — RHEL, Fedora, CentOS
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=9090 protocol=tcp accept'
sudo firewall-cmd --reload

# iptables, if you are still there
sudo iptables -A INPUT -p tcp --dport 9090 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9090 -j DROP

# Windows
New-NetFirewallRule -DisplayName "Prometheus 9090" -Direction Inbound -Protocol TCP -LocalPort 9090 -RemoteAddress 10.0.0.0/8 -Action Allow

10.0.0.0/8 stands in for a private range — substitute your own. Note that a firewall rule does not undo a service bound to 0.0.0.0; it only stops packets reaching it, and a misconfigured or disabled firewall then exposes it immediately.

Quick reference

Port9090
ProtocolTCP
ServicePrometheus
RangeRegistered (1024–49151) — any user process may bind

Frequently asked questions

What is port 9090 used for?

The Prometheus metrics server and web UI.

Is it safe to open port 9090?

Prometheus has no authentication of its own. Put it behind a reverse proxy that does.

How do I check if port 9090 is open?

Locally, sudo lsof -i :9090 on macOS or Linux, or netstat -ano | findstr :9090 on Windows. From outside, nc -zv host 9090 tells you whether anything answers.

Why do I get "address already in use" on port 9090?

Another process is bound to it — often a previous run of your own program that did not exit cleanly. Find it with lsof -ti :9090 and stop it, or configure your application to use a different port.

Can I change the port this service uses?

Almost always yes, in the service's configuration. Moving off a default port reduces automated scan noise, but it is obfuscation rather than security — a real attacker scans all 65,535.

Other common ports

All port numbers