写点什么

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

发布于: 2021 年 04 月 20 日

​​​​​​​​​​​​​​​​摘要:本文为你带来如何使用华为云数据库 GaussDB(for Influx) + Grafana 搭建亿级时间线数据的监控系统。


本文分享自华为云社区《HDC.Cloud2021|如何使用华为云GaussDB(forInflux) + 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)数据库用户名和密码,实际密码替换passwordusername = "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(forInflux)的用户名默认为 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)


# Pythonfrom 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 语言的驱动程序,可以参考github.com/influxdata/…

Grafana 数据展示


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


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


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

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



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



选择 InfluxDB,因为 GaussDB(ForInflux)完全兼容 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)。



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


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




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


Visualization:Graph

展示时间范围:last 1 hour

数据更新时间间隔:1m

数据源名称:InfluxDB-DataSource


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


FROM autogen cpu Where cpu = cpu-totalSELECT field (usage_user) mean ()GROUP BY time (1m) fill (0) 
复制代码



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

总结


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


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



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


点击链接,了解大会详细信息。

developer.huaweicloud.com/HDC.Cloud20…


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


发布于: 2021 年 04 月 20 日阅读数: 140
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
搭建亿级时间线数据的监控系统,我有绝招!