快速入門:使用 AWS OpsWorks 和 Chef 安裝 CloudWatch Logs 代理程式 - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

快速入門:使用 AWS OpsWorks 和 Chef 安裝 CloudWatch Logs 代理程式

您可以安裝 CloudWatch Logs 代理程式,並使用 AWS OpsWorks 和 Chef 建立日誌串流,這是第三方系統和雲端基礎設施自動化工具。Chef 使用「配方」(您寫入在您的電腦上安裝和設定軟體的配方),以及「說明書」(此為配方的集合) 來執行其組態和政策分發任務。如需詳細資訊,請參閱 Chef

以下 Chef 配方範例說明如何監控在每個 EC2 執行個體上的一個日誌檔。該配方使用堆疊名稱做為日誌群組和執行個體的主機名稱做為日誌串流名稱。為了監控多個日誌檔,您需要擴展配方來建立多個日誌群組和日誌串流。

步驟 1:建立自訂配方

建立儲存庫以存放您的配方。 AWS OpsWorks 支援 Git 和 Subversion,或者您可以將封存存放在 Amazon S3 中。《AWS OpsWorks 使用者指南》中的逐步指南儲存庫描述逐步指南儲存庫的結構。以下範例假設說明書名為 logs。install.rb 配方會安裝 CloudWatch Logs 代理程式。您也可以下載說明書範例 (CloudWatchLogs-Cookbooks.zip)。

建立名為 metadata.rb 的檔案,其中包含以下程式碼:

#metadata.rb name 'logs' version '0.0.1'

建立 CloudWatch Logs 組態檔案:

#config.rb template "/tmp/cwlogs.cfg" do cookbook "logs" source "cwlogs.cfg.erb" owner "root" group "root" mode 0644 end

下載並安裝 CloudWatch Logs 代理程式:

# install.rb directory "/opt/aws/cloudwatch" do recursive true end remote_file "/opt/aws/cloudwatch/awslogs-agent-setup.py" do source "https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py" mode "0755" end execute "Install CloudWatch Logs agent" do command "/opt/aws/cloudwatch/awslogs-agent-setup.py -n -r region -c /tmp/cwlogs.cfg" not_if { system "pgrep -f aws-logs-agent-setup" } end
注意

在上述範例中,將 region 換成以下其中一個:us-east-1、us-west-1、us-west-2、ap-south-1、ap-northeast-2、ap-southeast-1、ap-southeast-2、ap-northeast-1、eu-central-1、eu-west-1 或 sa-east-1。

如果安裝代理程式失敗,檢查以確保已安裝 python-dev 套件。如果沒有,請使用下列命令,然後重試代理程式安裝:

sudo apt-get -y install python-dev

這個配方使用 cwlogs.cfg.erb 範本檔案,您可以對其修改以指定各種屬性 (例如要記錄哪些檔案)。如需這些屬性的相關資訊,請參閱 CloudWatch Logs 代理程式參考

[general] # Path to the AWSLogs agent's state file. Agent uses this file to maintain # client side state across its executions. state_file = /var/awslogs/state/agent-state ## Each log file is defined in its own section. The section name doesn't ## matter as long as its unique within this file. # #[kern.log] # ## Path of log file for the agent to monitor and upload. # #file = /var/log/kern.log # ## Name of the destination log group. # #log_group_name = kern.log # ## Name of the destination log stream. # #log_stream_name = {instance_id} # ## Format specifier for timestamp parsing. # #datetime_format = %b %d %H:%M:%S # # [<%= node[:opsworks][:stack][:name] %>] datetime_format = [%Y-%m-%d %H:%M:%S] log_group_name = <%= node[:opsworks][:stack][:name].gsub(' ','_') %> file = <%= node[:cwlogs][:logfile] %> log_stream_name = <%= node[:opsworks][:instance][:hostname] %>

該範本會參照堆疊組態和部署 JSON 中的對應屬性以取得堆疊名稱和主機名稱。指定要記錄檔案的此屬性定義在 cwlogs 說明書的 default.rb 屬性檔案 (logs/attributes/default.rb) 中。

default[:cwlogs][:logfile] = '/var/log/aws/opsworks/opsworks-agent.statistics.log'

步驟 2:建立 AWS OpsWorks 堆疊

  1. 開啟 AWS OpsWorks 主控台,網址為 https://console.aws.amazon.com/opsworks/://。

  2. OpsWorks 儀表板上,選擇新增堆疊以建立 AWS OpsWorks 堆疊。

  3. Add stack (新增堆疊) 畫面中,選擇 Chef 11 stack (Chef 11 堆疊)。

  4. Stack name (堆疊名稱) 中,輸入名稱。

  5. 對於 Use custom Chef Cookbooks (使用自訂 Chef 說明書),選擇 Yes (是)。

  6. 對於 Repository type (儲存庫類型),選取您要使用的儲存庫類型。如果您使用的是上述範例,請選擇 Http Archive (Http 封存)。

  7. 對於 Repository URL (儲存庫 URL),請輸入您要將在先前步驟建立的說明書儲存在其中的儲存庫。如果您使用的是上述範例,請輸入 https://s3.amazonaws.com/aws-cloudwatch/downloads/CloudWatchLogs-Cookbooks.zip

  8. 選擇 Add Stack (新增推疊) 以建立堆疊。

步驟 3:擴展 IAM 角色

若要將 CloudWatch Logs 與 AWS OpsWorks 執行個體搭配使用,您需要擴展執行個體使用的 IAM 角色。

  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在導覽窗格中選擇 Policies (政策)、Create Policy (建立政策)。

  3. Create Policy (建立政策) 頁面上,請在 Create Your Own Policy (建立自己的政策) 下選擇 Select (選取)。如需建立自訂政策的詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 的 IAM 政策Amazon EC2

  4. Review Policy (檢閱政策) 頁面上的 Policy Name (政策名稱) 中,輸入該政策名稱。

  5. Policy Document (政策文件) 中,貼上以下政策:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
  6. 選擇建立政策

  7. 在導覽窗格中,選擇角色,然後在內容窗格中,針對角色名稱選取 AWS OpsWorks 堆疊使用的執行個體角色名稱。您可以在堆疊設定中找到您的堆疊使用的執行個體角色名稱 (預設值為 aws-opsworks-ec2-role)。

    注意

    選擇角色名稱 (非核取方塊)。

  8. Permissions(許可) 索引標籤的 Managed Policies (受管政策) 中,選擇 Attach Policy (連接政策)。

  9. Attach Policy (連接政策) 頁面,在表格標頭中 (Filter (篩選條件) 和 Search (搜尋) 旁),請選擇 Policy Type (政策類型)、Customer Managed Policies (客戶受管政策)。

  10. 針對 Customer Managed Policies (客戶受管政策),選取您在上方建立的 IAM 政策,然後選擇 Attach Policy (連接政策)。

    如需使用者和政策的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 使用者和群組以及管理 IAM 政策

步驟 4:新增層

  1. 開啟 AWS OpsWorks 主控台,網址為 https://console.aws.amazon.com/opsworks/://。

  2. 在導覽視窗中,選擇 圖層

  3. 在內容窗格中選取 layer,然後選擇 Add layer (新增 layer)。

  4. OpsWorks 索引標籤,對於 Layer type (層類型),請選擇 Custom (自訂)。

  5. 對於 Name (名稱) 和 Short name (短名稱) 欄位中,輸入層的長短名稱,然後選擇 Add layer (新增層)。

  6. 配方索引標籤的自訂 Chef 配方下,有數個標題 - 設定設定部署取消部署關機 - 對應至 AWS OpsWorks 生命週期事件。 會在執行個體生命週期中的這些關鍵點 AWS OpsWorks 觸發這些事件,以執行相關聯的配方。

    注意

    如果沒有顯示上述標題,在 Custom Chef Recipes (自訂 Chef 配方) 下,請選擇 edit (編輯)。

  7. Setup (設定) 旁輸入 logs::config, logs::install,選擇 + 以將其新增到清單,然後選擇 Save (儲存)。

    AWS OpsWorks 會在執行個體開機之後,在此層中的每個新執行個體上執行此配方。

步驟 5:新增執行個體

該層只控制如何設定執行個體。您現在需要將一些執行個體新增到層,並啟動它們。

  1. 開啟 AWS OpsWorks 主控台,網址為 https://console.aws.amazon.com/opsworks/://www.。

  2. 在導覽窗格中,選擇 Instances (執行個體),然後選擇在層之下的 + Instance (+ 執行個體)。

  3. 接受預設的設定,然後選擇 Add Instance (新增執行個體) 以將執行個體新增到層。

  4. 在資料列的 Actions (動作) 欄,按一下 start (開始) 以啟動執行個體。

    AWS OpsWorks 會啟動新的 EC2 執行個體並設定 CloudWatch Logs。該執行個體的狀態會在準備好時變更為線上。

步驟 6:檢視您的日誌

在代理程式執行幾分鐘後,您在 CloudWatch 主控台應該會看到新建立的日誌群組和日誌串流。

如需詳細資訊,請參閱檢視傳送到 CloudWatch Logs 的日誌資料