新聞中心
時序數(shù)據(jù)是指在特定時間和順序下發(fā)生的數(shù)據(jù)記錄,例如傳感器數(shù)據(jù)、日志數(shù)據(jù)等。隨著物聯(lián)網(wǎng)、云計(jì)算和大數(shù)據(jù)技術(shù)的發(fā)展,時序數(shù)據(jù)的產(chǎn)生和應(yīng)用越來越廣泛,而針對時序數(shù)據(jù)的數(shù)據(jù)庫也應(yīng)運(yùn)而生。influxdb是一款高性能、分布式的時序數(shù)據(jù)庫,具有很多強(qiáng)大的功能,被廣泛用于監(jiān)控、IoT、實(shí)時分析、機(jī)器學(xué)習(xí)等領(lǐng)域。本文將從以下幾個方面介紹influxdb的功能和應(yīng)用:

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作與策劃設(shè)計(jì),閔行網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:閔行等地區(qū)。閔行做網(wǎng)站價格咨詢:13518219792
1. 基本概念
influxdb是一個開源,分布式的時序數(shù)據(jù)庫,使用go語言編寫,支持HTTP API,主要特點(diǎn)如下:
– 每個數(shù)據(jù)記錄有時間戳和至少一個浮點(diǎn)數(shù)值,這些數(shù)據(jù)記錄按照時間順序存儲;
– 支持水平擴(kuò)展和副本集,能夠保證高可用和數(shù)據(jù)一致性;
– 查詢語言類似于SQL,但是針對時序數(shù)據(jù)做了優(yōu)化,可以支持大量的維度聚合操作;
– 支持第三方插件,例如Grafana、Telegraf等,用于可視化和數(shù)據(jù)采集;
– 支持多種API類型,例如查詢、寫入、批量寫入等。
2. 數(shù)據(jù)模型
influxdb的數(shù)據(jù)模型含有三個核心概念:measurement、tag和field。下面分別介紹:
– Measurement:它是一個數(shù)據(jù)集,包含多個數(shù)據(jù)點(diǎn),每個數(shù)據(jù)集可以包括一個或多個field,它們都有相同的時間戳。一般情況下,把一個measurement作為數(shù)據(jù)的主題,例如cpu、memory、temperature等;
– Tag:它是measurement的元數(shù)據(jù),用于識別和過濾measurement,例如在cpu measurement中可以添加hostname tag,用于區(qū)分不同機(jī)器的數(shù)據(jù)。Tag可以是一個字符串,也可以是數(shù)字和布爾類型;
– Field:它是特定時間戳下的一個數(shù)值,每個field都可以是浮點(diǎn)類型、整數(shù)類型、以及布爾類型。
下面是influxdb數(shù)據(jù)模型的示意圖:
3. 寫入數(shù)據(jù)
influxdb的寫入數(shù)據(jù)方式分為兩種:單條寫入和批量寫入。單條寫入的寫入語法如下:
“`
curl -i -XPOST ‘http://localhost:8086/write?db=mydb’ –data-binary ‘cpu,hostname=myhost value=0.64’
“`
上面的語法表示把0.64的數(shù)值寫入到cpu measurement中,并添加了hostname tag,而mydb是數(shù)據(jù)庫的名稱。通過HTTP API寫入數(shù)據(jù)時,還可以添加很多其他屬性,例如時間戳、數(shù)據(jù)類型等。
批量寫入是將多個數(shù)據(jù)點(diǎn)一次性寫入influxdb的方式,可以大幅度提高寫入效率。例如,可以把多條數(shù)據(jù)點(diǎn)放置在一個數(shù)據(jù)文件中,并通過客戶端和influxdb建立連接,類似于以下的Push API。
“`
from influxdb import InfluxDBClient
client = InfluxDBClient(host=’localhost’, port=8086)
client.switch_database(‘mydb’)
json_body = [
{
“measurement”: “cpu”,
“tags”: {
“hostname”: “myhost”
},
“time”: “2023-11-03T14:00:00Z”,
“fields”: {
“value”: 0.64
}
}
]
client.write_points(json_body)
“`
4. 查詢數(shù)據(jù)
influxdb的查詢語言很易于學(xué)習(xí),它使用一種類似于SQL的語法,可以從不同的measurement中查詢數(shù)據(jù)。除了常規(guī)的查詢語言之外,還支持豐富的聚合操作,例如sum、mean、max、min等。下面是一個簡單的查詢實(shí)例:
“`
SELECT mean(value) FROM cpu WHERE hostname=’myhost’ AND time>’2023-11-03T14:00:00Z’ AND time
“`
上面的語法表示從cpu measurement中查詢hostname為myhost的數(shù)據(jù),時間范圍在2023-11-03 14:00:00到2023-11-03 15:00:00之間,五分鐘為一個時間段進(jìn)行聚合操作。除了常規(guī)的SQL查詢之外,influxdb還支持很多高級查詢語法,例如移動平均、滑動窗口等。
5. 應(yīng)用場景
influxdb適用于多種場景,例如:
– 監(jiān)控:可以存儲和查詢各種系統(tǒng)性能指標(biāo)、網(wǎng)絡(luò)流量指標(biāo)、設(shè)備狀態(tài)指標(biāo)等;
– IoT:可以存儲和分析傳感器數(shù)據(jù),例如溫度、濕度、光照等數(shù)據(jù);
– 實(shí)時分析:可以存儲和分析各種實(shí)時日志數(shù)據(jù),例如電商網(wǎng)站的訪問記錄、用戶點(diǎn)擊記錄等;
– 機(jī)器學(xué)習(xí):可以存儲和查詢大量的時間序列數(shù)據(jù),例如交通流量、股票價格等,對于訓(xùn)練預(yù)測模型非常有用。
6.
時序數(shù)據(jù)是大數(shù)據(jù)技術(shù)愈發(fā)重要的一部分,而influxdb作為一款高性能、分布式的時序數(shù)據(jù)庫,已經(jīng)被廣泛應(yīng)用于各種實(shí)時數(shù)據(jù)存儲和分析需求。在不同的應(yīng)用場景下,尤其是在物聯(lián)網(wǎng)、機(jī)器學(xué)習(xí)領(lǐng)域,influxdb的強(qiáng)大功能往往具有決定性影響??梢灶A(yù)見,在未來,時序數(shù)據(jù)庫的應(yīng)用范圍還會繼續(xù)擴(kuò)大,influxdb也將繼續(xù)成為開發(fā)人員和數(shù)據(jù)科學(xué)家們的不二選擇。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
InfluxDB與ElasticSearch
2023,開年就經(jīng)歷了疫情,這個年就過的有點(diǎn)長。隨著春暖花開,全國各地都逐漸好轉(zhuǎn)了,中國宴廳加油!
之前使用過此氏InfluxDB做過SaaS服務(wù),用于數(shù)據(jù)統(tǒng)計(jì)和展示;也使用過ES做時序數(shù)據(jù)的存儲和數(shù)據(jù)統(tǒng)計(jì)。那么根據(jù)不同的情況,如何做出選擇呢?
提到數(shù)據(jù)服務(wù),就不能不提讀寫性能。
我沒有實(shí)際做過壓測,我們就通過一篇官方文檔,來了解一下:
InfluxDB,更適用于對數(shù)字類數(shù)據(jù)本身的計(jì)算和存儲,支持?jǐn)?shù)據(jù)統(tǒng)計(jì)函數(shù),支持HttpAPI,支持Grafana;但它不支持全文檢索,不支持Kibana;
ES,適合日志系統(tǒng),也適合數(shù)字類數(shù)據(jù)本身的計(jì)算和存儲,特別是坐標(biāo)類數(shù)據(jù),有獨(dú)特的函數(shù)支持;支持HttpAPI,支持Kibana和Grafana。
總的來說,ES適用的場景多過InfluxDB,但也因此,其性能優(yōu)勢不大,磁盤存儲成本也會相對高一些。
兩者都支持集群和分布式。
據(jù)說InfluxDB的最新版本,對集群功能已經(jīng)不開源了,商業(yè)版本支持。開源版本,單機(jī)版穩(wěn)定性優(yōu)于集群。
ES的集群搭建,公司也嘗試過,但運(yùn)維成本和服務(wù)器成本都不理想,后改用阿里/騰訊的云套件。
如果搭建數(shù)據(jù)分析晌扒隱處理系統(tǒng),傾向使用InfluxDB;日志系統(tǒng),請使用ES。
部署更建議使用各大云平臺的產(chǎn)品套件,其安全性、運(yùn)維成本都是較低的。
如何實(shí)現(xiàn)Docker應(yīng)用的自定義彈性伸縮
簡介
現(xiàn)在有很多客戶很關(guān)心應(yīng)用的自動彈性伸縮,有些客戶銷畢也有自己的監(jiān)控框架,并希望能跟阿里云容器服務(wù)進(jìn)行集成。阿里云容器服務(wù)提供了服務(wù)彈性伸縮觸發(fā)器,并能夠跟監(jiān)控框架集成來實(shí)現(xiàn)自定義的服務(wù)自動彈性伸縮。
阿里云容器服務(wù)會自動采集容器的監(jiān)控?cái)?shù)據(jù),并可以通過集成將監(jiān)控?cái)?shù)據(jù)發(fā)送到三方的監(jiān)控框架中。有了監(jiān)控?cái)?shù)據(jù),我們可以在監(jiān)控框架中定義自己的報(bào)警規(guī)則,當(dāng)指標(biāo)發(fā)生報(bào)警的時虧伍芹候調(diào)用阿里云容器服務(wù)提供的觸發(fā)器來進(jìn)行容器的擴(kuò)容或者縮容。
下面用Influxdb,Kapacitor來介紹怎樣通過觸發(fā)器跟監(jiān)控框架集成實(shí)現(xiàn)自定義彈性伸縮。
生成服務(wù)的Scaling觸發(fā)器
在阿里云容器服務(wù)的應(yīng)用列表中,點(diǎn)擊要進(jìn)行自動擴(kuò)容控制的應(yīng)用,進(jìn)入后點(diǎn)擊“創(chuàng)建觸發(fā)器”
然后選擇“資源伸縮”,并選擇要伸縮的服務(wù)名
生成的觸發(fā)器如下:
調(diào)用sale out的時候需要添加參數(shù)&type=scale_out&step=2.
部署Influxdb及監(jiān)控
包括監(jiān)控時序數(shù)據(jù)庫Influxdb, 監(jiān)控報(bào)警框架Kapacitor,及界面展現(xiàn)Grafana. 我們可以用一個模板來部署:
version: ‘2’
services:
influxdb:
image: influxdb:0.13
ports:
“8083:8083”
“8086:8086”
container_name: “influxdb”
labels:
aliyun.monitoring.addon.influxdb: “”
grafana:
image: grafana/grafana:3.0.
ports:
“3000:3000”
links:
influxdb
kapacitor:
image: kapacitor:0.13
ports:
“9092:9092”
volumes:
/etc/acs/:/etc/acs/
environment:
KAPACITOR_INFLUXDB_0_URLS_0=
command: kapacitord -config /etc/kapacitor/kapacitor.conf
模板中通過標(biāo)簽“ aliyun.monitoring.addon.influxdb”來指定將阿里云容器服務(wù)中的監(jiān)控?cái)?shù)據(jù)發(fā)送到Influxdb.
在阿里云容器服務(wù)中增加一個模板,并通過模板創(chuàng)建應(yīng)用:
部署好的應(yīng)用:
配置Kapacitor報(bào)警規(guī)則
創(chuàng)建報(bào)警規(guī)則文件。在 Kapacitor中配置報(bào)警規(guī)則,并當(dāng)報(bào)警是調(diào)用擴(kuò)容觸發(fā)器URL.
通過Web遠(yuǎn)程終端或者Docker Exec進(jìn)入Kapacitor容器, 增加報(bào)警規(guī)則,比如我們對CPU指標(biāo)設(shè)置報(bào)警規(guī)則,創(chuàng)建/etc/橘沖acs/cpu.tick文件,內(nèi)容如下:
stream
// Select just the cpu measurement from our example database.
|from()
.measurement(‘docker_container_cpu’)
|groupBy(‘a(chǎn)liyun.cluster’, ‘a(chǎn)liyun.service.id’)
|alert()
.crit(lambda: “aliyun.cluster”==’xxxxx’ AND “aliyun.service.id”==’xxxxx’ AND usage_percent” > 70)
.post(‘
yYWRhODQwMDJhNjRmNWVhZjcxZjU1ZTllfG5naW54LWRlZmF1bHR8cmVkZXB3l8MThtZHFxbXJkNXJ
kaHw=&secret=xxx&&type=scale_out&step=1′)
.log(‘/tmp/alerts.log’)
這里對監(jiān)控的CPU指標(biāo)”docker_container_cpu”按集群及服務(wù)進(jìn)行聚合然后判斷當(dāng)usage_percent>70的時候進(jìn)行服務(wù)擴(kuò)容。
類似,我們也可以增加一個縮容的報(bào)警規(guī)則。
定義報(bào)警規(guī)則并啟用 在Kapacitor容器中執(zhí)行如下命令定義并啟用報(bào)警規(guī)則。
kapacitor define cpu_alert -type stream -tick cpu_alert.tick -dbrp telegraf.default;
kapacitor enable cpu_alert
這樣當(dāng)CPU的使用率超過70%的時候,會自動調(diào)用擴(kuò)容觸發(fā)器進(jìn)行容器的擴(kuò)容。
時序數(shù)據(jù)庫 influxdb的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于時序數(shù)據(jù)庫 influxdb,探究時序數(shù)據(jù)庫influxdb的強(qiáng)大功能與應(yīng)用,InfluxDB與ElasticSearch,如何實(shí)現(xiàn)Docker應(yīng)用的自定義彈性伸縮的信息別忘了在本站進(jìn)行查找喔。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
網(wǎng)站題目:探究時序數(shù)據(jù)庫influxdb的強(qiáng)大功能與應(yīng)用(時序數(shù)據(jù)庫influxdb)
文章鏈接:http://fisionsoft.com.cn/article/cdoshhd.html


咨詢
建站咨詢
