為什麼我無法使用 awslogs 代理程式將日誌資料推送到 CloudWatch Logs?

2 分的閱讀內容
0

我無法使用 CloudWatch Logs 代理程式 (awslogs) 將日誌資料推送到 Amazon CloudWatch Logs。

解決方法

在開始之前,請確認 awslogs 代理程式可以連線至 CloudWatch Logs API 端點。

請確認您的組態擁有下列屬性:

  • 網際網路連線
  • 有效的安全群組組態
  • 有效的網路存取控制清單 (network ACL)

重要事項: 此參考資料適用於不再支援的先前 CloudWatch Logs 代理程式。如果您使用執行個體中繼資料服務版本 2 (IMDSv2),就必須使用新版統一 CloudWatch 代理程式。.即使您並未使用 IMDSv2,最佳做法是使用較新的統一 CloudWatch 代理程式,而非日誌代理程式。

指紋問題

檢閱來源日誌檔案的標頭行。將資料設定為推送至 CloudWatch 時,您已設定此檔案的路徑。

  • 如果前幾行為空白,或包含保持原樣的非事件資料,日誌識別雜湊可能會發生問題。
  • 如果標頭行為相同,請更新代理程式組態檔案中的 file_fingerprint_lines 選項。請務必指定每個檔案中用於產生識別雜湊的行。

檢查 awslogs 日誌檔案是否有錯誤

檢閱 /var/log/awslogs.log 日誌檔案。請務必注意任何錯誤訊息。

權限錯誤包括:

  • NoCredentialsError: 找不到憑證 – 如果您並未在執行個體中新增 AWS Identity and Access Management (IAM) 角色,請建立並附加 IAM 角色。如果您已經為執行個體新增 IAM 角色,請更新 /etc/awslogs/awscli.conf 檔案的 IAM 使用者憑證。
  • ClientError: 呼叫 PutLogEvents 操作時發生錯誤 (AccessDeniedException): 使用者: arn:aws:iam::012345678910: / 未獲得執行: logs:PutLogEvents[...] 的權限為 CloudWatch Logs 設定 IAM 角色或擁有必要權限的使用者

時間戳記錯誤包括:

  • 切換回先前的事件時間:{'timestamp': 1492395793000, 'start_position': 17280L, 'end_position': 17389L}, previousEventTime: 1492395793000, 原因:時間戳記無法從訊息剖析。 – 確認日誌事件開頭為時間戳記。確認 /etc/awslogs/awslogs.conf 中指定的 datetime_format 與日誌事件的時間戳記格式相符。變更 datetime_format 以符合所需的時間戳記格式。
  • 指定路徑 ' ' 中找不到檔案 – 將代理程式組態檔案日誌檔案路徑更新為正確路徑。

其他 awslogs 問題

  • 如果日誌在日誌輪換後停止推送,請檢查支援的日誌輪換方式。如需更多資訊,請參閱 CloudWatch Logs 代理程式常見問題
  • 如果日誌只在 awslogs 代理程式重新啟動後快速推送,請檢查代理程式組態檔案的 [logstream] 區段是否有重複。每個區段必須擁有唯一名稱。
  • 如果 awslogs.log 日誌檔案佔用太多磁碟空間,請檢查日誌檔案中的錯誤並進行修正。如果日誌檔案只包含資訊訊息,請在代理程式組態檔案為 logging_config_file 選項指定較低記錄層級。

進一步疑難排解

如要進一步疑難排解,請注意 instance-id (您的執行個體 ID)。接著,請根據您的組態收集並檢閱下列內容。

Yum 安裝:

  • yum 版本
$ yum info awslogs
$ yum info aws-cli-plugin-cloudwatch-logs
  • /etc/awslogs/awslogs.conf 檔案
  • /etc/awslogs/awscli.conf 檔案
  • /etc/awslogs/ 中的其他相關檔案
  • /var/log/awslogs.log 檔案

指令碼安裝:

  • awslogs 版本,使用下列命令取得:
$ /var/awslogs/bin/awslogs-version.sh
  • /var/awslogs/etc/awslogs.conf 檔案
  • /var/awslogs/etc/awscli.conf 檔案
  • /var/awslogs/etc/ 中的其他相關檔案
  • /var/log/awslogs.log
  • /var/log/awslogs-agent-setup.log

針對輪換相關問題,請收集並檢閱:

  • 來源日誌的指令碼片段
  • 監控目標目錄的內容清單。使用 ls -la 命令與目錄路徑來獲得:
$ ls -la <Monitoring-Target-Directory-Path>

相關資訊

開始使用 CloudWatch Logs

AWS 官方
AWS 官方已更新 1 年前