本文分享自华为云社区《HDC.Cloud2021|如何使用华为云GaussDB(for Influx) + Grafana搭建亿级时间线数据的监控系统》,原文作者:心机胖 。

随着云计算规模越来越大,以及物联网应用逐渐普及,在物联网(AIoT)以及运维监控(AIOps)领域,存在海量的时序数据需要存储管理。我们日常在生活中经常见到城市的空气质量、风力和温度等数据,都需要用到时序数据库,再通过监控系统和大数据处理系统利用时序数据库的数据查询和计算分析功能将业务监控和分析结果实时展现出来。读完本文你将很快学会使用华为云数据库GaussDB(for Influx) + Grafana搭建亿级时间线数据的监控系统。

在真实的场景中,监控系统主要负责监控指标的采集、展示、分析和告警,其作用在于监控业务整体的运行情况。系统采集的指标通常和业务运维是强相关的,比如通用指标有服务器资源数据(CPU,内存,磁盘空间,带宽,网络时延),比如业务相关指标,以视频会议的应用为例,包括创建会议事件相关信息,会议接入相关信息,接口调用状态信息等。

指标数据采集与存储

指标数据是典型的时序数据,适合采用时序数据库进行存储。GaussDB(for Influx)为华为云时序数据库服务,购买即可使用,无需安装部署。

采集业务相关指标数据通常有写时序数据库和写日志两种方法,其中写时序数据库最为直接,适合于中小型应用。大型企业级应用通常采用写日志的方式,由Kafka对日志进行收集和聚合,再利用Telegraf取出Kafka数据并写入时序数据库。

Telegraf采集Kafka数据的简单配置如下:

[[inputs.kafka_consumer]]
## Kafka brokers.
## 这里设置Kafka brokers的IP地址
brokers = ["192.168.100.10:9092"]
​
## Topics to consume.
topics = ["telegraf"]
......
## Data format to consume.
## Each data format has its own unique set of configuration options, read
## more about them here:
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
## 这里设置数据格式,其他格式参考 DATA_FORMAT_INPUT.md,Logfmt为日志格式。
data_format = "Logfmt"

Telegraf写入时序数据库的配置如下:

# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = ["unix:///var/run/influxdb.sock"]
# urls = ["udp://127.0.0.1:8089"]
## 这里设置华为云GaussDB(for Influx)的配置的ELB IP地址或者节点内网IP地址
urls=[“https://rwuser:password@IP:8635”]
​
## The target database for metrics; will be created as needed.
## For UDP url endpoint database needs to be configured on server side.
## 设置数据库名称(默认telegraf)
database = "telegraf"
...
...
## HTTP Basic Auth
## 这里设置GaussDB(for Influx)数据库用户名和密码,实际密码替换password
username = "rwuser"
password = "password"
​
## HTTP User-Agent
# user_agent = "telegraf"
​
## UDP payload size is the maximum packet size to send.
# udp_payload = "512B"
​
## Optional TLS Config for use on HTTP connections.
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS but skip chain & host verification
## 这里设置跳过ssl验证
# insecure_skip_verify = true

以上配置中,中文注释的部分是必须设置的。GaussDB(for Influx)的用户名默认为rwuser,不可更改。配置时,选择时序数据库的其中一个节点内网ip或者ELB ip替换urls中的IP,用GaussDB(for Influx)实例的密码替换password,如果密码包含如下特殊字符,需换成 ASIIC 码形式输入。

~ : %7E,! : %21,@ : %40,# : %23,$ : %24

% : %25,^ : %5E,& : %26,* : %2A,? : %3F

例如密码:“Huawei@123”,转换后为 “Huawei%40123”。

在应用程序中直接写入GaussDB(for Influx)有所不同,需要借助驱动程序帮助完成。以Python为例:

第一步:安装数据库驱动

pip install influxdb
# Debian Or Ubuntu系统上使用如下命令
sudo apt-get install python-influxdb

第二步:连接GaussDB(for Influx)

# Python
from influxdb import InfluxDBClient
​
## 使用GaussDB(for Influx)的ELB IP或者实例节点的IP替换填写host,用户密码填写password,
## 并指定连接数据库database。
client = InfluxDBClient(host='localhost', port=8635, username='rwuser', password='password', database='telegraf', ssl=True, verify_ssl=False)

第三步:数据写入

json_body = [ {   "measurement": "my_tab","tags": {"host": "server01","region": "us-west"},  "time": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.localtime()),"fields": {"used_cpu": cpu_used_rate,"used_mem": mem_used_rate}   }]
client.write_points(json_body)    

Java语言的驱动程序,可以参考https://github.com/influxdata/influxdb-java

Grafana数据展示

Grafana是一个跨平台、开源的数据可视化平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。

服务端启动Grafana后,通过浏览器访问:

## 这里的IP可以是云上服务器的弹性IP,也可以是本地自建服务器的Ip地址。
http://IP:3000

登陆Grafana的首页如下图所示。

1.展示数据第一步:创建数据源,点击如下图中的红框位置。

选择InfluxDB,因为GaussDB(For Influx)完全兼容InfluxDB

填写如下参数:

  • URLhttps://rwuser:password@IP:8635 。IP为数据库实例的内网ip(参考2.1步骤(1)), 用rwuser密码替换password(参考1.1步骤(6)),如果密码包含如下特殊字符,需换成 ASIIC 码形式输入。

~ : %7E,! : %21,@ : %40,# : %23,$ : %24

% : %25,^ : %5E,& : %26,* : %2A,? : %3F

例如密码:“Huawei@123”,转换后为 “Huawei%40123”。

  • Auth:打开选项Basic auth 和skip TSL Verify。
  • Basic Auth Details

User:rwuser

Password:购买数据库实例时设置(参考1.1步骤(6)),如“nJa#w7f3”。

  • InfluxDB Details:

Database:telegraf(也可以填写其他自己创建的数据库)。

User:rwuser

Password:购买数据库实例时设置(参考1.1步骤(6)),如“nJa#w7f3”。

  • 点击“保存”(save)。

数据展示第二步:创建数据看板

点击首页DASHBOARDS创建看板,或者侧边“+”快捷按钮。

重点配置项(详细参见截图红框部分):

  • Visualization:Graph
  • 展示时间范围:last 1 hour
  • 数据更新时间间隔:1m
  • 数据源名称:InfluxDB-DataSource

查询语句配置如下(以展示服务器CPU利用率为例,从时序数据库的表cpu中查询usage_user,按1m的分组时间间隔求平均值,时间线是cpu=cpu-total):

FROM autogen cpu Where cpu = cpu-total
SELECT field (usage_user) mean ()
GROUP BY time (1m) fill (0) 

面板中的每个图都是可以编辑的,也可以设置告警。

总结

随着云计算和物联网的发展,数据规模急剧增加,监控系统的核心在于时序数据库,一个高可用、高性能、企业级的时序数据库对监控系统的稳定起决定性作用。

GaussDB(for Influx)是一个云原生存储与计算分离架构的时序数据库,支持亿级时间线,具备高可靠、高性能,非常适合DevOps场景下的海量时间线数据的存储,是监控系统最佳的选择。

作为华为ICT基础设施业务面向全球开发者的年度盛会,华为开发者大会2021(Cloud)将于2021年4月24日-26日在深圳举行。本届大会以#每一个开发者都了不起#为主题,将汇聚业界大咖、华为科学家、顶级技术专家、天才少年和众多开发者,共同探讨和分享云、计算、人工智能等最新ICT技术在行业的深度创新和应用。智能时代,每一个开发者都在创造一往无前的奔腾时代。世界有你,了不起!

点击链接,了解大会详细信息:https://developer.huaweicloud.com/HDC.Cloud2021.html

点击关注,第一时间了解华为云新鲜技术~

搭建亿级时间线数据的监控系统,我有绝招!相关推荐

  1. 淘宝电商项目落地,从零开始搭建亿级系统架构笔记

    电商亿级系统架构设计笔记,分为:基础篇.数据库篇.缓存篇.消息队列篇.分布式服务篇.维护篇.实战篇.通过学习这份笔记,你可以系统的学会从零开始搭建亿级系统架构.其中每篇中又有具体的设计实施的笔记供大家 ...

  2. 如何搭建亿级社交信息分享社交平台架构

    2019独角兽企业重金招聘Python工程师标准>>> 如何搭建亿级社交信息分享社交平台架构 架构 摘要如何搭建一个稳定.高并发的IM系统架构?怎样构建高并发即时通信系统?这个需求在 ...

  3. 上亿级的大数据量,如何高性能实现展示分析?

    上亿级的大数据量,如何高性能实现展示分析? 日常一提数据分析和可视化,就想到这个工具操作要多简单易用,图表要多美多炫,然而总是忽略背后的数据支撑. excel 几十万行数据就卡死崩,谈何数据透视表.可 ...

  4. 最新亿级流量电商详情页系统的大型高并发与高可用缓存架构实战第一版附全套资料

    课程介绍(非升级版) 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握red ...

  5. 亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

    2019独角兽企业重金招聘Python工程师标准>>> 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里 ...

  6. 亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 目录

    对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcache ...

  7. 大型电商架构亿级流量电商详情页系统实战--redis基础票

    亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构 01_高并发高可用复杂系统中的缓存架构有哪些东西 (1)如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据 ...

  8. 亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构

    <缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动 ...

  9. 从新手到专家:如何设计一套亿级消息量的分布式IM系统

    本文原作者Chank,原题"如何设计一个亿级消息量的 IM 系统",为了提升内容质量,本次有修订和改动. 1.写有前面 本文将在亿级消息量.分布式IM系统这个技术前提下,分析和总结 ...

最新文章

  1. 新闻行业中,自然语言理解技术该如何应用?
  2. SpringBoot+Shiro学习(八):RememberMe
  3. 改工作空间_打拼六年换的新房,装修花了17万,飘窗改柜子很实用,谁见过?...
  4. 使用Adsutil.vbs来获取IIS用户的密码
  5. Linux软件安装解决方案
  6. 如何导出久其报表所有数据_如何选择好的HR软件
  7. linhaifeng fullstack
  8. iscroll的使用
  9. 刀与枪的碰撞zhajinhua2012
  10. Vue中虚拟DOM的理解
  11. 人生时间计算器_卡西欧计算器见证你与时间赛跑,计算人生,把握人生!
  12. Liferay中配置MySQL数据库的两种方法
  13. 信息化建设项目前期方案编写1:设计要点
  14. 语义分割系列2-Unet(pytorch实现)
  15. 先有史记还是先有资治通鉴?司马迁、司马光和司马懿三人什么关系?
  16. 把数据转化为JSON格式
  17. 腾讯 Tars 开源 Go 版本 Tars-Go,并发性能比 gRPC 高 5 倍
  18. June 8th ipod
  19. OpenVINO示例介绍
  20. Win10 Hyper-V 固定虚拟机IP地址的方法

热门文章

  1. Bootstrap3 按钮组插件
  2. matlab中if可以判断或语句吗,matlab中if 语句后面的判别式不能是算术表达式?或者说变量?...
  3. android通讯录简单的_安卓手机删了联系人怎么恢复?超简单的恢复方法,一看就懂!...
  4. python的文件读取方式_python中文件读取方式
  5. iOS获取设备UUID和IDFA
  6. 图像处理---《Canny 边缘检测》
  7. 20181030-4 每周例行报告
  8. 前端自适应----单位rem
  9. Java线程之间通信
  10. 随笔编号-04 AngularJS 相关小问题解决方案合集