pip install statsd
python
import docker
import psutil
import time
from statsd import StatsClient
python
client = docker.from_env()
python
def get_container_metrics(container_id):
container = client.containers.get(container_id)
cpu_percent = container.stats(stream=False)["cpu_stats"]["cpu_usage"]["total_usage"] / psutil.cpu_count() * 100
memory_usage = container.stats(stream=False)["memory_stats"]["usage"]
network_rx = container.stats(stream=False)["networks"]["eth0"]["rx_bytes"]
network_tx = container.stats(stream=False)["networks"]["eth0"]["tx_bytes"]
return cpu_percent, memory_usage, network_rx, network_tx
python
statsd_client = StatsClient(host='your_statsd_host', port=8125)
python
def send_metrics_to_statsd(cpu_percent, memory_usage, network_rx, network_tx):
statsd_client.gauge('docker.cpu_percent', cpu_percent)
statsd_client.gauge('docker.memory_usage', memory_usage)
statsd_client.gauge('docker.network_rx', network_rx)
statsd_client.gauge('docker.network_tx', network_tx)
python
while True:
containers = client.containers.list()
for container in containers:
cpu_percent, memory_usage, network_rx, network_tx = get_container_metrics(container.id)
send_metrics_to_statsd(cpu_percent, memory_usage, network_rx, network_tx)
time.sleep(60)