天天看點

搭建億級時間線資料的監控系統,我有絕招!

摘要:本文為你帶來如何使用華為雲資料庫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

搭建億級時間線資料的監控系統,我有絕招!

填寫如下參數:

  • URL:https://rwuser:password@IP:8635 。IP為資料庫執行個體的内網ip(參考2.1步驟(1)), 用rwuser密碼替換password(參考1.1步驟(6)),如果密碼包含如下特殊字元,需換成 ASIIC 碼形式輸入。
  • Auth:打開選項Basic auth 和skip TSL Verify。
  • Basic Auth Details:

User:rwuser

Password:購買資料庫執行個體時設定(參考1.1步驟(6)),如“nJa#w7f3”。

  • InfluxDB Details:

Database:telegraf(也可以填寫其他自己建立的資料庫)。

  • 點選“儲存”(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

 本文分享自華為雲社群《HDC.Cloud2021|如何使用華為雲GaussDB(for Influx) + Grafana搭建億級時間線資料的監控系統》,原文作者:心機胖 。

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀