美文网首页go
grafana + influxdb 简单配置示例

grafana + influxdb 简单配置示例

作者: 站长_郭生 | 来源:发表于2017-09-20 14:07 被阅读0次

官方示例地址:http://docs.grafana.org/features/datasources/influxdb/

  • 配置db连接

  • 配置Templating

    • 举例 Variables:不同域名 SHOW TAG VALUES FROM table WITH KEY = "host"
  • 配置图表

    • 选择图表连接DB
    • SELECT sum("requests") AS "请求总数", sum("status_2xx") AS "2xx", sum("status_3xx") AS "3xx", sum("status_4xx") AS "4xx", sum("status_5xx") AS "5xx" FROM "autogen"."table" WHERE "domain" =~ /^$uri_domain$/ AND "host" =~ /^$host$/ AND $timeFilter GROUP BY time(5m)
  • 导入数据到表中

  # coding=utf-8

import requests
import simplejson as json
from influxdb import InfluxDBClient
import time


def get_json(url):
    resp = requests.get(url)
    if resp.status_code == 200:
        return json.loads(resp.content)


def main(dst_host, dst_port, dst_database, hosts):
    influx = InfluxDBClient(host=dst_host, port=dst_port, database=dst_database)
    path = "http://{0}:{1}{2}"

    for host in hosts:
        result = get_json(path.format(host.get("host"), host.get("port"), host.get("uri")))
        if result:
            data = result.get("data")
            uri = data.get("uri")
            for key, value in uri.items():
                info = {
                    "measurement": "table",
                    "tags": {
                        "host": host.get("host"),
                        "domain": key
                    },
                    "fields": {
                        "requests": value.get("request"),
                        "avg_time": value.get("avg_time"),
                        # "status_2xx": value.get("status", {}).get("200", 0),
                        # "status_4xx": value.get("status", {}).get("400", 0),
                        # "status_5xx": value.get("status", {}).get("500", 0)
                    }
                }
                status_all = {"status_2xx" :0,"status_3xx":0,"status_4xx":0,"status_5xx":0}
                for k, v in value.get("status").items():
                    k = int(k)
                    if k <= 200:
                        status_all["status_2xx"] = status_all["status_2xx"] + v
                    elif k <= 300:
                        status_all["status_3xx"] = status_all["status_3xx"] + v
                    elif k <= 400:
                        status_all["status_4xx"] = status_all["status_4xx"] + v
                    else:
                        status_all["status_5xx"] = status_all["status_5xx"] + v
                for k1, v1 in status_all.items():
                    info["fields"][k1] = v1
                influx.write_points([info])


hosts = [
    {
        "host": "127.0.0.1",
        "port": 80,
        "uri": "/count/uri"
    },
]
influxdb_host = "127.0.0.1"
influxdb_port = 8086
influxdb_database = 'count_status'

main(influxdb_host, influxdb_port, influxdb_database, hosts)

相关文章

网友评论

    本文标题:grafana + influxdb 简单配置示例

    本文链接:https://www.haomeiwen.com/subject/qjcosxtx.html