WIndows下使用Grafana+InfluxDB打造监控系统

 前言

对于一个运维DBA来说,了解数据库的TPS、QPS很有必要(QPS:每秒查询数,即对数据库每秒的DML的操作数;TPS:每秒事物处理,即对数据库每秒DDL操作数),通过了解他们,可以掌握一个实例的基本工作运行状态。此外,还有系统地运行与性能信息,如CPU和内存配置信息等等。目前对这些数据进行可视化的方法有很多,其中一种就是本文将要介绍的通过时序数据库(influxdb)+grafana+python脚本+......来构建监控系统。

注:本文监控的数据不仅限于TPS、QPS、CPU等。下面开始搭建环境,记录实践过程!

 

1. 安装Grafana

进入Grafana Documentation Home,按照文档说明进行安装:

The Grafana backend includes Sqlite3 which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend TDM-GCC.

Copy conf/sample.ini to a file named conf/custom.ini and change the web server port to something like 8080. The default Grafana port, 3000, requires special privileges on Windows.

(本文配置的端口是8082)

--Run Grafana as windows service

Start Grafana by executing grafana-server.exe, preferably from the command line. If you want to run Grafana as windows service, download NSSM. It is very easy add Grafana as a Windows service using that tool.

 

2. 安装InfluxDB

influxdb是目前比较流行的时间序列数据库。

  • 何谓时间序列数据库?
    什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。但是,有什么数据不包含Timestamp呢?几乎所有的数据其实都可以打上一个Timestamp字段。时间序列数据的更重要的一个属性是如何去查询它,包括数据的过滤,计算等等。

而且它是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。其具有三大特性:

  1. 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
  2. 度量(Metrics):对实时大量数据进行计算;
  3. 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
--下载

可在如下地址下载InfluxDB的各种版本:https://portal.influxdata.com/downloads#influxdb

 

根据需要选择相应的版本下载,在这里我们选择windows binaries 版本下载,直接将下载地址复制到浏览器中即可下载。

https://dl.influxdata.com/influxdb/releases/influxdb-1.3.6_windows_amd64.zip

--安装和配置

InfluxDB并不需要安装,只需要解压到相应的目录即可,主要就是一个配置文件和几个可执行文件。

一开始,我直接下载的最新的influxdb-1.3.6发现里面的文件格式不对,经过研究我又下载了influxdb-1.3.5版本,发现格式正常而且也有配置文件。

不过,如果没有配置文件,可以通过如下方式生成(For create influxdb configuration file we can also use the below command):

influxd config > influxdb.conf

有很多人在安装运行InfluxDB后去访问8083端口的web管理页面却发现无法正常打开,主要问题是web管理界面默认是关闭的,我们需要将其打开后再访问页面使用。

修改配置文件influxdb.conf,将admin配置一段修改为如下:

 

另外,因为是该配置文件主要还是适应于linux系统地,有些文件路径需要酌情更改。

--运行

运行的方式大致有两种:

  • shift+右键安装目录打开命令行窗口(直接到达指定目录,比打开cmd,一步步指定目录要方便),键入如下命令开启InfluxDB服务:
    influxd -config influxdb.conf
  •  正如官网所述

查看控制台的输出:

这里使用的版本为1.10,黄色标记部分提示在未来更高版本中admin部分的配置将会移除掉,这就为上面高版本的配置文件的内容作了解释。

 

待InfluxDB启动完成后,试试web管理界面是不是可以使用了(http://localhost:8083/)?

设置连接信息:

 

3. 创建数据

 

https://docs.influxdata.com/influxdb/v1.1/introduction/getting_started/

 

4. 配置Grafana

 当有了数据源后 , 就可以开始配置grafana来展示数据了

    1).登陆grafana , 新建数据源 , 并配置好相关信息

 

  2).添加Dashboards

 

 

 

5. 不同版本的client for InfluxDB

5.1 使用python安装influxdb-python

获取资源:https://github.com/influxdb/influxdb-python.git

使用命令行安装influxdb-python:python setup.py install

 安装完成显示没有发现requirements.txt,不知有何影响?

打开python输入

from influxdb import client as influxdb

如果没有错误信息,则表示安装成功。

 接下来就可以使用python操作InfluxDB啦:

 (1)数据表操作示例如下:

#! /usr/bin/env python
#-*- coding:utf-8 -*-

from influxdb import InfluxDBClient

json_body = [
    {
        "measurement": "students",
        "tags": {
            "stuid": "s123"
        },
        #"time": "2017-03-12T22:00:00Z",
        "fields": {
            "score": 89
        }
    }
]

def showDBNames(client):
        result = client.query('show measurements;') # 显示数据库中的表
        print("Result: {0}".format(result))

client = InfluxDBClient('localhost', 8086, 'root', '', 'testdb') # 初始化(指定要操作的数据库)
showDBNames(client)
client.write_points(json_body) # 写入数据,同时创建表
showDBNames(client)
client.query("drop measurement students") # 删除表
showDBNames(client)

 

5.2  .NET环境安装InfluxDB.Client.Net

It's a C# client object model to help integrate with InfluxDB.(https://github.com/AdysTech/InfluxDB.Client.Net

安装方式见:https://www.nuget.org/packages/AdysTech.InfluxDB.Client.Net/0.6.7

We  use the NuGet Package Manager Console to install NuGet packages.

Open the console in Visual Studio using the Tools > NuGet Package Manager > Package Manager Console command.

 

 

参考文章:

python 安装influxdb-python

使用python操作InfluxDB

influxdb+grafana业务数据可视化

 

 

posted @ 2017-10-06 08:55  小金乌会发光-Z&M  阅读(2234)  评论(0编辑  收藏  举报