用Docker容器的方式部署InfluxDB监控

尝试用Docker的方式部署InfluxDB + Grafana + Telegraf.

部署记录

InfluxDB

准备

sudo mkdir -p /etc/influxdb
# 数据存储目录
sudo mkdir -p /var/lib/influxdb
# 配置文件
docker run --rm influxdb influxd config | sudo tee /etc/influxdb/influxdb.conf > /dev/null

自定义初始脚本: 可选

sudo mkdir -p /etc/influxdb/scripts
cd /etc/influxdb/scripts
sudo touch influxdb-init.iql
CREATE DATABASE sys_metrics;
CREATE RETENTION POLICY one_week ON sys_metrics DURATION 168h REPLICATION 1 DEFAULT;
docker run --rm -e INFLUXDB_HTTP_AUTH_ENABLED=true \
         -e INFLUXDB_ADMIN_USER=admin \
         -e INFLUXDB_ADMIN_PASSWORD=admin123 \
         -v /var/lib/influxdb:/var/lib/influxdb \
         -v /etc/influxdb/scripts:/docker-entrypoint-initdb.d \
         influxdb /init-influxdb.sh
# 验证
cat /var/lib/influxdb/meta/meta.db | grep one_week

启动InfluxDB容器

# 确保端口可用
sudo netstat -tulpn | grep 8086

docker run -d -p 8086:8086 --name=influxdb \
        -v /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf \
        -v /var/lib/influxdb:/var/lib/influxdb influxdb \
        -config /etc/influxdb/influxdb.conf

# 验证
curl -G http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
netstat -tulpn | grep 8086


# 可选:通过命令行: influx 创建认证账号
CREATE USER admin WITH PASSWORD 'admin123' WITH ALL PRIVILEGES

# 退出命令行
quit

其他配置

vi /etc/influxdb/influxdb.conf

Telegraf

准备

sudo useradd -rs /bin/false telegraf
sudo mkdir -p /etc/telegraf
sudo chown telegraf:telegraf /etc/telegraf/*

docker run --rm telegraf telegraf config | sudo tee /etc/telegraf/telegraf.conf > /dev/null

运行

docker run -d --user telegraf:telegraf --name=telegraf \
      --net=container:influxdb \
      -e HOST_PROC=/host/proc \
      -v /proc:/host/proc:ro \
      -v /etc/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
      telegraf

检查


docker container logs -f --since 10m telegraf

docker exec -it influxdb  influx

SHOW DATABASES
USE telegraf
SELECT * FROM cpu WHERE time > now() - 1m

Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana

# 检查端口
netstat -tulpn | grep 3000
# 检查网络
docker network inspect bridge | grep influxdb -A 5

可通过导入1443 Dashboard做简单验证.

扩展阅读