本文介绍如何用docker封装一个支持graphite和influxdb作为后端数据存储的statsd image。
最近折腾监控系统
选用statsd作为数据代理,用于接收各种agent发来的读数,然后存到influxdb中。
statsd 目前在github上star有7500+。
注意:
使用statsd数据刷到influxdb中有10秒钟延迟,这是由于statsd的机制。
git clone https://github.com/etsy/statsd.git
|
Dockerfile
FROM arkii/node:slim MAINTAINER Arkii sqy6@163.com COPY ./statsd /statsd ADD config.js /statsd/config.js RUN echo 'Asia/Shanghai' > /etc/timezone && /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && cd /statsd && npm install statsd-influxdb-backend CMD /statsd/bin/statsd "${CONFIG_PATH:=/statsd/config.js}" EXPOSE 8125/udp 8126/tcp
|
docker-compose/fig 配置文件
# cat fig.yml statsd: image: arkii/statsd:influxdb dns: 172.17.42.1 ports: - "8125:8125/udp" - "8126:8126/tcp" environment: - PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin - INFLUXDB_HOST=10.21.9.61 - STATSD_DEBUG=true
|
启动脚本
#!/bin/bash sysctl -w net.nf_conntrack_max=655360 sysctl -w vm.max_map_count=262144 ulimit -n 65536 /usr/bin/fig up -d --allow-insecure-ssl
|
statsd配置文件,支持启动时指定变量
# cat config.js { port: 8125, debug: process.env.STATSD_DEBUG || false, backends: [ "statsd-influxdb-backend" ], influxdb: { host: process.env.INFLUXDB_HOST || '127.0.0.1', port: process.env.INFLUXDB_PORT || 8086, version: 0.8, ssl: false, database: process.env.INFLUXDB_DB || "statsd", username: process.env.INFLUXDB_USER || "root", password: process.env.INFLUXDB_PASS || "root", flush: { enable: true }, proxy: { enable: false, suffix: 'raw', flushInterval: 1000 }, includeStatsdMetrics: false, includeInfluxdbMetrics: false } }
|
启动容器
查看容器日志和debug信息
直接使用我的镜像
docker pull arkii/statsd:influxdb
|
statsd项目地址
statsd-influxdb-backend项目地址