prometheus監控系統

来源:http://www.cnblogs.com/xiezhengcai/archive/2016/12/22/prometheus.html
-Advertisement-
Play Games

關於Prometheus Prometheus是一套開源的監控系統,它將所有信息都存儲為時間序列數據;因此實現一種Profiling監控方式,實時分析系統運行的狀態、執行時間、調用次數等,以找到系統的熱點,為性能優化提供依據。 監控方式 程式代碼收集運行數據寫入到redis,通過API介面開放給Pr ...


關於Prometheus

Prometheus是一套開源的監控系統,它將所有信息都存儲為時間序列數據;因此實現一種Profiling監控方式,實時分析系統運行的狀態、執行時間、調用次數等,以找到系統的熱點,為性能優化提供依據。 監控方式 程式代碼收集運行數據寫入到redis,通過API介面開放給Prometheus,Prometheus定時去抓取介面上的數據,形成時間繫數據存入到本地。同時通過promql與開放介面可視化數據到前端。   一、採集運行數據寫入到redis 在採集數據之前,先要明白Prometheus所支持的幾種數據類型   Counter,統計類數據 Counter作為一種計數類數據類型,常用於介面調用次數、請求總數、當前線上人數等等   Gauge,記錄對象或許事物的瞬時值 Gauge是最簡單的度量類型,只有一個簡單的返回值,他用來記錄一些對象或者事物的瞬時值,如CPU使用率、記憶體使用情況、磁碟空間等。   Histograms,直方圖 Histrogram是用來度量數據中值的分佈情況,如程式執行時間:0-100ms、100-200ms、200-300ms、>300ms 的分佈情況   在使用Prometheus監控之前,先要明白都需要監控哪些項,以及每一中項都應該採用什麼數據類型來表示   明白以上類型之後,就可以開始將監控數據項寫入到redis。寫入的工具可採用開源的prometheus_client_php;github:https://github.com/Jimdo/prometheus_client_php  下載後需要用composer部署其依賴,如果你不知道composer的使用:http://www.phpcomposer.com  以下代碼記錄一個counter數據  
require __DIR__ . '/../vendor/autoload.php';
use Prometheus\CollectorRegistry;
use Prometheus\Storage\Redis;

Redis::setDefaultOptions(array('host' => 'master.redis.reg'));
$adapter = new Prometheus\Storage\Redis();
$registry = new CollectorRegistry($adapter);

$counter = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);
$counter->incBy(1, ['blue']);  //將統計結果增加1

 

  採集的過程比較簡單,Gauge與Histograms與此類似   二、提供Prometheus訪問的API Gateway   prometheus_client_php工具已經準好了prometheus訪問的相關介面,我們至需要幾行簡單的代碼  
require __DIR__ . '/../vendor/autoload.php';

use Prometheus\CollectorRegistry;
use Prometheus\RenderTextFormat;
use Prometheus\Storage\Redis;

Redis::setDefaultOptions(array('host' => 'master.redis.reg')); //對應寫入的redis
$adapter = new Prometheus\Storage\Redis();
$registry = new CollectorRegistry($adapter);
$renderer = new RenderTextFormat();
$result = $renderer->render($registry->getMetricFamilySamples());

header('Content-type: ' . RenderTextFormat::MIME_TYPE);
echo $result; //輸出結果給prometheus服務

 

  將以上腳本部署,能通過HTTP訪問到,下一步即可提供給prometheus服務   三、安裝與配置Prometheus 安裝(略過) 配置Prometheus 打開prometheus.yml文件,在scrape_configs配置第二步中的API Gateway
 - job_name: 'prometheus2'
    metrics_path: '/metrics.php'
    static_configs:  
      - targets: ['localhost:9999']
  配置完成後,啟動Prometheus   四、查看監控數據 Prometheus具有多種模式的可視化數據,可集成Grafana可視化工具。其內置PromDash界面,啟動後打開http://localhost:9090(預設9090埠)即可訪問內置的PromDash監控界面。 上圖是Prometheus的直方圖展現形式,頂部的下拉框是你所監控的數據項,點擊Execute點擊後查看所監控的數據。輸入框部分是是查詢的表達式,Prometheus支持豐富的查詢表達式,詳情參閱:https://prometheus.io/docs/querying/basics/ 。 圖中的每一條線表示大於該桶的數據,紅色的數據線是所有桶的總數累計。另外Prometheus還提供了sum與cont的統計。Gauge與Counter數據類型也與此類似。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Swift相關知識,有時間就敲點,供自己學習總結,亦或也有幸能幫到他人,有理解、使用錯誤的地方也望能得到指正。 ///******************************************************************************************* ...
  • python內置函數open()用於打開文件和創建文件對象 語法 name:文件名 mode:指定文件的打開模式 r:只讀 w:寫入 a:附加 r+,w+,a+同時支持輸入輸出操作 rb,wb+以二進位方式打開 bufsize:定義輸出緩存 0表示無輸出緩存 1表示使用緩衝 負數表示使用系統預設設置 ...
  • 在win10環境下,安裝VS2013,Cuda,Anaconda3,並安裝Theano配置GPU詳細教程 ...
  • 本人看的深入理解jvm(該版本的java se7) java運行時數據區域 Java虛擬機在執行java程式時,把記憶體劃分為幾個不同的階段,存在不同的存在時間。不同的用途 先上圖 程式計數器:是jvm中一小塊記憶體空間,可以當做當前線程的位元組碼文件的行號,位元組碼解釋器通過改變這個值來獲取下一個指令。J ...
  • 這是俺滴師傅給俺傳授了的知識,特在此分享。 TP框架,做PHP開發的都應該有所耳聞。下麵,我們就來說說入口文件的生成: 創建新項目時,首先,在目錄文件下創建一個新的文件夾。然後將Thinkphp框架文件包拷進去。 (框架包) 框架包裡面的文件主要用到的是上面三個圈起來的,只用拷這幾個就行。 (這時, ...
  • StringBuffer 線程安全的可變字元序列。 StringBuffer源碼分析(JDK1.6): public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, Cha ...
  • ·核心作用: -保證一個類只有一個實例,並且提供一個訪問該實例的全局訪問點。 ·常見應用場景: -Windows的Task Manager(任務管理器)就是很典型的單例模式 -Windows的Recycle Bin(回收站)也是很典型的單例應用。在整個系統運行過程中,回收站一直維護著僅有的一個實例 ...
  • 創建型模式:-單例模式、工廠模式、抽象工廠模式、建造者模式、原型模式結構型模式:-適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式行為型模式:-模板方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態模式、策略模式、職責鏈模式、訪問者模式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...