摘要: 本文为你带来如何应用华为云数据库 GaussDB(for Influx) + Grafana 搭建亿级工夫线数据的监控零碎。
本文分享自华为云社区《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…
Grafana 数据展现
Grafana 是一个跨平台、开源的数据可视化平台。用户配置连贯的数据源之后,Grafana 能够在网络浏览器里显示数据图表和正告。
服务端启动 Grafana 后,通过浏览器拜访:
## 这里的 IP 能够是云上服务器的弹性 IP,也能够是本地自建服务器的 Ip 地址。http://IP:3000
登陆 Grafana 的首页如下图所示。
1. 展现数据第一步:创立数据源,点击如下图中的红框地位。
抉择 InfluxDB,因为 GaussDB(For Influx) 齐全兼容 InfluxDB
填写如下参数:
- URL:https://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…
点击关注,第一工夫理解华为云陈腐技术~