InfluxDB 加上 Grafana 是不错的方案,可以来做一个基本的监测平台
有关influxDB 的介绍请参见旧文 度量驱动开发之 InfluxDB
安装及配置
这里使用 docker 来简化安装配置的复杂性
FROM ubuntu:14.04.4
MAINTAINER Walter fan (walter.fan@gmail.com)
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get -qq update && apt-get -qqy install curl apt-transport-https wget adduser libfontconfig
RUN curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
RUN source /etc/lsb-release
RUN echo deb https://repos.influxdata.com/ubuntu trusty stable | tee /etc/apt/sources.list.d/influxdb.list
RUN wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.1-1470047149_amd64.deb
RUN dpkg -i grafana_3.1.1-1470047149_amd64.deb
RUN echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" >> /etc/apt/sources.list
RUN curl https://packagecloud.io/gpg.key | apt-key add -
RUN apt-get -qq update && apt-get -qqy install influxdb grafana
ADD startup.sh .
ENTRYPOINT ["/bin/sh", "startup.sh"]
- startup.sh
service influxdb start
service grafana-server start
influx -execute 'CREATE DATABASE metrics WITH DURATION 6h REPLICATION 1 NAME "default"'
while true; do sleep 3600; done
写一个简单的构建, 运行和停止的 fabric 文件
@task
def graflux_build():
cmd = "docker build --tag graflux docker/graflux"
print(cmd)
local(cmd)
@task
def graflux_start():
grafana_port = 3000
influx_api_port = 8086
influx_web_port = 8083
cmd = "docker run --name local-graflux -d -p %d:3000 -p %d:8086 -p %d:8083 graflux" % (grafana_port, influx_api_port, influx_web_port)
print(cmd)
local(cmd)
@task
def graflux_stop():
container_name = "local-graflux"
cmd1 = "docker kill %s|| true" % container_name
print(cmd1)
local(cmd1)
cmd2 = "docker rm -v %s || true" % container_name
print(cmd2)
local(cmd2)
@task
def influx():
cmd = "docker exec -it local-graflux influx"
print(cmd)
local(cmd)
执行如下命令即可构建和启动 grafana 和 influx
fab graflux_build
fab graflux_start
Grafana
访问 http://localhost:3000 就可以看到 Grafana 的 页面 初始登录的用户和密码可以从 grafana 中获取
docker exec graflus cat /etc/grafana/grafana.ini
一般默认的是 admin/admin
[security]
# default admin user, created on startup
;admin_user = admin
# default admin password, can be changed before first start of grafana, or in profile settings
;admin_password = admin
首先要配置数据源, 这里就配置默认数据源是 InfluxDB
其后就是写 influxDB SQL 来创建 Dashboard 和 Diagram
SELECT sum("count") FROM "http.response" WHERE "environment" = 'bts' AND "servicename" =~ /(?i)kanban/ AND $timeFilter GROUP BY time($interval), "method", "path" fill(0)
SELECT mean("duration") FROM "http.response" WHERE "environment" = 'bts' AND "servicename" =~ /(?i)kanban/ AND $timeFilter GROUP BY time($interval), "method", "path" fill(none)
SELECT sum("count") FROM "http.response" WHERE "environment" = 'bts' AND "servicename" =~ /(?i)kanban/ AND "response.code" =~ /^[0-9][0-9][0-9]$/ AND $timeFilter GROUP BY time($interval), "response.code" fill(0)
在代码中可以做一些切面,调用 influxdb 的API 或程序库,将所需数据写入influxdb