Go微服務: Prometheus性能監控與Grafana平臺的搭建

Prometheus 概述

  • promethues 是一套開源的監控&報警&時間序列數據庫的組合
  • 基本原理是通過http協議周期性抓取被監控組件的狀態
  • 適合Docker、Kubernetes環境的監控系統

Promethues 整體架構

一、抓取數據的兩種方式

  • 1 )Short-lived jobs 短暫的任務
    • 不會提供長時間的http去為promethues抓取數據
    • 這個服務很短暫, 運行后就會關閉
    • 短暫的服務怎么去監控
    • 它是通過主動推送數據到網關,進而由 promethues server 端 去抓取 PushGateway 上推上來的數據
  • 2 )另一種方式是 ClientLib/Exporters
    • 可以通過不同的 exporters 提供http的方式
    • 來給 promethues server 來抓取數據

二、Promethues Server 端

  • 主要分為三個環節:抓取,存儲,查詢
  • 在抓取網關的時候,promethues server 端如何知道抓取哪些鏈接
    • 獲取目標的時候,是通過配置文件,文本文件,consul等方式
    • 來存儲我們的抓取目標
    • 比較常用的是通過配置文件來記錄下抓取的目標
    • Promethues 根據抓取目標,定期采集數據
  • 當 Promethues 抓取完成后,進行存儲階段
  • Promethues 會根據報警規則計算是否滿足報警規則
  • 在報警規則中,會提供報警消息,主動推送給報警模塊
  • 報警模塊在收到消息后進行一系列的處理來進行報警
  • 另外數據存儲進來,提供給客戶訪問的時候
  • Promethues 還有一個簡單的web ui, 通過界面的方式查詢存儲的數據
  • 以上就是 Promethues 整體架構圖

三、Promethues 重要組件

  • 基于架構圖,可知里面有很多重要組件
  • Prometheus Server
    • 用于收集和存儲時間序列數據
    • 客戶端存儲用的是 時序 數據庫
  • Client Library
    • 客戶端庫生成相應的 metrics 并暴露給 Prometheus Server 去采集
    • 課程里就是 客戶端提供http的端口暴露給 Prometheus Server 讓它定期采用數據,達到監控能力
  • Push Gateway
    • 主要用于短期的jobs
    • 短期任務,可能5s采集一次,短期任務可能5s內會完成
    • 這樣server端可能采集不到
    • 所以,短期任務,可以主動上報到 Push Gateway 上
    • Server 定期采集 Push Gateway 上的數據
  • Exporters
    • 用于暴露已有的第三方服務的metrics 給 Prometheus
    • 第三方服務,比如 mysql, redis, mongodb, 等等已經寫好的一些 exporters 拿來用
    • 主動把需要采集的功能暴露出來,server主動來采集
  • Alertmanager
    • 報警模塊,從 Prometheus server 端接收到 alerts 后
    • 會進行一些列去除重復,分組,并路由到接受方式,發出報警
    • 通過微信,email, QQ等等,都是可以進行發送的

Promethues 工作流程

  • promethues server 定期從配置好的 jobs/exporters/PushGateway中拉數據
  • promethues server 記錄數據并根據報警規則推送 alert 數據
  • alertmanager 根據配置文件,對接收到的警報進行處理,發出告警
  • 在圖形界面中,可視化采集數據,提供一個簡單的 web ui,也有一個漂亮的ui工具,在后面介紹

Promethues 數據模型

  • 規定方式存儲數據就是數據模型
  • promethues 中存儲的數據為時間序列
  • 格式上由 metric 的名字和一系列的標簽(鍵值對)唯一標識組成
  • 不同的標簽則代表不同的時間序列

promethues 相關概念 - metric(指標)類型

  • Counter 類型
    • 一種累加的指標,如:請求的個數,出現的錯誤數等
  • Gauge 類型
    • 可以任意加減,如:溫度,運行的 goroutines 的個數
  • Histogram 類型
    • 可以對觀察結果采樣,分組以及統計,如:柱狀圖
  • Summary 類型
    • 提供觀測值的 count 和 sum 功能,如:請求持續時間

Promethues 相關概念 - instance 和 jobs

  • instance: 一個單獨監控的目標,一般對應于一個應用進程
  • jobs: 一組同類型的 instances 的組合 (主要用于保證可擴展性和可靠性)
  • 理解:
    • 假設應用程序處理能力不夠,橫向擴展了3個應用程序
    • 分別調用這3個應用程序進行監控,但是代碼上寫的包括暴露端口都一樣
    • 我們要監控這一塊,要通過 instance 和 jobs 來進行組合
    • 它提供 handler,不同的服務,它認為是不同的 instance
    • 它這個服務及時不一樣,但類型是一樣的,會基于相同類型組成一個 jobs
    • 這樣,不管應用程序擴展了多少個,都可以很細粒度來監控我們的程序

微服務監控系統 grafana 看板

  • 擁有豐富的 dashboard 和 圖表編輯的指標分析平臺
  • 擁有自己的權限管理和用戶管理系統
    • 如果要擴展它,可以在基礎上進行定制
  • Grafana 更適合用于數據可視化展示
    • 在日常工作中發現,它的數據可視化展示能力非常的強

微服務監控系統 Promethues + Grafana 安裝


1 )拉取鏡像

  • $ docker pull prom/prometheus
  • $ docker pull grafana/grafana

2 )基于 docker-compose 部署

version: "2"services:prometheus:image: prom/prometheus# network_mode: "host"container_name: prometheus-composeports:- "9090:9090"volumes:- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml   #prometheus主配置文件- ./prometheus/prometheus-data:/prometheus  #數據存儲映射- ./prometheus/conf:/etc/prometheus/conf   #prometheus子配置文件路徑command:- '--config.file=/etc/prometheus/prometheus.yml'    #加載主配置文件- '--storage.tsdb.path=/prometheus'    #啟動數據持久存儲restart: alwaysgrafana:image: grafana/grafana# network_mode: "host"container_name: grafana-composeports:- "3000:3000"volumes:# - ./grafana/grafana.ini:/etc/grafana/grafana.ini #grafana配置文件- ./grafana/grafana_data:/var/lib/grafana   #數據存儲映射restart: always

下面開始寫這個 prometheus.yml

global:scrape_interval: 15s # 默認15s采集一次external_labels: # 額外的標簽 全局的配置monitor: 'go-micro-xxx-monitor'
scrape_configs:# 監控的服務:按照一個個的job來監控的- job_name: 'services-order'scrape_interval: 5s # 覆蓋默認值static_configs:- targets: ['192.168.1.7:9092'] # 這個地址是容器能夠訪問到的地址,寫本機地址, 這個地址在容器或k8s中是會變的, 這個端口是 services-order 的端口
  • 運行:$ docker-compose up
  • 運行起來后,進入prometheus UI界面,訪問 ip:9090
  • 注意:
    • prometheus 如果運行在K8s中,這個地址就要特別注意
    • 這里只是用本機來進行prometheus的搭建測試
    • 上面9092端口是services-order中暴露出來的
    • 服務自定義的prometheus端口,以此來采集自身服務的信息
  • 在界面上看下它的 targets ,位置 (上導航,Status 下拉 targets)
  • 點進去 ip:9092/metrics 可以看到一些日志
  • 也可以針對一些指標,使用圖表查看
  • 監控系統控制臺 ip:3000 來訪問, 進入 grafana 看板
  • 輸入 admin/admin 之后輸入新的密碼
  • 進入界面后,左側倒數第二個菜單,第一個 Configuration 點擊 Add data source
    • 選擇 第一個 Prometheus 作為我們的源
    • 配置url,這就是 Prometheus 在哪臺服務器,能訪問到 9090,這是本機,本機的ip:9090
  • 之后,點擊下面的 Save & test 按鈕
  • 出現 Data source is working 的提示就說明成功了
  • 點擊導航頂部的 Add penel 圖表, 開始配置看板,如上圖
    • 在 Query 下選擇 Prometheus
    • 在 Metrics 中 選擇 go / go_memstats_gc_sys_bytes
    • 在右側 Panel 下的 Visualization 選擇合適的 graphl
  • 在生產環境上配置的需要注意,Prometheus 的地址
    • 開發時,寫本機當前的地址
    • 生產時,注意添加正確的地址

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12254.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RedisTemplate操作Redis詳解之連接Redis及自定義序列化

連接到Redis 使用Redis和Spring時的首要任務之一是通過IoC容器連接到Redis。為此,需要java連接器(或綁定)。無論選擇哪種庫,你都只需要使用一組Spring Data Redis API(在所有連接器中行為一致):…

面對.halo勒索病毒,如何有效防范與應對?

導言: 隨著網絡技術的不斷發展,網絡安全問題也日益凸顯。其中,勒索病毒作為一種極具破壞性的網絡攻擊手段,近年來在全球范圍內頻發。其中,.halo勒索病毒作為勒索病毒家族中的一員,其危害性和傳播性不容忽視…

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 論文閱讀

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 論文閱讀 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息: 原文鏈接:https://ojs.aaai.org/index.php/AAAI/article/view/4…

Flutter 中的 Spacer 小部件:全面指南

Flutter 中的 Spacer 小部件:全面指南 在Flutter布局系統中,Spacer是一個Flex組件,用于占據可用空間,從而推動其他Widget到布局的開始或結束位置。Spacer通常與Row、Column或Flex一起使用,以實現靈活的布局設計。本文…

二叉樹專題(有關二叉樹的相關學習)

二叉樹 1.數概念及結構 1.1樹的結構 樹是一種非線性的數據結構,它是由n(n>0)個有限結點組成一個具有層次關系的集合。把它叫做樹是因 為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。 有一個特殊的結…

ollama離線部署llama3(window系統)

首先介紹下ollama是什么?Ollama是一個開源的大型語言模型服務工具,旨在為用戶提供本地化的運行環境,滿足個性化的需求。具體來說,Ollama是一個功能強大的開源框架,可以簡化在Docker容器中部署和管理大型語言模型&a…

【C++】內聯函數、auto、范圍for

文章目錄 1.內聯函數2.auto關鍵字2.1auto簡介2.2auto的注意事項2.3auto不能推導的場景 3.基于范圍的for循環(C11)4.指針空值nullptr(C11) 1.內聯函數 概念: 以inline修飾的函數叫做內聯函數,編譯時C編譯器會在調用內聯函數的地方展開,沒有函…

商場綜合體能源監管平臺,實現能源高效管理

商場作為大型綜合體建筑,其能源消耗一直是備受關注的問題。為了有效管理商場能耗,提高商場能源效率,商場綜合體能源監管平臺應運而生。 商場綜合體能源監管平臺可通過軟硬件一起進行節能監管,硬件設備包括各種傳感器、監測儀表和…

Matter 1.3版標準新出爐,支持更多智能家居/家電/能源等設備

5月8日,CSA連接標準聯盟正式發布了Matter 1.3標準,過去CSA一直保持約每六個月一次的標準更新節奏。 圖源CSA連接標準聯盟官方 獲得一系列改進的Matter 1.3標準,將提升設備的互操作性,擴展支持的設備類別,并增強整個智…

Android 幾種系統升級方式詳解

目錄 ◆ 概述 ● 幾種啟動模式 ● MISC分區 ● CACHE分區 ● 幾種系統升級方式 ◆ Recovery升級 ● 升級包構成,簽名,制作 ● 升級腳本 ● 升級過程 ◆ OTA升級 ● 升級包構成,制作 ● 升級腳本 ● 升級過程 ◆ fastboot升級 ◆ ADB升級 幾…

【研發日記】Matlab/Simulink技能解鎖(七)——兩種復數移相算法

復數移相,也稱為復數相位旋轉,就是在原有復數的基礎上,不改變模數,只把相位角做一定的偏移。 文章目錄 前言 三角函數移相 復數乘法移相 分析和應用 總結 前言 見《【研發日記】Matlab/Simulink技能解鎖(二)——在Function編…

(三)Spring教程——依賴注入與控制反轉

Spring框架是為了簡化企業級應用開發而創建的,其強大之處在于對Java SE和Java EE開發進行全方位的簡化,Spring還對常用的功能進行封裝,可以極大地提高Java EE的開發效率。 依賴注入是Spring的核心技術之一,也被稱為“控制反轉”&a…

【Linux】自動化編譯工具——make/makefile(超細圖例詳解!!)

目錄 一、前言 二、make / Makefile背景介紹 🥝Makefile是干什么的? 🍇make又是什么? 三、demo實現【見見豬跑🐖】 四、依賴關系與依賴方法 1、概念理清 2、感性理解【父與子👨】 3、深層理解【程序…

【JavaEE】HTTP 協議

文章目錄 一、HTTP 協議1、HTTP 是什么2、理解 "應用層協議"3、理解 HTTP 協議的工作過程4、HTTP 協議格式5、HTTP 請求 (Request)5.1 認識 URL 6、 二、HTTPS1、HTTPS是什么2、"加密" 是什么3、HTTPS 的工作過程3.1 對稱加密3.2 非對稱加密3.3 證書3.4 完…

零樣本身份保持:ID-Animator引領個性化視頻生成技術新前沿

在最新的研究進展中,由Xuanhua He及其團隊提出的ID-Animator技術,為個性化視頻生成領域帶來了突破性的創新。這項技術的核心在于其零樣本(zero-shot)人物視頻生成方法,它允許研究者和開發者根據單一的參考面部圖像生成…

深度解刨性能測試工具Locust

🍅 視頻學習:文末有免費的配套視頻可觀看 🍅 關注公眾號【互聯網雜貨鋪】,回復 1 ,免費獲取軟件測試全套資料,資料在手,漲薪更快 Locust安裝 …

Python3 筆記:range() 函數

range() 函數返回數字序列,默認從 0 開始,默認以 1 遞增,并以指定的數字結束。 它的語法格式:range(start,end,step) start是起始值,end是終止值,step是間隔值 上述語句可以產生一個[start,…, end-1]列…

gin框架學習筆記(三) ——路由請求與相關參數

參數種類與參數處理 查詢參數 在講解查詢參數的定義之前,我們先來看一個例子,當我打開了CSDN,我現在想查看我的博客瀏覽量,那么我就需要點擊我的頭像來打開我的個人主頁,像下面這樣: 我們現在把瀏覽器的網址取下來,…

【35分鐘掌握金融風控策略27】貸中風控策略與客戶運營體系

目錄 貸中風控策略與客戶運營體系 貸中風控日標 貸中風控數據源 貸中風控策略與客戶運營體系 貸中是風控的第二道防線,貸中階段風控的重點工作就是存量客戶風控及運營。在當下,新客市場趨于飽和且獲客成本越來越高,所以,在做好…

基于Java的俄羅斯方塊游戲的設計與實現

關于俄羅斯方塊項目源碼.zip資源-CSDN文庫https://download.csdn.net/download/JW_559/89300281 基于Java的俄羅斯方塊游戲的設計與實現 摘 要 俄羅斯方塊是一款風靡全球,從一開始到現在都一直經久不衰的電腦、手機、掌上游戲機產品,是一款游戲規則簡單…