摘要:為了發布以上列出的示例數據點,運行以下命令日志文件將包含關于新的被接收到的度量值的信息,信息被存儲在與交互來存儲時間序列數據到文件系統。
標簽(空格分隔): Graphite Carbon Whisper 監控
注:該系列文章絕對是學習 Graphite 的好文章,是我見過的將的最全面,最清晰,最簡單明了的系列文章。我會把該系列的所有文章全部翻譯完成,但是還是推薦各位讀讀原文。
在 Graphite 系列博客中,我將提供一個指南,以幫助使用 Graphite 技術棧完成搭建一個監控和報警系統的所有步驟。聲明:我不是一個專家,我僅僅是通過提供更詳細的文檔幫助 Graphite 社區發展。如果出現一些錯誤,請在文章下面評論或者是給我發送一封郵件到 feangulo@yaipan.com。
Graphite 是由多個后端和前端組件組合而成。后端組件被用于存儲數值的時間序列數據。前端組件被用于檢索度量數據和可選的圖像渲染。在這篇博客文章中,我將重點介紹后端組件:Carbon 和 Whisper。
安裝 Carbon度量指標可以被發布到一個負載均衡器或者是直接到一個 Carbon 進程。Carbon 進程與 Whisper 數據庫包交互來存儲時間序列數據到文件系統。
Carbon 是一個 daemon,其使用一個名為 Twisted 的事件驅動網絡引擎來監聽時間序列數據。Twisted 框架支持 Carbon 進程以較低的開銷處理大量的客戶端和處理大量的流量。
Carbon Github 項目:點擊這里
為了安裝 Carbon,運行以下命令(假設是 RHEL 操作系統):
# sudo yum groupinstall "Development Tools" # sudo yum install python-devel # sudo yum install git # sudo easy_install pip # sudo pip install twisted # cd /tmp # git clone https://github.com/graphite-project/carbon.git # cd /tmp/carbon # sudo python setup.py install
/opt/graphite 現在應該有 carbon 的 lib 包和配置文件:
# ls -l /opt/graphite total 16 drwxr-xr-x. 2 root root 4096 May 18 23:56 bin drwxr-xr-x. 2 root root 4096 May 18 23:56 conf drwxr-xr-x. 4 root root 4096 May 18 23:56 lib drwxr-xr-x. 6 root root 4096 May 18 23:56 storage安裝 Whisper
Whisper 是一個用于存儲時間序列數據的數據庫包,它被應用通過使用 create, update, 和 fetch 操作來檢索以及操作。
Whisper Github 項目:點擊這里
為了安裝 Whisper,運行以下命令:
# cd /tmp # git clone https://github.com/graphite-project/whisper.git # cd /tmp/whisper # sudo python setup.py install
Whisper 腳本現在應該在應有的位置上:
# ls -l /usr/bin/whisper* -rwxr-xr-x. 1 root root 1711 May 19 00:00 /usr/bin/whisper-create.py -rwxr-xr-x. 1 root root 2902 May 19 00:00 /usr/bin/whisper-dump.py -rwxr-xr-x. 1 root root 1779 May 19 00:00 /usr/bin/whisper-fetch.py -rwxr-xr-x. 1 root root 1121 May 19 00:00 /usr/bin/whisper-info.py -rwxr-xr-x. 1 root root 674 May 19 00:00 /usr/bin/whisper-merge.py -rwxr-xr-x. 1 root root 5982 May 19 00:00 /usr/bin/whisper-resize.py -rwxr-xr-x. 1 root root 1060 May 19 00:00 /usr/bin/whisper-set-aggregation-method.py -rwxr-xr-x. 1 root root 969 May 19 00:00 /usr/bin/whisper-update.py啟動一個 Carbon 進程
Carbon 安裝自帶了默認的端口和很多其他的配置文件。拷貝已經存在的示例文件。
# cd /opt/graphite/conf # cp aggregation-rules.conf.example aggregation-rules.conf # cp blacklist.conf.example blacklist.conf # cp carbon.conf.example carbon.conf # cp carbon.amqp.conf.example carbon.amqp.conf # cp relay-rules.conf.example relay-rules.conf # cp rewrite-rules.conf.example rewrite-rules.conf # cp storage-schemas.conf.example storage-schemas.conf # cp storage-aggregation.conf.example storage-aggregation.conf # cp whitelist.conf.example whitelist.conf # vi carbon.conf
在 cache 段下面,line receiver port 已經被指定:
[cache] LINE_RECEIVER_INTERFACE = 0.0.0.0 LINE_RECEIVER_PORT = 2003
通過運行以下命令啟動一個 carbon-cache 進程:
# cd /opt/graphite/bin # ./carbon-cache.py start Starting carbon-cache (instance a)
該進程現在應該監聽在 2003 端口上:
# ps -efla | grep carbon-cache 1 S root 2674 1 0 80 0 - 75916 ep_pol 00:18 ? 00:00:03 /usr/bin/python ./carbon-cache.py start # netstat -nap | grep 2003 tcp 0 0 0.0.0.0:2003 0.0.0.0:* LISTEN 2674/python發布度量指標
一個度量值是任何可以隨時間變化的可測量的值:
每秒的請求數
進程請求時間
CPU 利用率
一個數據點是一個元組包含:
一個度量值的名字
一個可度量的值
在一個指定時間點(通常是一個 timestamp)
客戶端應用通過發送數據點到一個 Carbon 進程來發布度量值。這個應用在 Carbon 進程的端口上建立一個 TCP 連接并以一個簡單的純文本格式發送數據點。在我們的例子中,端口是 2003。TCP 連接或許依舊是打開并根據需要重復多次使用。Carbon 進程監聽進入的數據但是不給客戶端發送任何響應。
數據點格式被定義成:
每個數據點是一個單行文本
在位置 0 是一個帶點的度量名稱
在位置 1 是一個值
在位置 2 是一個 Unix Epoch 的 timestamp
以空格作為位置的分隔符
比如,這里有一些有效的數據點:
carbon.agents.graphite-tutorial.metricsReceived 28198 1400509108
carbon.agents.graphite-tutorial.creates 8 1400509110
PRODUCTION.host.graphite-tutorial.responseTime.p95 0.10 1400509112
客戶端應用有多個方式來發布度量值:
使用一個純文本協議工具比如 netcat (nc) 命令
使用 pickle 協議
使用高級消息隊列協議(AMQP)
使用 lib 包比如 Coda Hale metrics library
為了簡單起見,在這個教程中我將通過 netcat 命令使用純文本協議。為了發布以上列出的示例數據點,運行以下命令:
sudo yum install nc echo "carbon.agents.graphite-tutorial.metricsReceived 28198 `date +%s`" | nc localhost 2003 echo "carbon.agents.graphite-tutorial.creates 8 `date +%s`" | nc localhost 2003 echo "PRODUCTION.host.graphite-tutorial.responseTime.p95 0.10 `date +%s`" | nc localhost 2003
carbon-cache 日志文件將包含關于新的被接收到的度量值的信息,信息被存儲在:
# tail -f /opt/graphite/storage/log/carbon-cache/carbon-cache-a/creates.log 19/05/2014 10:42:44 :: creating database file /opt/graphite/storage/whisper/carbon/agents/graphite-tutorial/metricsReceived.wsp (archive=[(60, 129600)] xff=0.5 agg=average) 19/05/2014 10:42:53 :: creating database file /opt/graphite/storage/whisper/carbon/agents/graphite-tutorial/creates.wsp (archive=[(60, 129600)] xff=0.5 agg=average) 19/05/2014 10:42:57 :: creating database file /opt/graphite/storage/whisper/PRODUCTION/host/graphite-tutorial/responseTime/p95.wsp (archive=[(60, 1440)] xff=0.5 agg=average)
Carbon 與 Whisper 交互來存儲時間序列數據到文件系統。操作文件系統來確保數據文件已經被創建:
# ls -l /opt/graphite/storage/whisper/carbon/agents/graphite-tutorial/ total 3040 -rw-r--r--. 1 root root 1555228 May 19 10:42 creates.wsp -rw-r--r--. 1 root root 1555228 May 19 10:42 metricsReceived.wsp # ls -l /opt/graphite/storage/whisper/PRODUCTION/host/graphite-tutorial/responseTime/ total 20 -rw-r--r--. 1 root root 17308 May 19 10:42 p95.wsp
最后,你可以檢索關于 Whisper 文件的元數據信息,使用 whisper-info 腳本:
# whisper-info.py /opt/graphite/storage/whisper/PRODUCTION/host/graphite-tutorial/responseTime/p95.wsp maxRetention: 86400 xFilesFactor: 0.5 aggregationMethod: average fileSize: 17308 Archive 0 retention: 86400 secondsPerPoint: 60 points: 1440 size: 17280 offset: 28
whisper-dump 腳本是一個更完整的腳本,其可以輸出所有存儲保留時期的原始數據以及關于 Whisper 文件的元數據信息:
# whisper-dump.py /opt/graphite/storage/whisper/PRODUCTION/host/graphite-tutorial/responseTime/p95.wsp Meta data: aggregation method: average max retention: 86400 xFilesFactor: 0.5 Archive 0 info: offset: 28 seconds per point: 60 points: 1440 retention: 86400 size: 17280 Archive 0 data: 0: 1400609220, 0.1000000000000000055511151231257827 1: 0, 0 2: 0, 0 3: 0, 0 4: 0, 0 5: 0, 0 ... 1437: 0, 0 1438: 0, 0 1439: 0, 0
弄明白 Aggregation 方法,最大的保留期, xFilesFactor 和 Whisper 文件的所有其他屬性是非常重要的。不要擔心,就算你在這點上沒有學習到,我將會在接下來的博客文章會更詳細地講訴這些。
Graphite 系列 :
Provision Hardware
Carbon & Whisper
Whisper Storage Schemas & Aggregations
Graphite Webapp
Stress Testing Carbon Caches
Carbon Aggregators
本文的作者是 franklinangulo,本文的原文是 GRAPHITE SERIES #2: CARBON & WHISPER
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37505.html
摘要:在上安裝標簽空格分隔監控首先說一句,在上安裝真的很坑爹。。。或如果上面這個方法無法安裝那就用源碼安裝的方法。安裝開始好幾次就死在安裝這個上面,版本的通過命令安裝的不行,對應版本的包的名字叫做。 在 CentOS 5.8 上安裝 Graphite 標簽(空格分隔): 監控 monitor CentOS 5.8 Graphite 首先說一句,在 CentOS 5.8 上安裝真的很坑爹...
摘要:眾所周知,負責收集并聚合測量值。每個都有一個,該值的解釋方式依賴于。計時器的一大好處在于,你可以得到平均值總值計數值和上下限值。給傳一個數字,它會不經處理地將該數字傳到后端。由三部分組成監聽時間序列的數據的后臺程序。 眾所周知,StatsD 負責收集并聚合測量值。之后,它會將數據傳給 Graphite,后者以時間序列為依據存儲數據,并繪制圖表。但是,我們不知道,基于 http 訪問的圖...
摘要:由于公司沒有運維又需要監控服務器的一些數據信息想盡快的啟動一個數值監控系統技術評估了下打算的方式來建設是一個時間數列數據庫并且自帶一些簡單圖形展示功能雖然展示方面不是很完美但是在收集時間數據上非常的方便和簡單根據官網的例子只需要一個連接就能 由于公司沒有運維, 又需要監控服務器的一些數據信息, 想盡快的啟動一個數值監控系統. 技術評估了下打算 graphite + grafana 的...
摘要:的展示非常炫酷,絕對是運維提升逼格的一大利器。另外的可視化功能比強得多,而且以上版本將集成報警功能。它由寫成,著力于高性能地查詢與存儲時序型數據。被廣泛應用于存儲系統的監控數據,行業的實時數據等場景。 原有監控系統 showImg(https://segmentfault.com/img/remote/1460000011082384); 整個系統以 Graphite (carbon ...
摘要:正式上線已經大約兩年,基本已經成熟,為宜信大數據創新中心各個團隊提供了統一的測試和生產環境,簡化了服務的部署與上線流程,也降低了運維人員對系統管理的復雜度。地址白皮書原文發布于高可用架構作者宜信大數據創新中心團隊王超一 一、基于Docker的PaaS平臺LAIN 在金融的場景下,LAIN 是為解放各個團隊和業務線的生產力而設計的一個云平臺。LAIN 正式上線已經大約兩年,基本已經成熟,...
閱讀 2837·2023-04-25 20:02
閱讀 1435·2021-11-11 16:55
閱讀 614·2021-09-26 09:46
閱讀 6204·2021-09-22 15:55
閱讀 1823·2021-08-09 13:41
閱讀 1572·2019-08-30 15:52
閱讀 2372·2019-08-30 14:13
閱讀 3289·2019-08-26 13:48