※ 效能
- What tools would you use to monitor or analyze your performance ?
中文意思:在監控或分析系統性能方面可能會使用哪些工具?
※ 解答:
常見的監控和分析工具,可分成以下6大類:
- 系統監控工具: 例如,Prometheus /prəˈmiː.θi.əs/、Grafana /ˈɡræfɑnɑ/、Nagios /na-gios/、Zabbix /zab-bix/等,這些工具可以用於實時監控伺服器、網絡和應用程序性能。
- Prometheus (普羅米修斯):是一個開源的系統監控和警報工具包,會將即時的 Metrics 資料儲存到時間序列資料庫,並透過 HTTP 接口讓使用者查詢以及設定預警規則,讓我們能輕鬆管理 Metrics 。
※ 何謂Prometheus ?
- 可作為高度動態容器環境下的監控工具,如Kubernetes,Docker Swarm…etc。
- 可以應用在傳統基礎設施(bare server)及其上的應用程式監控。
- 非常適合記錄時間序列資料,比如可以記錄機器CPU、Memory的使用情況。
- 可以在微服務中收集各個維度的資訊。
- 本身就是一個存時間序列的資料集/資料庫,可支援拉取資料,以及擁有外圍元件生態。
- 典型的特性:它是主動從各TARGET(客户端)上拉取(pull)數據,而非等待監控端的推送(push)。
※ Prometheus 包含以下元件:
- Retrieval: 負責蒐集 Metrics 資料。
- TSDB: 時間序列資料庫,儲存蒐集的資料。
- HTTP Server: 提供 HTTP API 供使用者查詢蒐集的資料。
- Pushgateway: 開放接口,被動蒐集 Metrics 資料。
- Alertmanager: 收到警告後,負責發送警告給使用者。
- Prometheus Web UI: 可在 GUI 查詢 Metrics 資料。
- Grafana:是一個用於儲存和檢視時間序列資料的開源監控工具。
※ 何謂Grafana ?
- 是一個跨平台開源互動式視覺化的數據分析平台。基於各式資料源的應用面向,它提供各式圖表、告警以滿足現代企業數據可視化及數據輔助決策的需求。
- 數據的收集與存儲:從多種數據源提取數據,然後將這些數據呈現為多種視覺形式。
- 查詢和分析能力:依靠各種數據源的能力來進行數據提取和展現。
- 數據可視化:提供了豐富的圖表、儀表板和其他多種視覺表示形式。
- 警報系統:具有先進的警報系統,允許使用者根據多種條件和數據閾值設置警報。
- 生態系統與集成:能夠無縫整合和呈現來自各種數據源的數據。
- 應用程式性能監控(APM)工具: 例如,New Relic /relik/、Datadog、AppDynamics /daɪˈnæm.ɪks/等,這些工具專注於監控應用程序層面的性能,提供有關代碼執行、數據庫查詢和其他相關指標的詳細信息。
- New Relic:提供用於監控、分析和優化應用程式性能的解決方案。
- Datadog:是大型應用程式的監視和分析平臺。 它包含基礎結構監視、應用程式效能監視、記錄管理和使用者體驗監視。
- AppDynamics:全天候APP 效能監控解決方案。易於配置和部署,能有效降低生產成本、監控每一行程式碼。
3.日誌分析工具: 例如,ELK Stack(Elasticsearch、Logstash、Kibana)、Splunk等,這些工具用於分析和可視化日誌文件,以便追蹤錯誤、警告和其他事件。
- ELK Stack:提供中心化的日誌功能,協助用戶發現伺服器與應用程式中的問題,它讓用戶能在一個平台上搜尋與監控所有日誌,讓日誌搜尋與監控變得輕而易舉。
- Splunk:是一個巨量資料分析平台,Splunk的軟體及雲端服務讓各組織運用單一平台滿足所有資安與可觀測性資料需求,包含搜尋、監控、分析、並視覺化來自網站、伺服器、網路、感應器、以及行動裝置的巨量機器資料。
4. 數據庫性能監控工具: 例如,Database Performance Analyzer、Percona Monitoring and Management (PMM)等,這些工具專注於監控和分析數據庫性能。
- Database Performance Analyzer:通常用於管理各種關聯式數據庫管理系統(RDBMS),如Microsoft SQL Server、Oracle、MySQL、PostgreSQL等。能幫助數據庫管理員和運維團隊實時監控數據庫性能、快速識別和解決問題,確保應用程式和業務的順利運行。
- Percona Monitoring and Management (PMM):它是一個用於管理及監控數據庫性能的開源平台,主要提供對各種數據庫系統的全面性能洞察,包括MySQL、MariaDB、MongoDB等。目的在簡化和優化數據庫管理,使用戶能夠更佳理解、監控和提高其數據庫環境的性能。
5.網站性能測試工具: 例如,Google PageSpeed Insights、WebPageTest等,這些工具用於評估網站的加載時間和性能。
- Google PageSpeed Insights:是由 Google 提供的網站測試工具,主要是測試「網站使用者體驗」與「網站效能」這兩項。它提供關於網站在不同設備上的載入速度和性能優化建議,以協助網站擁有更好的用戶體驗。
- WebPageTest:是一個網站效能與網頁速度檢測工具。可以幫你分析網頁速度,包括網站使用體驗核心指標(Core Web Vitals),另外還提供瀑布流資訊,包括網頁下載時間總時長、網頁請求數目、下載時間最長的檔案是哪個、佔據最長下載時間的檔案類型… 等等。
6. 網路封包分析工具: 例如,Wireshark、tcpdump /ˈtiːsiːpiˌdʌmp/等,這些工具用於捕獲和分析網絡封包,以進行網路性能故障排除。
- Wireshark:是一個協助使用者收取網路流量並進行分析的工具。在資訊安全領域中,Wireshark被廣泛應用在網路封包的解析,因此它可被用於檢查安全問題和解決網路問題,也可供開發者除錯協定的實現和學習網路協定的原理。
- tcpdump:意思是dump the traffic on a network,根據使用者的定義對網路上的封包進行截獲的包分析工具。 tcpdump可以將網路中傳送的封包的「頭」完全截獲下來提供分析。它支援針對網路層、協定、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的資訊。