在使用Grafana或Datadog之前,請了解兩個監控工具在支持的數據源,可視化等功能方面的比較。
IT監控系統有兩種類型:接近原始數據源併為特定目的而構建的系統,以及位於這些監控系統之上的Grafana和Datadog等系統。
Grafana和Datadog在本質是聚合器,可以從其他數據收集工具(例如Splunk,Elasticsearch,Graphite Web和Amazon CloudWatch)中收集數據。兩種IT監控工具都使用或包括:
- 開放的API;
- 自定義查詢語言;
- 創建變量和腳本的能力;
- 分析;
- 深入研究錯誤並跟蹤用戶交互的能力;
- 社區貢獻,包括圖表。
這些功能使數據分析人員可以查看,導致錯誤的關聯事件的詳細信息,而不僅僅是簡單的錯誤消息。
要確定哪種工具更適合組織的IT監控需求,下面在安裝過程和需求,支持的數據源以及儀表板和警報功能方面比較Grafana與Datadog。
Grafana安裝和數據源
Grafana的安裝過程相對簡單。輸入以下Linux命令:
<code>sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_6.5.3_amd64.deb
sudo dpkg -i grafana_6.5.3_amd64.deb
sudo service grafana-server start/<code>
數據源是IT監控系統無需用戶編寫代碼即可連接到的應用。
一些數據源僅需要登錄憑據,而其他一些數據源則需要在數據源本身上進行配置以啟用與第三方工具的連接。Grafana支持眾多的數據源,其中包括Amazon CloudWatch,Azure Monitor,Dynatrace和Elasticsearch。
Grafana將插件分為需要常規許可證的插件和需要企業許可證的插件。用戶可以將這些插件分為可附加到其他監視系統的插件和可附加到原始數據源的插件。
將Grafana連接到其他監視系統要比連接到原始數據源容易得多,在Grafana和Datadog中,原始數據源都需要大量的配置工作。
這是一些Grafana數據源以及連接到它們所需的工作。
亞馬遜CloudWatch
CloudWatch需要手動啟動,並且一旦啟動,僅提供少量指標。要使用CloudWatch(甚至沒有Grafana),用戶必須首先在Amazon內部對其進行配置。
要將Grafana連接到CloudWatch,請使用Amazon安全性的身份和訪問管理(IAM)功能來授予Grafana訪問權限,就像對待其他用戶一樣。由於配置它需要付出額外的努力,因此一些Amazon用戶選擇退出IAM,這會給Grafana安裝帶來麻煩。
Grafana將CloudWatch打包到核心產品中,意味著不必從外部插件頁面下載它。對於其他一些Grafana數據源也是如此,例如Elasticsearch,Google Stackdrive,MySQL和Prometheus。
Elasticsearch
如前所述,Elasticsearch是另一個本機數據源。雖然Elasticsearch JSON數據庫可以包含業務數據,但它最廣泛地用作監視產品。它實際上是三部分的一部:Elasticsearch,Logstash和Kibana,它們一起形成了Elastic Stack(以前是ELK堆棧)。用戶經常將Kibana用作ElasticSearch的前端,但可以將其替換為Grafana。
與Kibana相比,Grafana提供了一種更好的查詢ElasticSearch的方式。Kibana查詢語言非常有限,而Grafana腳本和查詢工具允許變量,因此允許使用成熟的語言-但也許不如Datadog的語言全面。
下面的圖1是用戶配置Elasticsearch連接器的屏幕。將訪問類型更改為瀏覽器,以簡化配置。
圖1
Prometheus
Grafana提供資源和資金來幫助維護開源Prometheus和Graphite。對Prometheus的支持已預先內置在Grafana中。
與其他連接器一樣,使用Grafana查詢語言提取所需的度量,如圖2的示例所示。該語言包含函數,並且“添加查詢”按鈕使用戶能夠構建複雜的查詢。
圖2
這是來自Grafana網站的Prometheus儀表板示例:
圖3
Graphite
Graphite是一種流行的開源監視工具,它只做一件事,但做得很好:繪製時間序列數據。它的獨特之處在於它使用了一個簡單的數據庫Carbon,它比功能完善的數據庫產品更接近聰明的文本文件。
要在Grafana上嘗試Graphite,請使用Docker在任意端口(例如端口4444)上安裝Graphite Web:
<code>sudo docker run -d \\
--name graphite2 \\
--restart=always \\
-p 4444:4444 \\
-p 2003-2004:2003-2004 \\
-p 2023-2024:2023-2024 \\
-p 8125:8125/udp \\
-p 8126:8126 \\
graphiteapp/graphite-statsd/<code>
然後在Grafana中對其進行配置。在此示例中,我已在本地計算機上安裝了Graphite,因此我將localhost用於主機:
圖4
然後,該工具應響應數據源正在工作。
容器
Grafana支持Docker容器安裝。通常,與Docker一樣,安裝非常簡單:
docker run -d -p 3000:3000 grafana/grafana
沒有Grafana的Docker插件,而Datadog確實有一個。但是,這兩種監視工具都支持容器,儘管有一些細微的差異。
監控系統實際上並不監控容器;相反,常規的OS指標描述了Docker使用的資源。關於容器,組織所監視的是在容器中運行的應用程序。
Grafana方法是在Docker內部安裝Grafana插件。然後,用戶可以監視容器設計運行的任何軟件-例如數據庫。
要將Grafana代理安裝在容器內,請使用Grafana命令行工具:
grafana-cli plugins install ${plugin}
要使用已經內置的Grafana插件構建Docker映像,請從Grafana的GitHub存儲庫下載Docker工具。
Grafana儀表板功能
儀表板是一組顯示在單個屏幕上的圖表,通常圍繞諸如網絡或關鍵任務功能等常見主題進行分組。當數據分析師在感興趣的項目之間移動時,它們會在儀表板之間切換。
儀表板還可以以基礎架構為中心,在其中列出主機,容器或微服務。Grafana包括預建的儀表板以及Grafana用戶社區捐贈的其他儀表板。下載並以JSON格式導入這些儀表板-然後上傳它們以將其添加到安裝中。
在Grafana中構建儀表板不是很直觀。單擊添加面板,然後進行編輯,然後選擇放置數據源。下面的圖5顯示了結果屏幕:
圖5
Grafana有幾種類型的圖表,例如:
- 圖表,XY線或散點圖;
- 單一統計信息,顯示當前時間點的單個指標的值;
- 熱圖,在二維圖中顯示準3D信息;
- 警報列表;和
- 原始日誌。
警報功能說明了Grafana的查詢語言在哪裡有用,因為它使用戶可以使用公式來編寫表達式。
圖 6
下圖7中的Grafana儀表板包括交互式功能,圖表創建者將其稱為註釋。這些提供十字準線和彈出圖例,以向圖表添加更多信息,而交互性較小的圖表則無法做到。
圖 7
最終,Grafana的瀏覽功能提供了數據遍歷,或一種單擊指標的方式,該指標可將信息建立到一組可重複使用的日常查詢中。
Grafana版本和價格
Grafana有三種版本:免費和開源;Grafana Cloud是標準帳戶或專業帳戶中的託管和託管版本;和Grafana Enterprise,其中包括其他功能,可以在內部託管或安裝。
在發佈之時,標準帳戶的單用戶Grafana Cloud許可證每月收費49美元,而專業帳戶的價格則通過報價來確定。企業版適用於需要額外插件和功能的公司,並根據活躍用戶定價。
Datadog安裝
用戶必須在Datadog雲中註冊-即使他們計劃在本地運行Datadog-也要安裝Datadog服務器和代理,因為這些組件在配置文件中安裝了用於驗證許可證和憑據的appkey。
與Grafana一樣,安裝非常簡單。輸入命令:
<code>DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=xxxxxxxxxxxx DD_SITE="datadoghq.eu" bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"
sudo system start datadog-agent/<code>
用戶可以在datadog.yaml配置文件中配置本地服務器的特徵,並且該文件是列出要監視的主機上所有軟件的入口,這是安裝程序的一半。另一半是將Datadog指令放入目標軟件本身:
<code>/opt/datadog-agent/bin/agent/agent run -p /opt/datadog-agent/run/agent.pid
sudo vim /etc/datadog-agent/datadog.yaml/<code>
要登錄,請注意Datadog會按區域存儲數據。確保選擇正確的登錄域-例如,歐盟的組織無法訪問美國服務器。
Datadog數據源
Datadog提供了350多個連接器或集成,分為26個類別,包括緩存,容器,網絡,監視和安全性。
容器
要監視容器指標,請在容器內部的主機上安裝Datadog代理。
主機基礎配置類似於Datadog的YAML配置文件:
<code>sudo vim /etc/datadog-agent/datadog.yaml
logs_enabled: true
listeners:
- name: docker
config_providers:
- name: docker
polling: true/<code>
在圖8中,下面是Docker儀表板的視圖。在頂部,它列出了正在運行和已停止的容器。在底部,它按CPU和RAM內存使用量對它們進行排序。右側的儀表板顯示了每個容器正在運行的內容,例如DNS服務器和Fluentd(它是日誌收集器)。
圖8
Prometheus
與許多連接器一樣,使用Prometheus連接器的想法是用戶已經安裝了Prometheus來解析日誌和收集指標。組織與其放棄將數據直接發送到Datadog的方式,不與他們當前的Prometheus基礎架構進行集成。
Prometheus解析日誌,然後將用戶定義的標籤添加到指標以將其放入某些邏輯分組。Datadog使用Prometheus進行數據解析的方法是使用OpenMetrics語法和工具。例如,由於Prometheus收集時間序列數據,因此用戶可以拔出要傳遞給Datadog的Prometheus數據,然後標記其類型。
配置基於 YAML:
init_config:
instances:
- prometheus_url: 'localhost:<prometheus>/<prometheus>'
namespace: '<metrics>'
metrics:
- "<prometheus>":
"<datadog>"/<datadog>/<prometheus>/<metrics>/<prometheus>/<prometheus>
庫
Datadog調用其API和軟件開發套件(SDK)庫。它們具有多種語言,使程序員能夠編碼到DogStatsD接口。
DogStatsD是StatsD的擴展,它是一個累積和聚合指標的守護程序。StatsD是旨在將值傳遞到監視系統(例如Datadog)的標準。
例如,使用名為Datadogpy的Python工具庫。在此示例中,metric是一個計數器,因為它使用了增量方法。
Python代碼收集度量。StatsD是傳遞它的機制。Datadog提供了一種可視化它的方法,例如直方圖:
圖9
直方圖的右側顯示了Datadog的一些功能,因為它包含趨勢線甚至曲線等按鈕,這些按鈕可以消除指標的季節性變化,從而消除可能誤導分析師的噪聲。
日誌
在主機上安裝Datadog代理以將指標直接轉發到Datadog。使用簡單的tail Unix命令或諸如Journald之類的工具來收集日誌。兩者的工作方式都類似,例如,Elastic Filebeat。
AWS Lambda
Lambda是一項服務,使用戶可以在Amazon平臺上運行代碼,而不必擔心基礎架構的詳細信息。例如,可以將Lambda視為運行Python代碼的場所,而無需置備VM。取而代之的是,亞馬遜在其龐大的雲中找到了一個地方來運行它。
MongoDB
用戶使用原始數據源時,Grafana和Datadog都不是即插即用的。例如,在MongoDB的情況下,用戶必須進行大量配置。他們必須更新MongoDB配置文件並添加Datadog用戶,並向他們授予對數據庫和表的訪問權限。
Grafana收集的一些MongoDB指標的示例包括mongodb.asserts.msgps,mongodb.backgroundflushing.total_ms和mongodb.connections.available。
Nginx
Nginx的Datadog配置是用戶放入nginx.conf文件中的指令,如下所示。它將access.log中的行解析為其相應的字段。
<code>http {
\t#recommended log format
\tlog_format nginx '\\$remote_addr - \\$remote_user [\\$time_local] '
'"\\$request" \\$status \\$body_bytes_sent \\$request_time '
'"\\$http_referer" "\\$http_user_agent"';
\taccess_log /var/log/nginx/access.log;/<code>
這樣可以捕獲錯誤,連接斷開和總流量以及其他數據。在Datadog中,這些標記如下所示:
- net.waiting
- net.connections
- net.request_per_s
- cache.hit.bytes
- cache.size
- connections.dropped
儀表板和可視化示例
圖10中的儀表板說明了Datadog的某些圖表類型和指標顯示。
圖 10
圖11顯示了顯示原始日誌的儀表板。對於熟悉Elasticsearch Kibana的用戶來說,這看起來很熟悉,但是對於Datadog,如果該行是500型錯誤,則用戶可以單擊一行以進行深入研究。這稱為分佈式跟蹤,因為它可以跨服務器到達。
圖 11
創建儀表板
要創建儀表盤,請首先選擇一種類型。這兩個選項是“新時間表”(用於故障排除和關聯)和“新屏幕面板”(用於狀態板和數據共享)。
然後選擇一個圖表類型:
- 熱圖
- 檢查狀態
- 更改
- 主機圖
- 散點圖
請注意,這裡有一個更改圖表,顯示了某種趨勢在上升還是下降。
Datadog自動生成它認為用戶可能想要的內容,但是一旦生成,他們就有機會對其進行更改。
該工具還添加了註釋,因此用戶可以單擊單個點以獲取其他信息。此功能使圖表製作者可以添加信息而不會過度擁擠。
監控類型
監視Datadog中的驅動器警報。
注意圖12中的機器學習指標:離群值和預測。但是,這不是真正的預測,因為它不是經過訓練的模型。它僅顯示指標何時超過閾值。
圖 12
基於Datadog機器學習的警報邏輯稱為“看門狗”。看門狗使用機器學習技術來標記異常,這是對設置任意閾值的一種改進,因為它基於數學理論。
用戶可以使用Pagerduty,Slack和電子郵件接收警報。
價錢
Datadog提供免費和付費版本。用戶可以測試付費版本的免費試用版,如果不想付費,可以降級為免費版本。付費的主要功能之一是日誌保留的時間長度,這對於遵守通用數據保護條例,HIPAA和Sarbanes-Oxley Act標準的企業而言非常重要。
Grafana與Datadog的學習曲線
Grafana和Datadog都有相當陡峭的學習曲線。用戶使用這兩種產品都會遇到的一個難題是,他們將需要一種將在一臺機器上進行的配置分發給許多機器的方法,例如使用像Salt這樣的DevOps工具。否則,用戶將花費大量時間嘗試手動維護這些工具。
即使許多儀表板都是自動的,分析人員仍需要學習兩種產品的獨特圖表概念以及如何用查詢語言編寫查詢。兩種IT監視工具均提供廣泛的功能,因此用戶在做出決定之前必須投入大量時間來學習每種工具。
原文鏈接:
https://searchitoperations.techtarget.com/feature/Compare-Grafana-vs-Datadog-for-IT-monitoring?
更多幹貨文章請關注:www.tyun.cn
閱讀更多 新鈦雲服 的文章