云监控介绍 - Amazon CloudWatch
云監控介紹 - Amazon CloudWatch
作者:張航東
本文主要用于個人學習、總結,歡迎轉載,但請務必注明作者和出處,感謝!
Amazon CloudWatch 是一項針對 AWS 云資源和在 AWS 上運行的應用程序進行監控的服務。
以下是官方對其功能的總結:
使用 Amazon CloudWatch 可以收集和跟蹤各項指標、收集和監控日志文件、設置警報以及自動應對 AWS 資源的更改。Amazon CloudWatch 可以監控各種 AWS 資源,例如 Amazon EC2 實例、Amazon DynamoDB 表、Amazon RDS 數據庫實例、應用程序和服務生成的自定義指標以及應用程序生成的所有日志文件。您可通過使用 Amazon CloudWatch 全面地了解資源使用率、應用程序性能和運行狀況。使用這些分析結果,您可以及時做出反應,保證應用程序順暢運行。
與此同時,官方也給出的 Amazon CloudWatch 特色與優點,總共有7項:
- 監控 Amazon EC2
- 監控其他 AWS 資源
- 監控自定義指標
- 監控和存儲日志
- 設置警報
- 查看圖表和統計信息
- 監控并應對資源更改
本文將主要針對這7項內容,對 Amazon CloudWatch 進行一個簡單的介紹。
Amazon CloudWatch 的工作方式和術語概念
工作方式
首先,我們先來看一下 CloudWatch 的工作方式。
從圖上可以看出,CloudWatch 主要就是一個存放指標的數控庫。
AWS 服務和用戶自定義的數據,可以通過 API 將指標和監控數據存入。
告警模塊(Amazon CloudWatch Alarm)用于配置和處理告警,并將告警通知輸出到郵件通知、自動伸縮、以及其他服務。
統計模塊(Available Statistics)用于計算、統計、檢索數據,以便AWS控制臺及其他組件訪問。
術語概念
Amazon CloudWatch 有以下幾個核心術語和概念:
- 命名空間
- 指標
- 維度
- 統計數據
- 百分位數
- 警報
1> 命名空間
記錄監控指標的所屬,不同命名空間中的指標彼此獨立。例如 CPUUtilization 是一個監控指標,表示 CPU使用率,如果單單只靠這個名字,我們很難判斷這個是虛擬機、容器、還是物理主機的。
這時候就需要額外的概念(即這里的“命令空間”)來區分它,Amazon約定使用 AWS/service 的方式表示命名空間,例如:AWS/EC2 表示 Amazon EC2 虛擬機, AWS/ECS 表示容器,AWS/ELB 表示負載均衡。。。
2> 指標
和其他監控系統的概念一樣,表示監控的內容項目,如:CPU使用率,內存占用率。
指標數據點
是對于每個指標而言,具體某一時間(時間戳)的數據。
指標的所有監控數據,就是由間隔固定的時間段,所采集和記錄的一個個數據點組成。
指標保留
每個時間段的指標數據點保存一定時間后,會進行聚合,以來實現長期存儲。
- 時間段短于 60 秒的數據點,保持3小時
- 時間段為60 秒(1分鐘)的數據點,保持15天
- 時間段為300秒(5分鐘)的數據點,保持63天
- 時間段為3600秒(1小時)的數據點,保持455天(15個月)
較短時間段的數據點,在超過保持時間后,會聚合成較長一個時間段的數據點。即:60秒數據過期(超過15天),集合成300秒數據;300秒數據過期(超過63天),聚合成3600秒數據。
CloudWatch 會保留 5 分鐘和 1 小時數據。
3> 維度
維度可以理解是給指標追加的 label ,每個指標可以配置10個維度。
可以通過單個維度,或者維度組合來對指標和數據進行篩選。
4> 統計數據
是指定時間段內的指標數據聚合,可用的統計數據有:
- Minimum
- Maximum
- Sum
- Average
- SampleCount,數據點計數 (數量) ,用于統計信息的計算。
- pNN.NN,指定的百分位數的值
5> 百分位數
指示某個值在數據集中的相對位置。例如,第 95 個百分位數表示 95% 的數據低于此值,5% 的數據高于此值。百分位數可幫助您更好地了解指標數據的分布情況。
6> 警報
在指定的時間段內監控單個指標,并根據指標值相對于閾值的變化情況執行一項或多項指定操作。
Amazon CloudWatch 的警報不單單能發出警報通知,還可以執行一定的操作,例如重啟/關閉虛擬機。
監控 Amazon EC2
對 EC2 實例的監控,Amazon 主要提供了2種類型的監控:
- 基本監控 - 14個監控指標,免費,頻率5分鐘
- 詳細監控 - 14個監控指標,收費,頻率1分鐘
監控指標如下:
| 系統狀態檢查失敗 (StatusCheckFailed_System) |
| 實例狀態檢查失敗 (StatusCheckFailed_Instance) |
| 狀態檢查失敗 (StatusCheckFailed) |
| CPU 使用率 (CPUUtilization) |
| CPU 積分數 (CPUCreditUsage) |
| CPU 超額積分數 (CPUCreditBalance) |
| 網絡接收數據包數 (NetworkPacketsIn) |
| 網絡發送數據包數 (NetworkPacketsOut) |
| 網絡輸入 (NetworkIn) |
| 網絡輸出 (NetworkOut) |
| 磁盤讀取操作 (DiskReadOps) |
| 磁盤寫入操作 (DiskWriteOps) |
| 磁盤讀取字節數 (DiskReadBytes) |
| 磁盤寫入字節數 (DiskWriteBytes) |
PS:很奇怪EC2居然沒有內存的監控指標,而ECS(容器)是有內存使用率 (MemoryUtilization) 和內存預留比 (MemoryReservation)這兩項監控指標。
詳細監控(收費)和基本監控(免費)除了頻率上的差異,另外詳細監控下,還可以通過維度來篩選 EC2 實例的監控數據。
支持的維度如下:
| AutoScalingGroupName |
| ImageId |
| InstanceId |
| InstanceType |
監控其他 AWS 資源
在不安裝任何軟件的情況下,Amazon CloudWatch 可以監控 AWS 的大多數服務,如果啟用這些服務的話,在 CloudWatch 的控制面板中,便可在“指標”欄內搜索到這些服務的指標項,而且全部都是免費的(監控是免費的,但是這些服務本身可能是收費的)。
可以監控的服務有:
| Auto Scaling 組 | 每 1 分鐘 7 個預選指標 |
| 彈性負載均衡器 | 每 1 分鐘 13 個預選指標 |
| Amazon Route 53 運行狀況檢查 | 1 個預選指標(頻率為 1 分鐘) |
| Amazon EBS PIOPS (SSD) 卷 | 每 1 分鐘 10 個預選指標 |
| Amazon EBS 通用型 (SSD) 卷 | 每 5 分鐘 10 個預選指標 |
| Amazon EBS 磁性介質卷 | 每 5 分鐘 8 個預選指標 |
| AWS Storage Gateway | 每 5 分鐘 11 個預選網關指標和 5 個預選存儲卷指標 |
| Amazon CloudFront | 每 1 分鐘 6 個預選指標 |
| Amazon DynamoDB 表 | 每 5 分鐘 7 個預選指標 |
| Amazon ElastiCache 節點 | 每 1 分鐘 39 個預選指標 |
| Amazon RDS 數據庫實例 | 每 1 分鐘 14 個預選指標 |
| Amazon Elastic MapReduce 任務流 | 每 5 分鐘 26 個預選指標 |
| Amazon Redshift | 每 1 分鐘 16 個預選指標 |
| Amazon SNS 主題 | 每 5 分鐘 4 個預選指標 |
| Amazon SQS 隊列 | 每 5 分鐘 8 個預選指標 |
| AWS Opsworks | 每 1 分鐘 15 個預選指標 |
| Amazon CloudWatch Logs | 6 個預選指標(頻率為 1 分鐘) |
| AWS 賬單預算費用 | 監控使用 AWS 的費用, 指標的數量根據使用的 AWS 產品和服務而定 |
監控自定義指標
簡單來說,監控自定義指標就是指,使用 AWS CLI 或 API 將自己的指標發送到 CloudWatch。
主要會使用到的 CLI 有以下兩個:
- put-metric-data,發送指標數據到 CloudWatch
- get-metric-statistics,從 CloudWatch 獲取指標數據
示例:
aws cloudwatch put-metric-data --metric-name Buffers --namespace MyNameSpace --unit Bytes --value 231434333 --dimensions InstanceId=1-23456789,InstanceType=m1.small aws cloudwatch get-metric-statistics --metric-name Buffers --namespace MyNameSpace --dimensions Name=InstanceId,Value=1-23456789 Name=InstanceType,Value=m1.small --start-time 2016-10-15T04:00:00Z --end-time 2016-10-19T07:00:00Z --statistics Average --period 60Amazon CloudWatch 已經將這些 CLI 封裝好,并提供腳本,來幫助使用者快速開啟 EC2 實例的監控(目前主要是內存和磁盤)。
腳本下載地址:http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
腳本主要包含以下幾個文件:
- CloudWatchClient.pm – 共享 Perl 模塊,以簡化從其他腳本調用 Amazon CloudWatch 的過程。
- mon-put-instance-data.pl – 收集 Amazon EC2 實例中的系統指標 (內存、交換、磁盤空間利用率) 并將其發送到 Amazon CloudWatch。
- mon-get-instance-stats.pl – 查詢 Amazon CloudWatch 并顯示在其上執行此腳本的 EC2 實例的最近利用率統計數據。
- awscreds.template – AWS 憑據的文件模板,儲存您的訪問密鑰 ID 和秘密訪問密鑰。
- AwsSignatureV4.pm - 加密簽名相關。
- LICENSE.txt – 包含 Apache 2.0 許可證的文本文件。
- NOTICE.txt – 版權聲明。
使用類似如下命令,便可開啟監控:
./mon-put-instance-data.pl --mem-util --mem-used-incl-cache-buff --mem-used --mem-avail另外,由于腳本是使用 perl 語言編寫的,所以在使用時,需要先安裝 perl 語言相關的軟件包。
監控和存儲日志
Amazon CloudWatch Logs 可以監控、存儲和訪問 EC2 實例相關的日志。個人認為,其有以下2個特點:
- 實時監控
- 歸檔日志數據
與自定義監控類似,日志的監控也是需要安裝代理的,配置文件中可以配置需要監控哪些日志,啟動代理后,代理便會實時的將這些日志發送到CloudWatch Logs。
打開 CloudWatch 控制臺,我們便可以看到新創建的日志組和日志流。
當然,可以在“操作”欄選擇到處這些日志到本地或者 Amazon S3 存儲。
設置警報
對于警報,除了傳統的設置閾值,發處告警通知以外,個人認為最大的亮點在于告警應對,也就是在警報發出之后,所能采取的應對方法。
目前支持3種方式(可多選):
- 通知(郵件,由SNS服務管理)
- 自動伸縮
- EC2 操作(恢復/停止/終止/重啟)
整個操作和配置均在一個界面完成,界面截圖如下:
查看圖表和統計信息
統一的、一站式的界面管理,包括:自定義控制面板、監控指標、警報、日志、事件,共5個部分。
這個大家可以注冊一個Amazon的賬號自己體驗下,除了扣除1美元的押金的外, 其他基本可以免費體驗。
監控并應對資源更改
這個其實指的就是 Amazon CloudWatch Events 對事件的監控以及應對。
目前只要是 AWS 可監控服務(參考“監控其他 AWS 資源”章節),CloudWatch Events 都提供了對應的事件。
應對方面,官網給出的應對服務主要有:
- Amazon EC2 實例
- AWS Lambda 函數
- Amazon Kinesis Streams 中的流
- Amazon Kinesis Firehose 中的傳輸流
- Amazon ECS 任務
- SSM Run Command
- SSM Automation
- Step Functions 狀態機
- AWS CodePipeline 中的管道
- Amazon Inspector 評估模板
- Amazon SNS 主題
- Amazon SQS 隊列
- 內置目標
- 另一個 AWS 賬戶的默認事件總線
身份驗證和訪問控制
另外,在使用 CloudWatch 時,是會要求通過 IAM (AWS Identity and Access Management) 來進行訪問控制,例如警報應對和事件應對,在需要額外的注冊一個 IAM 賬號來授予應對操作的權限。
小結
總的感覺,Amazon CloudWatch 的功能已經做的非常全的,控制臺也簡潔易懂,不過由于 AWS 服務太多,要想用好 CloudWatch,也不簡單。
另外,我們看到自定義監控和日志監控都是需要在 EC2 實例中安裝腳本/代理,對于 AWS 的公有云來說,每個 EC2 實例都有一個“公有IP”,所以不管是安裝,還是發送消息到 CloudWatch,都比較方面。但是如果我們構建私有云,有單獨的業務網絡(VM網絡)和管理網絡,那么是否可以采用 CloudWatch 的這種方式,就需要進一步考慮了。
總結
以上是生活随笔為你收集整理的云监控介绍 - Amazon CloudWatch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MJLQ2CH A java开发_新Ma
- 下一篇: Autosar Dcm模块之Vector