度量驱动开发之Grafana

134 阅读2分钟

InfluxDB 加上 Grafana 是不错的方案,可以来做一个基本的监测平台

image.png

有关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

参考资料