• 基于telegraf+influxdb+grafana进行postgresql数据库监控


    前言

    随着公司postgresql数据库被广泛应用,尤其是最近多个项目在做性能测试的时候都是基于postgresql的数据库,为了确定性能瓶颈是否会出现在数据库中,数据库监控也被我推上了日程。在网上找了一遍好像没有特别好的监控工具,虽然推荐比较多的是pgwatch,但是部署比较麻烦,需要Linux环境,然而公司大部分都是Windows而且后期推广也不是很方便,因此果断放弃了。

    最近在做一个服务器性能监控时发现telegraf+influxdb+grafana的组合比较不错,然后去官网和github上查了一下发现telegraf可以对postgresql进行监控,瞬间惊喜万分。下面简单介绍一下监控postgresql的配置方法:

    环境

    首先去官网下载telegraf、influxdb和grafana:

    telegraf: 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。下载地址

    influxdb:是一个用 Go 编写的目前比较流行的时间序列数据库。下载地址

    grafana:是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。下载地址

    三者之间的关系为:telegraf(监控数据收集)->influxdb(监控数据存储)->(监控数据展示)

    部署

    本次描述的方法是在Windows环境下部署实施,如果需要在Linux下部署请参考grafana + influxdb + telegraf , 构建性能监控平台

    1、influxdb部署方式

    下载influxdb包后解压,修改influxdb.conf配置文档中的以下内容:

    修改[data]下内容dir和wal-dir路径为本地存储路径,如下图所示:

    之后设置[admin]下的配置参数如下即可:

    保存配置文件后,在当前文件夹路径下启动cmd(在文件夹路径内输入cmd回车即可),在cmd窗口中输入:influxd -config influxdb.conf回车,启动influxdb数据库。

    在浏览器中输入http://127.0.0.1:8083/查看是否显示influxdb数据库界面,如下图所示:

    出现该界面后influxdb部署完成。

    2、telegraf部署方式

    下载telegra包后解压,修改telegraf.conf配置文档中的以下内容:

    ##output##中urls=["influxdb服务地址:监听端口"],database=“存储监控数据的数据库名称”,如下图所示:

    之后在配置最下方加入如下内容进行postgresql监控配置:

     [[inputs.postgresql]]
      address = "postgres://postgres:postgres@localhost"          #"postgres://数据库用户:密码@数据库ip/指定的数据库(可选)"
      ignored_databases = ["template0", "template1"]                 #忽略[]内的数据库监控,不能与database同时使用
      #databases = ["test"]                                                           #只监控[]内数据库,不能与ignored_database同时使用

    配置完成后保存conf文件,并在当前文件夹路径下启动cmd(在文件夹路径内输入cmd回车即可),在cmd窗口中输入:telegraf -config telegraf.conf启动监听

    可在influxdb中查看是否生成telegraf数据库及postgresql表单信息,如下图所示:

    相关postgresql监控内容参数意义可参考官方文档

    3、grafana部署方式

    下载grafana部署包后解压,双击ingrafana-server.exe,然后在浏览器中输入:http://127.0.0.1:3000/,如下图所示:

    输入用户名和密码,默认均为:admin,登录成功后配置数据源,如下图所示:

    一般初始过程中会提示配置数据源,可能与本过程存在差异,但是不影响配置

    此处在Data Sources中点击“Add data source”添加influxdb数据源,选择数据类型为influxdb,之后配置相关参数,如下图所示:

    配置完成后点击“Save&Test”按钮,提示如下信息:

    连接成功并保存。切换到“Dashboards”->“New”界面

    在新界面中添加Graph等展示图,如下图所示:

    点击新生成的graph界面的标题处,选择“Edit”进行参数编辑,如下图所示:

    修改General中的Title为相关监控参数名

    修改Metrics中的Panel Data Source为之前配置的telegraf,并选取展示数据,如下图所示:

    配置完成后可以看到展示结果,如下图所示:

    如果未显示数据,可以设置右上角的展示时间范围,如下图所示:

    到此为止一个最基本的postgresql读取磁盘块(blks_read)的监控配置完成,下面是一个简单的系统及postgresql监控界面如下图所示:

    优化

    为了让监控框架的启动方式更加简洁,我这里进行了一下bat一键启动,代码如下:

  • 相关阅读:
    说说与线程相关的方法
    sleep()和yield()有什么区别?
    同步和异步有何异同,分别在什么情况下使用?
    如何保证多个线程同时启动?
    volatile关键字能否保证线程安全?
    使用对象的wait()方法需要注意什么?
    乐观锁与悲观锁是什么?
    Condition实现等待、唤醒
    LongAdder与AtomicLong有什么区别?
    介绍一下ForkJoinPool的使用
  • 原文地址:https://www.cnblogs.com/Bug-Hunter/p/7428774.html
Copyright © 2020-2023  润新知