本篇文章為大家展示了AWS怎么使用CloudWatch Logs收集日志,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
10年積累的網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有察布查爾錫伯免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
很多時候,我們希望集中收集各服務(wù)器日志統(tǒng)一查看、報警。AWS 給我們提供了這種服務(wù),叫 CloudWatch Logs。
我們需要在目標機器安裝 CloudWatch Logs Agent 程序,以收集和報告日志。
使用 AWS 服務(wù)第一件需要做的事情就是配置權(quán)限,這也不例外。有兩種方式。
一是給目標實例的 IAM 角色允許這些權(quán)限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
二是在下文所述的 awscli.conf
文件里配置允許了這些權(quán)限的角色 access-key 和 secret-key。
[default] region = ${REGION} aws_access_key_id = ${ACCESS_KEY} aws_secret_access_key = ${SECRET_KEY}
awslogs 代理程序提供一種自動化的方法將日志數(shù)據(jù)發(fā)送到 CloudWatch Logs。該代理包括以下組件:
一個將日志數(shù)據(jù)推送到 CloudWatch Logs 的 AWS CLI 插件。
一個運行 CloudWatch Logs aws logs push 命令以將數(shù)據(jù)發(fā)送到 CloudWatch Logs 的腳本(守護程序)。
一個確保該守護程序始終運行的 cron 作業(yè)。
如果更喜歡官方文檔,請參考 CloudWatch Logs 代理參考。
awscli.conf
配置[plugins] cwlogs = cwlogs [default] region = ${REGION} aws_access_key_id = ${ACCESS_KEY} aws_secret_access_key = ${SECRET_KEY}
awslogs.conf
配置[general] # 狀態(tài)文件路徑 # 該文件用于記錄當前日志上傳的狀態(tài) state_file =# 自定義的 Python Logging Config 格式文件路徑 # 可選 logging_config_file = # 啟用 GZIP 壓縮 use_gzip_http_content_encoding = [true | false] [logstream1] # 日志組名稱 log_group_name = # 日志流名稱 # 可用的預定義變量:{instance_id} {hostname} {ip_address} log_stream_name = # 時間格式,日志的記錄時間以該時間為準 # 如果無法匹配目標事件則以最近一次成功為準,沒有最近一次成功則使用當前時間 datetime_format = # 如果不能從時間格式獲取時區(qū),則指定時區(qū) time_zone = [LOCAL|UTC] # 待收集的日志源 file = # 以前幾行計算識別碼 file_fingerprint_lines = | # 日志行的匹配模式,匹配該模式則認為上一條日志已結(jié)束 # 指定為 {datetime_format} 則以時間格式來匹配 # 默認為 ^[^\s] 即行開頭非空則認為是新的日志 multi_line_start_pattern = | {datetime_format} # 當日志源沒有被記錄的收集狀態(tài)時,從何處開始 initial_position = [start_of_file|end_of_file] # 文件編碼 encoding = [ascii|utf_8|..] # 批量處理的時間段(單位:ms) buffer_duration = # 批量處理的最大條目 batch_count = # 批量處理的最大大?。▎挝唬鹤止?jié)) batch_size = [logstream2] ...
下面列出了常見 datetime_format 代碼。您也可以使用 Python datetime.strptime() 支持的所有 datetime_format 代碼。時區(qū)偏移量 (%z) 也受支持,[+-]HHMM,不帶冒號 (:)。
%y:年份,以零填充的十進制數(shù)字表示,不包括代表世紀的數(shù)字。00, 01, ..., 99
%Y:年份,以十進制數(shù)字形式表示且包括表示世紀的數(shù)字。如 1970、1988、2001、2013
%b:月份,使用區(qū)域設(shè)置的縮寫名稱形式。Jan、Feb...Dec (en_US);
%B:月份,使用區(qū)域設(shè)置的完整名稱形式。January,F(xiàn)ebruary...December (en_US);
%m:月份,使用以零填充的十進制數(shù)字形式。01, 02, ..., 12
%d:月份中的日期,使用以零填充的十進制數(shù)字形式。01, 02, ..., 31
%H:小時(24 小時制),使用以零填充的十進制數(shù)字形式。00, 01, ..., 23
%I:小時(12 小時制),使用以零填充的十進制數(shù)字形式。01, 02, ..., 12
%p:區(qū)域設(shè)置中等效于 AM 或 PM 的表示形式。
%M:分鐘,使用以零填充的十進制數(shù)字形式。00, 01, ..., 59
%S:秒,使用以零填充的十進制數(shù)字形式。00, 01, ..., 59
%f:微秒,在左邊使用以零填充的十進制數(shù)字形式。000000, ..., 999999
%z:使用 +HHMM 或 -HHMM 形式的 UTC 偏移量。+0000, -0400, +1030
比如可配置為:
[general] state_file = /var/lib/awslogs/agent-state use_gzip_http_content_encoding = true [app] log_group_name = /aws/ec2/app log_stream_name = staging-{hostname} datetime_format = %Y-%m-%d %H:%M:%S multi_line_start_pattern = {datetime_format} time_zone = UTC encoding = utf_8 buffer_duration = 5000 file = /app/logs/app-*.log initial_position = start_of_file
Amazon Linux 自帶 awslogs 源。
function install_awslogs() { yum install -q -y awslogs && chkconfig awslogs on service awslogs start } service awslogs status || (service awslogs start || install_awslogs)
代理程序的配置默認在 /etc/awslogs/
,可能有以下幾個文件:
awscli.conf
基本配置
awslogs.conf
日志配置(必須)
proxy.conf
網(wǎng)絡(luò)代理配置
注意,在其他 Linux 上 awslogs 的安裝方式和配置路徑與此不同。
REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk -F\\\" '{print $4}') function install_awslogs() { curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O python ./awslogs-agent-setup.py --region ${REGION} -c s3://bucket/config-file-key } service awslogs status || (service awslogs start || install_awslogs)
獲取地區(qū)值時我們使用了實例的動態(tài)數(shù)據(jù)。具體請參考 檢索動態(tài)數(shù)據(jù) 和 檢索實例元數(shù)據(jù)。
當然,在非 Amazon Linux 上通過“用戶數(shù)據(jù)”做啟動腳本,需要確認目標 AMI 裝有 cloud-init,如果需要使用 aws-cli 也需要確認。
通過 service awslogs status
檢查代理程序是否在運行。如果出現(xiàn)異常,代理程序的日志保存在文件 /var/log/awslogs.log
,檢查該文件以獲知是否存在錯誤。
你也可以通過 service awslogs start
啟動、service awslogs restart
重啟、service awslogs stop
停止。在修改配置文件后記得重啟服務(wù)。
可以在 AWS 控制臺設(shè)置日志組的事件過期時間。
通過添加指標,可以監(jiān)控符合給定模式的日志數(shù),如提供篩選模式 "[WARN]"
得到警告級別的日志。具體請參考 篩選器和模式語法。
使用訂閱機制實時處理日志數(shù)據(jù)
批量導出日志數(shù)據(jù)到 S3
上述內(nèi)容就是AWS怎么使用CloudWatch Logs收集日志,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。