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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RedAlert简介

發布時間:2025/3/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RedAlert简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RA簡介

RedAlert(一下簡稱RA)是神馬搜索引擎團隊打造的一個基于指標的監控服務,它從類似ganglia或graphite這樣的數據源獲取指標,并在指標異常的時候通過郵件發送告警

RA服務由兩部分組成

  • RAServer: 執行指標檢測,發送告警的服務主體
  • RAWeb: 本服務提供的web管理端,用于管理配置,更新配置
  • 涉及到告警,必然伴隨到告警的策略,即什么條件下觸發告警,RA服務提供了五種常用的策略:

  • 閾值:當前值小于等于下限或大于等于上限時產生告警
  • 趨勢:當前值與預測值差異過大時產生告警,即出現突增或突降
  • 可用性:metric的機器數少于閾值時產生告警
  • 奇異點:metric的機器中,某一機器的值與整體均值差異較大時產生告警
  • 環比:當前值與歷史同期值(比如前一天當前時刻)差異過大時產生告警
  • 安裝

    下面我們以常見的ubuntu作為實驗環境,來看看如何從源碼安裝RA。

    編譯前的準備

    RA源碼使用scons編譯

    Sudo apt-get install scons

    RA運行時依賴一些第三方庫

    sudo apt-get install librrd-dev libssl-dev libldap-dev libidn11-dev libglib2.0-dev libsqlite3-dev libcppunit-dev

    某些依賴的模塊源碼在RAServer/deps目錄下,也需要預先編譯

    Cd RAServer/deps

    Sh ./compileDepdend.sh

    該腳本編譯出的文件會被安裝在RAServer/_external目錄下

    好了,萬事俱備只欠東風,下面我們來編譯RAServer

    Git clone git@github.com:alibaba/RedAlert.git

    Scons –j 8

    如果編譯成功,scons最后應該輸出scons: done building targets.

    如果想運行一下RA的單元測試,可以執行scons –j 8 test

    最后,我們為部署單獨準備了一個tar.gz的壓縮包,它里面包含了RA依賴的所有文件,可以通過scons –j 8 package得到,壓縮包在RAServer/build/release/packages/red_alert.tar.gz

    啟動

    啟動Web服務

    RAWeb位于上節clone下來的項目中RAWeb目錄下,啟動Web服務有三種方法:

  • 本地調試模式
  • apache
  • uwsgi
  • 下面我們以本地調試模式為例子,介紹一下啟動Web服務所涉及到的配置文件

    conf/red_alert_web.conf

    [DEFAULT]???

    projectRoot = /var/www/html/red_alert_web???

    workspace = /var/www/html/red_alert_web???

    ?

    [PathConfig]??

    RedAlertWebWorkRoot = %(workspace)s/work??

    RedAlertWebConfDir = %(RedAlertWebWorkRoot)s/current??

    RedAlertWebTablePath = %(RedAlertWebConfDir)s/sqlite??

    RedAlertWebAuxPath = %(RedAlertWebWorkRoot)s/raweb.aux.db??

    RedAlertWebJsonPath = %(RedAlertWebWorkRoot)s/raweb.json??

    RedAlertWebVersionDir = %(RedAlertWebWorkRoot)s/tmp??

    ?

    [Parameter]??

    runPort = 5011

    MaxRaBackEnd = 3??

    RedAlertStoragePath = file://var/www/html/foo??

    ?

    [fsLib]??

    fsUtil = %(projectRoot)s/fs_lib/bin/fs_util

    ?

    projectRoot即RAWeb代碼所在的目錄, workspace是指RAWeb服務運行的目錄,注意如果使用apache啟動RAWeb的話,需要保證apache用戶對workspace目錄有讀寫權限.

    RedAlertWebWorkRoot是RAWeb的工作目錄

    RedAlertWebConfDir是RAWeb保存sqlite的目錄

    RedAlertWebTablePath是sqlite的絕對路徑,它包含了如下幾張表,將會在RAServer中使用到:

  • Policy
  • RedAlert
  • DataSource
  • Pairs
  • Shield
  • RedAlertWebAuxPath是數據庫文件的絕對路徑

    RedAlertWebJsonPath是raweb.json配置文件的絕對路徑,該文件是RAWeb內部使用的配置,用于校驗用戶輸入

    RedAlertWebVersionDir用于記錄每次告警策略的發布

    runPort僅在本地調試時有用,是RAWeb的服務端口

    MaxRaBackEnd表示該web服務支持多少個RAServer

    RedAlertStoragePath是RAWeb發布告警策略的存儲路徑,目前僅支持本地磁盤,用戶也可以擴展其他的分布式文件系統,比如hdfs

    ?

    static/ra_conf.js

    var ra_conf = {????

    ??? "api_url": "http://localhost:5011",??

    ??? "current_url": "http://0.0.0.0:5011/index.html",??

    ??? "buc_sso_url": "",??

    ??? "api_timeout": 3000,??

    ??? "admin_timeout": 10000,??

    ??? "disable_account": true

    };

    這里僅需修改api_url為你實際的web部署ip和端口

    啟動Web服務

    運行python raweb/main.py成功后,就可以從瀏覽器訪問http://127.0.0.1:5011/index.html來訪問RAweb

    啟動RA服務

    上節最后我們得到了一個RA服務的tar.gz壓縮包,現在我們準備部署RA服務,比如我們打算將RA安裝在/home/admin/ra/目錄下:

    mkdir /home/admin/ra/

    tar xzf RAServer/build/release/packages/red_alert.tar.gz –C /home/admin/ra

    解壓后,安裝目錄結構大概如下圖所示:

    ?

    usr/local/bin目錄下有一個red_alert.sh的腳本,我們就用它來啟動RA服務,不過在啟動之前,我們先要準備一下RA服務的配置,完整的配置如下

    {

    "aliMonitorUrl":"", // 內部使用,開源版本無需關心

    "alarmThreadNum": 1, //發送告警的線程數

    "checkerThreadNum":2, // 檢查指標的線程數

    "fetcherThreadNum":2, // 從數據源拉取指標的線程數

    "alarmQueueSize": 1024, // 告警線程的隊列大小

    "checkerQueueSize": 1024, // 檢查線程的隊列大小

    "fetcherQueueSize": 1024, // 拉取源數據線程的隊列大小

    "retrieveMetricsPointCount": 5, // 每次拉取幾個點的源數據

    "maxRandomLastRetriveTimeValueSec": 60, //每次拉取數據的最大(隨機)間隔,單位秒

    "reloadTreeIntervalSec": 60, // 隔多少秒從數據源獲取一次指標結構

    "mailUser": "", // 發送告警的郵件用戶

    "mailPassword": "", // 發送告警的郵件密碼

    "mailServerUrl": "", // 發送告警的郵件服務器,比如smtps://smtp.example.com

    "heartbeatHost": "", // RA web的服務器地址

    "heartbeatPort": "" // RA web端口

    }

    ?

    一般情況下,我們只需要修改mailUser, mailPassword, mailServerUrl, heartbeatHost, heartbeatPort即可。準備好配置文件后,用上文介紹的腳本red_alert.sh啟動服務:

    red_alert.sh –p 8000 –c ra.json

    ?

    使用RAWeb配置告警

    訪問Web服務后,按下圖點擊新增策略按鈕

    按下圖配置一個閾值告警(cpu_user超過40,或者低于5發送告警給foo@bar.com)

    保存完畢后,進入控制臺頁面,這里我們可以看到后端RAServer運行的情況.點擊發布配置可以將剛才保存的策略發布到RAServer上去. 如果發生誤操作,還可以點擊撤銷修改或者回滾配置

    當某臺cpu_user出問題的時候,就可以收到告警郵件啦!

    策略配置詳解

    • 策略組:策略所屬的組,方便對多個策略分組統一操作,比如對策略組整體或者部分進行屏蔽
    • 觸發類型:觸發告警的方式,目前支持:閾值,趨勢、周期、可用性、奇異點五中類型
    • 采集間隔:數據拉取的間隔(單位秒),間隔越小告警越及時,同時也越容易受偶發波動影響導致誤報
    • 指標名:要監控的指標名稱,必須和數據源上的指標名字匹配
    • 檢查類型:目前支持“單個”,“組合”,“機器組合”三種,其中“機器組合”是此版本新增類型。
      • 單個”:對該策略配匹配到的所有metric的每個host值,單獨檢查,只要有一臺host有異常,即觸發告警
      • 組合”:對該策略配匹配到的所有metric的所有host值的總和值,進行檢查,若總和值有異常,即觸發告警
      • 機器組合”對該策略配匹配到的每個metric下的所有host進行求和,對每個metric的求和值進行檢查,若某metric的總和值有異常,即觸發告警
    • 告警方式:開源版本僅支持curlmail的告警方式
    • 告警接收組:告警方式是curlmail,這里填接收者的郵箱地址
    • 生效時間:該配置項是此版本新增配置,表示該策略的生效時間,默認為當前時間,即立即生效。
    • 最短告警間隔:該策略兩次告警之間的最短間隔,這個值必須大于采集間隔,否則無意義
    • 有效時間段:在當天有效時間段,在有效時間之外將不產生告警,不配置表示有效期為全天。比如上圖配置,該配置僅在每天的上午九點到晚上七點生效
    • 過濾項:該配置項是此版本新增配置,表示該策略配匹配到的所有metric的所有host中要過濾掉的host或者 metric,分別填寫要過濾的metric和host即可,兩者都支持通配符,后者還支持逗號分割。對于過濾掉的host不會進行檢查,也不參與組合值 的計算。此配置支持通配符

    ?

    閾值(Threshold)

    閾值告警一般需要配置如下字段

  • upBound, 上限
  • downBound,下限
  • 當前值小于等于下限或大于等于上限時告警

    ?

    趨勢(Trend)

    趨勢告警一般需要配置如下字段

  • maxDiffRatio,當前值和預測值差異比例閾值??梢灾庇^理解為指標突增/突降maxDiffRatio時告警。如果期望差異比例在20%以下,則配置為2
  • minDiffValue, 當前值和預測值差異絕對值閾值。僅當差異比例大于等于maxDiffRatio,且差異絕對值大于等于minDiffValue時才會產生告警
  • ?

    引入minDiffValue的目的是防止上報值很小時,細微的波動都會導致差異比例超過閾值而產生告警,因此這里需要一個絕對值來約束。比如一臺空閑機器的cpu平時在1~5之間波動,細微的波動都會導致100%以上的差異比例

    ?

    可用性(Availability):

    可用性告警一般需要配置如下字段

  • minHostNum, 上報metric的最小機器數
  • 當上報metric的機器數小于minHostNum時告警;

    ?

    奇異點(singularity)

    奇異點告警一般需要配置如下字段

  • maxDiffRatio,當前值和平均值差異比例閾值??梢灾庇^理解為某臺機器的當前值和均值差異比例超過maxDiffRatio時告警。如果期望所有機器當前值和均值差異在10%以下,則配置為1
  • minDiffValue,當前值和平均值差異絕對值閾值。僅當差異比例大于等于maxDiffRatio,且差異絕對值大于等于minDiffValue時才會產生告警
  • 上文中的平均值是同一metric下所有機器的當前值求和除機器數所得

    ?

    環比(Cycle):

  • maxDiffRatio,當前值和歷史值差異比例閾值??梢灾庇^理解為當前值和歷史同期值比例超過maxDiffRatio時告警。如果期望每周期的變化差異在05%以下,則配置為0.05
  • minDiffValue,當前值和平均值差異絕對值閾值。僅當差異比例大于等于maxDiffRatio,且差異絕對值大于等于minDiffValue時才會產生告警
  • 總結

    以上是生活随笔為你收集整理的RedAlert简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。