狠狠操夜夜甜|人妻在线中文字幕亚洲无码不卡av|一区二区欧美亚洲|日躁夜躁狠狠躁2001|亚洲,超碰,欧美|18AV成人电影|午夜成人免费在线|婷婷激情网深爱五月|色欲综合成人在线|在线美女搞黄大片

中企動力 > 頭條 > 大數(shù)據(jù)平臺

網(wǎng)站性能檢測評分

注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。

大數(shù)據(jù)平臺

大數(shù)據(jù)監(jiān)控平臺實踐之路 營銷視頻課程

img

顏天荷

關(guān)注

綜述

日志和監(jiān)控開發(fā)人員工作中必不可少的兩只眼睛,日志是為了快速定位排查故障,監(jiān)控是為了發(fā)現(xiàn)潛在問題并能及時告警,是故障診斷和分析的重要輔助利器,同樣監(jiān)控系統(tǒng)對大數(shù)據(jù)平臺重要性不言而喻。在發(fā)生事故之前就能預(yù)警,最大限度降低系統(tǒng)故障率,是監(jiān)控的終極目標(biāo)和價值體現(xiàn)。本文旨在幫助大家了解監(jiān)控系統(tǒng),并能快速搭建公司的監(jiān)控平臺。

監(jiān)控體系

監(jiān)控粒度、監(jiān)控指標(biāo)完整性、監(jiān)控實時性是評價監(jiān)控系統(tǒng)的三要素。從分層體系可以把監(jiān)控系統(tǒng)分為三個層次:

業(yè)務(wù)層:業(yè)務(wù)系統(tǒng)本質(zhì)目的是為了達(dá)成業(yè)務(wù)目標(biāo),因此監(jiān)控業(yè)務(wù)系統(tǒng)是否正常最有效的方式是從數(shù)據(jù)上監(jiān)控業(yè)務(wù)目標(biāo)是否達(dá)成。對業(yè)務(wù)運(yùn)營數(shù)據(jù)進(jìn)行監(jiān)控,可及時發(fā)現(xiàn)程序bug或業(yè)務(wù)邏輯設(shè)計缺陷,比如注冊失敗率、登錄失敗率、付款失敗率等。業(yè)務(wù)系統(tǒng)的多樣性決定了應(yīng)由各個業(yè)務(wù)系統(tǒng)實現(xiàn)監(jiān)控指標(biāo)開發(fā)。應(yīng)用層:對應(yīng)用的整體運(yùn)行狀況進(jìn)行了解、把控,如果將應(yīng)用當(dāng)成黑盒子,開發(fā)、運(yùn)維就無從知曉應(yīng)用當(dāng)前狀態(tài),不能及時發(fā)現(xiàn)潛在故障。應(yīng)用監(jiān)控不應(yīng)局限于業(yè)務(wù)系統(tǒng),還包括各種中間件、計算引擎,如Spark、Jstorm、redis、zookeeper、kafka等。常用監(jiān)控數(shù)據(jù):JVM堆內(nèi)存、GC、CPU使用率、線程數(shù)、TPS、吞吐量等。一般通過抽象出的統(tǒng)一指標(biāo)收集組件,收集應(yīng)用級指標(biāo),比如不管是支付系統(tǒng)還是交易系統(tǒng),都要監(jiān)控jvm內(nèi)存使用。系統(tǒng)層:實時掌握服務(wù)器工作狀態(tài),留意性能、內(nèi)存消耗、容量和整體系統(tǒng)健康狀態(tài),保證服務(wù)器穩(wěn)定運(yùn)行。監(jiān)控指標(biāo):內(nèi)存、磁盤、CPU、網(wǎng)絡(luò)流量、系統(tǒng)進(jìn)程等系統(tǒng)級性能指標(biāo)架構(gòu)設(shè)計

工欲善其事必先利其器,根據(jù)對現(xiàn)有監(jiān)控產(chǎn)品的調(diào)研,以及我們對監(jiān)控的分層介紹、所需解決的問題,可以發(fā)現(xiàn)監(jiān)控系統(tǒng)從收集到分析的流程架構(gòu):采集-存儲-展示-告警:

Telegraf:插件化的指標(biāo)收集和指標(biāo)報告服務(wù),能定制化開發(fā)并輕松添加所需插件。已經(jīng)內(nèi)置了很多常用服務(wù)的插件,這也是我們選擇telegraf的原因之一,不用再重復(fù)造輪子

InfluxDB:高性能的布式時間序列指標(biāo)數(shù)據(jù)庫。監(jiān)控指標(biāo)收集是非常頻繁的,否則就失去了實時性,高頻收集的結(jié)果就是大數(shù)據(jù)量,也要對時間序列進(jìn)行分析,InfluxDB就能滿足這種應(yīng)用場景

Grafana:時間序列分析和監(jiān)控的開放平臺,支持多種數(shù)據(jù)源(InfluxDB、OpenTSDB時間序列數(shù)據(jù)庫)、豐富的展現(xiàn)形式、支持email/dingding報警

Telegraf

go語言編寫的插件化指標(biāo)收集agent,編譯成一個沒有外部依賴的二進(jìn)制文件,安裝部署很便捷,直接下載、解壓就行,默認(rèn)配置文件在$TELEGRAF_HOME/etc/telegraf/telegraf.conf目錄下。telegraf插件分為兩大類:input、output。

input:收集inputs配置的所有指標(biāo),已內(nèi)置的input插件:elasticsearch、redis、jolokia等。也可直接收集運(yùn)行agent server的各種指標(biāo),比如內(nèi)存、cpu、磁盤、磁盤IO、進(jìn)程、swap等。input配置都很簡明易用,一般只需配置服務(wù)IP地址就可以,如redis指標(biāo)收集配置:

如果沒有內(nèi)置收集插件,有兩種實現(xiàn)方案:

開發(fā)input插件,但這需要有GO語言基礎(chǔ)借助于httpjson input插件,該插件請求http url,返回json格式。url配置為自定義指標(biāo)收集服務(wù),在指標(biāo)收集服務(wù)內(nèi)實現(xiàn)指標(biāo)收集功能,然后指標(biāo)封裝成json返回或指標(biāo)數(shù)據(jù)直接在服務(wù)內(nèi)入庫。我們監(jiān)控Kettle Carte、spark、jstorm等用的這種實現(xiàn)思路。output:將收集到的度量數(shù)據(jù)序列化存儲,Telegraf指標(biāo)由四個部分組成:度量、標(biāo)簽、字段、時間戳。支持以下存儲結(jié)構(gòu):InfluxDB、Graphite、JSON,比如度量輸出到InfluxDB的配置:

urls:InfluxDB端口

database:存儲的數(shù)據(jù)庫

retention_policy:數(shù)據(jù)保留策略

調(diào)度頻率:所有指標(biāo)收集頻率是一樣的,在配置文件agent項下配置:

服務(wù)啟動:

--config:配置文件

--config-directory:配置文件目錄,如果有多個配置文件時使用

InfluxDB

InfluxDB是為時間序列構(gòu)建的高性能數(shù)據(jù)存儲,提供類SQL的查詢語言、特定分析時間序列的功能。通過設(shè)置數(shù)據(jù)保留策略,自動從系統(tǒng)中刪除過期數(shù)據(jù),釋放存儲空間。社區(qū)版只支持單臺服務(wù)器,會有單點(diǎn)故障風(fēng)險,商業(yè)版版支持高可用,對我們來說,單機(jī)InfluxDB已經(jīng)能滿足需求。選擇InfluxDB的原因:

InflluxDB是用GO寫的,編譯后是一個完全無依賴的二進(jìn)制文件,安裝部署非常便捷,解壓縮包即可高性能時間序列專有數(shù)據(jù)庫,對時間序列的存儲和查詢都做了優(yōu)化類SQL查詢語言,降低使用門檻數(shù)據(jù)保留策略可以有效的自動清理過期數(shù)據(jù) InfluxDB的數(shù)據(jù)是以shard groups形式存儲,指定時間間隔的數(shù)據(jù)存儲到一個shard groups里,這個時間間隔稱為shardGroupDuration。

服務(wù)啟動:

influx進(jìn)入shell命令行:

常用命令:

show databases:查看所有數(shù)據(jù)庫

use db_name:進(jìn)入數(shù)據(jù)庫

show measurements:顯示數(shù)據(jù)庫下所有度量

select *from cpu limit 10:查詢一個度量的數(shù)據(jù)

Telegraf默認(rèn)是將收集的數(shù)據(jù)持久化到telegraf這個數(shù)據(jù)庫下,每個input對應(yīng)一個度量表,比如zookeeper的指標(biāo)數(shù)據(jù)就在zookeeper這個度量下:

查詢數(shù)據(jù)保留策略:

duration:數(shù)據(jù)保留時間,0表示無限制,InfluxDB默認(rèn)30分鐘檢查一次保留策略。ALTER RETENTION語句修改保留7天數(shù)據(jù)。

replicaN:每個度量在集群里的副本數(shù),副本保證數(shù)據(jù)高可用性,社區(qū)版(單節(jié)點(diǎn))不支持副本數(shù)設(shè)置

Java Client:

Java Client對http api進(jìn)行了封裝,底層用Retrofit框架進(jìn)行http請求,是線程安全的,只需在一個應(yīng)用中創(chuàng)建一個InfluxDB Client對象。

client的寫操作支持batch,其實現(xiàn)原理:1、創(chuàng)建后臺單線程定時調(diào)度任務(wù),線程每隔一定時間發(fā)送請求:

2、每次writer時,把請求放到BlockingQueue隊列里,如果隊列大于batch數(shù),就啟動線程發(fā)送請求:

Client Api使用例子: 1、創(chuàng)建數(shù)據(jù)庫連接:

InfluxDB influxDB= InfluxDBFactory.connect(url, user, password);

url:InfluxDB的地址和端口,比如 http://localhost:8086

user/password:InfluxDB的用戶名/密碼

2、設(shè)置訪問的數(shù)據(jù)庫:

influxDB.setDatabase(database);

3、數(shù)據(jù)寫入:

Point.Builder builder = Point.measurement(measurement);

builder.tag(tags);

builder.fields(fields);

influxDB.write(builder.build());

Grafana

Grafana是一個指標(biāo)查詢、可視化、監(jiān)控的開源應(yīng)用,有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為數(shù)據(jù)源。

Grafana主要特性:

靈活豐富的圖形化組件,包括熱力圖、直方圖、地圖等在同一dashboard內(nèi)可以混合多種展示組件開源社區(qū)有大量的插件可供選擇,包括數(shù)據(jù)源插件、圖形插件、通知插件可以在同一個視圖里使用多個不同數(shù)據(jù)源簡單使用介紹:

安裝:下載&解壓二進(jìn)制包配置:配置文件:$GRAFANA_HOME$/conf配置端口號、Email、登錄用戶start:命令:/opt/grafana/bin/grafana-server start訪問:http://ip:port連接數(shù)據(jù)源、圖表開發(fā)、報警設(shè)置可參看官方文檔本文為原創(chuàng),歡迎分享到朋友圈。

img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動力姐姐微信

img
img

TOP