日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

实时监控:基于流计算 Oceanus ( Flink ) 实现系统和应用级实时监控

發(fā)布時(shí)間:2024/2/28 windows 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实时监控:基于流计算 Oceanus ( Flink ) 实现系统和应用级实时监控 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:吳云濤,騰訊?CSIG?高級(jí)工程師

本文描述了如何使用騰訊云大數(shù)據(jù)組件來(lái)完成實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),通過(guò)實(shí)時(shí)采集并分析云服務(wù)器(CVM)及其 App 應(yīng)用的 CPU和內(nèi)存等資源消耗數(shù)據(jù),以短信、電話、微信消息等方式實(shí)時(shí)反饋監(jiān)控告警信息,高效地保障系統(tǒng)穩(wěn)健運(yùn)行。運(yùn)用云化的 Kafka、Flink、ES 等組件,大大減少了開(kāi)發(fā)運(yùn)維人員的投入。

一、解決方案描述

(一)概述

本方案結(jié)合騰訊云 CKafka、流計(jì)算 Oceanus (Flink)、 Elasticsearch、Prometheus 等,通過(guò) Filebeat 實(shí)時(shí)采集系統(tǒng)和應(yīng)用監(jiān)控?cái)?shù)據(jù),并傳輸?shù)?CKafka,再將 CKafka 數(shù)據(jù)接入流計(jì)算 Oceanus (Flink),經(jīng)過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理輸出到 Elasticsearch,最后通過(guò) Kibana 頁(yè)面查詢結(jié)果。方案中利用 Promethus 監(jiān)控系統(tǒng)指標(biāo),如流計(jì)算 Oceanus 作業(yè)運(yùn)行狀況,利用云 Grafana 監(jiān)控 CVM 或業(yè)務(wù)應(yīng)用指標(biāo)。

(二)方案架構(gòu)?

二、前置準(zhǔn)備

在實(shí)現(xiàn)本方案前,請(qǐng)確保已創(chuàng)建并配置了相應(yīng)的大數(shù)據(jù)組件。

(一)創(chuàng)建私有網(wǎng)絡(luò) VPC

私有網(wǎng)絡(luò)(VPC)是一塊您在騰訊云上自定義的邏輯隔離網(wǎng)絡(luò)空間,在構(gòu)建 CKafka、流計(jì)算 Oceanus,Elasticsearch 集群等服務(wù)時(shí)選擇建議同一個(gè) VPC。具體創(chuàng)建步驟請(qǐng)參考 幫助文檔 (https://cloud.tencent.com/document/product/215/36515)。

(二)創(chuàng)建 CKafka 實(shí)例

Kafka 建議選擇最新的 2.4.1 版本,和 Filebeat 采集工具兼容性較好。

購(gòu)買(mǎi)完成后,再創(chuàng)建 Kafka topic: topic-app-info

(三)創(chuàng)建流計(jì)算 Oceanus 集群

流計(jì)算 Oceanus 是大數(shù)據(jù)產(chǎn)品生態(tài)體系的實(shí)時(shí)化分析利器,是基于 Apache Flink 構(gòu)建的具備一站開(kāi)發(fā)、無(wú)縫連接、亞秒延時(shí)、低廉成本、安全穩(wěn)定等特點(diǎn)的企業(yè)級(jí)實(shí)時(shí)大數(shù)據(jù)分析平臺(tái)。流計(jì)算 Oceanus 以實(shí)現(xiàn)企業(yè)數(shù)據(jù)價(jià)值最大化為目標(biāo),加速企業(yè)實(shí)時(shí)化數(shù)字化的建設(shè)進(jìn)程。

在流計(jì)算 Oceanus 控制臺(tái)的【集群管理】->【新建集群】頁(yè)面創(chuàng)建集群,具體步驟請(qǐng)參考幫助文檔(https://cloud.tencent.com/document/product/849/48298)。

(四)創(chuàng)建 Elasticsearch 實(shí)例

在 Elasticsearch 控制臺(tái),點(diǎn)擊左上角【新建】創(chuàng)建集群,具體步驟請(qǐng)參考幫助文檔(https://cloud.tencent.com/document/product/845/19536)? 。

(五)創(chuàng)建云監(jiān)控 Prometheus 實(shí)例

為了展示自定義系統(tǒng)指標(biāo),需購(gòu)買(mǎi) Promethus 服務(wù)。只需要自定業(yè)務(wù)指標(biāo)的同學(xué)可以省略此步驟。

進(jìn)入云監(jiān)控控制臺(tái),點(diǎn)擊左側(cè) 【Prometheus 監(jiān)控】,新建 Promethus 實(shí)例,具體的步驟請(qǐng)參考幫助文檔 (https://cloud.tencent.com/document/product/1416/55982)。

(六)創(chuàng)建獨(dú)立 Grafana 資源

獨(dú)立的 Grafana 在灰度發(fā)布中,需在 Grafana 管理頁(yè)面(https://console.cloud.tencent.com/monitor/grafana)進(jìn)行單獨(dú)購(gòu)買(mǎi),以實(shí)現(xiàn)業(yè)務(wù)監(jiān)控指標(biāo)的展示。

(七)安裝配置 Filebeat

Filebeat 是一款輕量級(jí)日志數(shù)據(jù)采集的工具,通過(guò)監(jiān)控指定位置的文件收集信息。在該 VPC 下給需要監(jiān)控主機(jī)信息和應(yīng)用信息的云服務(wù)器上安裝 Filebeat。安裝方式一:下載 Filebeat 并安裝。下載地址(https://www.elastic.co/cn/downloads/beats/filebeat);方式二:采用【Elasticsearch 管理頁(yè)面】-->【beats 管理】中提供的 Filebeat。本示例中采用了方式一。下載到 CVM 中并配置 Filebeat,在 filebeat.yml 文件中添加如下配置項(xiàng):?

# 監(jiān)控日志文件配置 - type: log enabled: true paths:- /tmp/test.log#- c:\programdata\elasticsearch\logs\*# 監(jiān)控?cái)?shù)據(jù)輸出項(xiàng)配置 output.kafka: version: 2.0.0 # kafka版本號(hào) hosts: ["xx.xx.xx.xx:xxxx"] # 請(qǐng)?zhí)顚?xiě)實(shí)際的IP地址+端口 topic: 'topic-app-info' # 請(qǐng)?zhí)顚?xiě)實(shí)際的topic

請(qǐng)根據(jù)實(shí)際業(yè)務(wù)需求配置相對(duì)應(yīng)的 Filebeat.yml 文件,參考 Filebeat 官方文檔(https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html)。

注:示例選用2.4.1的 CKafka 版本,這里配置 version: 2.0.0。版本對(duì)應(yīng)不上可能出現(xiàn)“ERROR ? [kafka] kafka/client.go:341 ? ? Kafka (topic=topic-app-info): dropping invalid message”錯(cuò)誤

三、方案實(shí)現(xiàn)

接下來(lái)通過(guò)案例介紹如何通過(guò)流計(jì)算 Oceanus 實(shí)現(xiàn)個(gè)性化監(jiān)控。

(一)Filebeat 采集數(shù)據(jù)

1、進(jìn)入到 Filebeat 根目錄下,并啟動(dòng) Filebeat 進(jìn)行數(shù)據(jù)采集。示例中采集了 top 命令中顯示的 CPU、內(nèi)存等信息,也可以采集 jar 應(yīng)用的日志、JVM 使用情況、監(jiān)聽(tīng)端口等,詳情參考 Filebeat 官網(wǎng)

(https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html)。

# filebeat啟動(dòng) ./filebeat -e -c filebeat.yml# 監(jiān)控系統(tǒng)信息寫(xiě)入test.log文件 top -d 10 >>/tmp/test.log

2、進(jìn)入 CKafka 頁(yè)面,點(diǎn)擊左側(cè)【消息查詢】,查詢對(duì)應(yīng) topic 消息,驗(yàn)證是否采集到數(shù)據(jù)。

Filebeat 采集到的 Kafka 的數(shù)據(jù)格式:

{"@timestamp": "2021-08-30T10:22:52.888Z","@metadata": {"beat": "filebeat","type": "_doc","version": "7.14.0"},"input": {"type": "log"},"host": {"ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"],"mac": ["xx:xx:xx:xx:xx:xx"],"hostname": "xx.xx.xx.xx","architecture": "x86_64","os": {"type": "linux","platform": "centos","version": "7(Core)","family": "redhat","name": "CentOSLinux","kernel": "3.10.0-1062.9.1.el7.x86_64","codename": "Core"},"id": "0ea734564f9a4e2881b866b82d679dfc","name": "xx.xx.xx.xx","containerized": false},"agent": {"name": "xx.xx.xx.xx","type": "filebeat","version": "7.14.0","hostname": "xx.xx.xx.xx","ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9","id": "6b23463c-0654-4f8b-83a9-84ec75721311"},"ecs": {"version": "1.10.0"},"log": {"offset": 2449931,"file": {"path": "/tmp/test.log"}},"message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K" }

(二)創(chuàng)建 Flink SQL 作業(yè)

使用流計(jì)算 Oceanus 對(duì) CKafka 接入的數(shù)據(jù)進(jìn)行加工處理,并存入 Elasticsearch。

1、定義 Source

按照 Filebeat 中 json 消息的格式,構(gòu)造 Flink Table Source。

CREATE TABLE DataInput (`@timestamp` VARCHAR,`host` ROW<id VARCHAR,ip ARRAY<VARCHAR>>,`log` ROW<`offset` INTEGER,file ROW<path VARCHAR>>,`message` VARCHAR ) WITH ('connector' = 'kafka', -- 可選 'kafka','kafka-0.11'. 注意選擇對(duì)應(yīng)的內(nèi)置 Connector'topic' = 'topic-app-info', -- 替換為您要消費(fèi)的 Topic'scan.startup.mode' = 'earliest-offset', 'properties.bootstrap.servers' = '10.0.0.29:9092', 'properties.group.id' = 'oceanus_group2', -- 必選參數(shù), 一定要指定 Group ID'format' = 'json','json.ignore-parse-errors' = 'true', -- 忽略 JSON 結(jié)構(gòu)解析異常'json.fail-on-missing-field' = 'false' -- 如果設(shè)置為 true, 則遇到缺失字段會(huì)報(bào)錯(cuò) 設(shè)置為 false 則缺失字段設(shè)置為 null );

2、定義 Sink

CREATE TABLE es_output (`id` VARCHAR,`ip` ARRAY<VARCHAR>,`path` VARCHAR,`num` INTEGER,`message` VARCHAR,`createTime` VARCHAR ) WITH ('connector.type' = 'elasticsearch', 'connector.version' = '6', 'connector.hosts' = 'http://10.0.0.175:9200', 'connector.index' = 'oceanus_test2', 'connector.document-type' = '_doc', 'connector.username' = 'elastic', 'connector.password' = 'yourpassword','update-mode' = 'upsert', -- 可選無(wú)主鍵的 'append' 模式,或有主鍵的 'upsert' 模式 'connector.key-null-literal' = 'n/a', -- 主鍵為 null 時(shí)的替代字符串,默認(rèn)是 'null' 'format.type' = 'json' -- 輸出數(shù)據(jù)格式, 目前只支持 'json' );

3、加工業(yè)務(wù)數(shù)據(jù)

INSERT INTO es_output SELECThost.id as `id`,host.ip as `ip`,log.file.path as `path`,log.`offset` as `num`,message,`@timestamp` as `createTime` from DataInput;

4、配置作業(yè)參數(shù)

【內(nèi)置 connector】選擇flink-connector-elasticsearch6和flink-connector-kafka

注: 根據(jù)實(shí)際版本選擇

5、查詢 ES 數(shù)據(jù)

在 ES 控制臺(tái)的 Kibana 頁(yè)面查詢數(shù)據(jù),或者進(jìn)入某臺(tái)相同子網(wǎng)的 CVM 下,使用以下命令進(jìn)行查詢:

# 查詢索引 username:password請(qǐng)?zhí)鎿Q為實(shí)際賬號(hào)密碼 curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H 'Content-Type: application/json' -d' {"query": { "match_all": {}},"size": 10 } '

更多訪問(wèn)方式請(qǐng)參考 訪問(wèn) ES 集群(https://cloud.tencent.com/document/product/845/42868)。

(三)系統(tǒng)指標(biāo)監(jiān)控

本章節(jié)主要實(shí)現(xiàn)系統(tǒng)信息監(jiān)控,對(duì) Flink 作業(yè)運(yùn)行狀況進(jìn)行監(jiān)控告警。

Prometheus 是一個(gè)非常靈活的時(shí)序數(shù)據(jù)庫(kù),通常用于監(jiān)控?cái)?shù)據(jù)的存儲(chǔ)、計(jì)算和告警。流計(jì)算 Oceanus 建議用戶使用騰訊云監(jiān)控提供的 Prometheus 服務(wù),以免去部署、運(yùn)維開(kāi)銷;同時(shí)它還支持騰訊云的通知模板,可以通過(guò)短信、電話、郵件、企業(yè)微信機(jī)器人等方式,將告警信息輕松觸達(dá)不同的接收方。

監(jiān)控配置 ?

流計(jì)算 Oceanus 作業(yè)監(jiān)控

除了流計(jì)算 Oceanus 控制臺(tái)自帶的監(jiān)控信息,還可以配置目前已經(jīng)支持了任務(wù)級(jí)細(xì)粒度監(jiān)控、作業(yè)級(jí)監(jiān)控和集群 Flink 作業(yè)列表監(jiān)控。

1、流計(jì)算 Oceanus 作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數(shù)】,在【高級(jí)參數(shù)】處添加如下配置:

pipeline.max-parallelism: 2048 metrics.reporters: promgateway metrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址 metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口 metrics.reporter.promgateway.needBasicAuth: true metrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼 metrics.reporter.promgateway.interval: 10 SECONDS

2、在任一流計(jì)算 Oceanus 作業(yè)中,點(diǎn)擊【云監(jiān)控】進(jìn)入云 Prometheus 實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(灰度中的 Grafana 不能由此進(jìn)入),導(dǎo)入 json 文件,詳情請(qǐng)參見(jiàn) 接入 Prometheus 自定義監(jiān)控

(https://cloud.tencent.com/document/product/849/55239)。?

3、展現(xiàn)出來(lái)的 Flink 任務(wù)監(jiān)控效果如下,用戶也可以點(diǎn)擊【Edit】設(shè)置不同 Panel 來(lái)優(yōu)化展現(xiàn)效果。?

告警配置

1、進(jìn)入騰訊云監(jiān)控界面,點(diǎn)擊左側(cè)【Prometheus 監(jiān)控】,點(diǎn)擊已購(gòu)買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側(cè)【告警策略】,點(diǎn)擊【新建】,配置相關(guān)信息。具體操作參考 接入 Prometheus 自定義監(jiān)控

(https://cloud.tencent.com/document/product/849/55239)。

2、設(shè)置告警通知。選擇【選擇模版】或【新建】,設(shè)置通知模版。

3、短信通知消息

(四)業(yè)務(wù)指標(biāo)監(jiān)控

通過(guò) Filebeat 采集到應(yīng)用業(yè)務(wù)數(shù)據(jù),經(jīng)過(guò)流計(jì)算 Oceanus 服務(wù)進(jìn)行數(shù)據(jù)的加工處理并存入 ES,利用 ES + Grafana 來(lái)實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的監(jiān)控。

1、Grafana 配置 ES 數(shù)據(jù)源。進(jìn)入灰度發(fā)布中的 Grafana 控制臺(tái)

(https://console.cloud.tencent.com/monitor/grafana),進(jìn)入剛剛創(chuàng)建的 Grafana 服務(wù),找到外網(wǎng)地址打開(kāi)并登錄,Grafana 賬號(hào)為 admin,登錄后點(diǎn)擊【Configuration】,點(diǎn)擊【Add Source】,搜索elasticsearch,填寫(xiě)相關(guān) ES 實(shí)例信息,添加數(shù)據(jù)源。

2、點(diǎn)擊左側(cè)【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角【New Dashboard】,新建面板,編輯面板。

3、展現(xiàn)效果如下: ?

  • 總數(shù)據(jù)量寫(xiě)入實(shí)時(shí)監(jiān)控:對(duì)寫(xiě)入數(shù)據(jù)源的總數(shù)據(jù)量進(jìn)行監(jiān)控;?

  • 數(shù)據(jù)來(lái)源實(shí)時(shí)監(jiān)控:對(duì)來(lái)源于某個(gè)特定 log 的數(shù)據(jù)寫(xiě)入量進(jìn)行監(jiān)控;?

  • 字段平均值監(jiān)控:對(duì)某個(gè)字段的平均值進(jìn)行監(jiān)控;?

  • num字段最大值監(jiān)控:對(duì) num 字段的最大值進(jìn)行監(jiān)控;

注:本處只做示例,無(wú)實(shí)際業(yè)務(wù)

四、總結(jié)

本方案中對(duì)系統(tǒng)監(jiān)控指標(biāo)和業(yè)務(wù)監(jiān)控指標(biāo)2種監(jiān)控方案都進(jìn)行嘗試。若只需要對(duì)業(yè)務(wù)指標(biāo)進(jìn)行監(jiān)控,可省略 Promethus 相關(guān)操作。

此外,需要注意的是:

  • CKafka 的版本和開(kāi)源版本 Kafka 并沒(méi)有嚴(yán)格對(duì)應(yīng),方案中 CKafka2.4.1和開(kāi)源 Filebeat-1.14.1版本能夠調(diào)試成功。

  • 云監(jiān)控中的 Promethus 服務(wù)已經(jīng)嵌入了 Grafana 監(jiān)控服務(wù)。但不支持自定義數(shù)據(jù)源,該嵌入的 Grafana 只能接入 Promethus,需使用獨(dú)立灰度發(fā)布的 Grafana 才能完成ES數(shù)據(jù)接入 Grafana。

流計(jì)算 Oceanus?限量秒殺專享活動(dòng)火爆進(jìn)行中↓↓

點(diǎn)擊文末「閱讀原文」,了解騰訊云流計(jì)算 Oceanus 更多信息~

騰訊云大數(shù)據(jù)

長(zhǎng)按二維碼
關(guān)注我們

總結(jié)

以上是生活随笔為你收集整理的实时监控:基于流计算 Oceanus ( Flink ) 实现系统和应用级实时监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。