빠른 시작: AWS OpsWorks 및 Chef를 사용하여 CloudWatch Logs 에이전트 설치 - Amazon CloudWatch Logs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

빠른 시작: AWS OpsWorks 및 Chef를 사용하여 CloudWatch Logs 에이전트 설치

타사 시스템 및 클라우드 인프라 자동화 도구인 AWS OpsWorks 및 Chef를 사용하여 CloudWatch Logs 에이전트를 설치하고 로그 스트림을 생성할 수 있습니다. 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. 스택 이름에 이름을 입력합니다.

  5. Use custom Chef Cookbooks(사용자 지정 Chef 쿡북 사용)에서 를 선택합니다.

  6. Repository type(리포지토리 유형)에서 사용할 리포지토리 유형을 선택합니다. 위의 예제를 사용하는 경우에는 Http Archive(Http 아카이브)를 선택합니다.

  7. 리포지토리 URL에 이전 단계에서 생성한 쿡북이 저장된 리포지토리를 입력합니다. 위의 예제를 사용하는 경우에는 https://s3.amazonaws.com/aws-cloudwatch/downloads/CloudWatchLogs-Cookbooks.zip를 입력합니다.

  8. Add stack(스택 추가)을 선택해서 스택을 생성합니다.

3단계: IAM 역할 확대

AWS OpsWorks 인스턴스에서 CloudWatch Logs를 사용하려면 인스턴스에서 사용되는 IAM 역할을 확대해야 합니다.

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 Policies를 선택한 후 Create Policy를 선택합니다.

  3. 정책 생성 페이지의 Create Your Own Policy(자체 정책 생성)에서 선택을 선택합니다. 사용자 지정 정책 생성에 대한 자세한 내용은 Amazon EC2 사용 설명서Amazon EC2에 대한 IAM 정책을 참조하세요.

  4. 정책 검토 페이지의 정책 이름에 정책 이름을 입력합니다.

  5. 정책 문서에 다음 정책을 붙여넣습니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
  6. 정책 생성(Create Policy)을 선택합니다.

  7. 탐색 창에서 역할을 선택한 다음, 콘텐츠 창의 역할 이름에서 AWS OpsWorks 스택에서 사용되는 인스턴스 역할의 이름을 선택합니다. 스택 설정에서 스택에서 사용되는 역할을 찾을 수 있습니다(기본값 aws-opsworks-ec2-role).

    참고

    확인란이 아니라 사용자 이름을 선택합니다.

  8. 권한 탭의 Managed Policies(관리형 정책)에서 정책 연결을 선택합니다.

  9. 정책 연결 창의 테이블 헤더(필터검색 옆에 있음)에서 정책 유형Customer Managed Policies(고객 관리형 정책)를 선택합니다.

  10. 고객 관리형 정책에서 위에서 생성한 IAM 정책을 선택하고 정책 연결을 선택합니다.

    사용자 및 정책에 대한 자세한 내용은 IAM 사용 설명서IAM 사용자 및 그룹IAM 정책 관리를 참조하세요.

4단계: 계층 추가

  1. AWS OpsWorks 콘솔(https://console.aws.amazon.com/opsworks/)을 엽니다.

  2. 탐색 창에서 계층을 선택합니다.

  3. 콘텐츠 창에서 계층을 선택하고 Add layer(계층 추가)를 선택합니다.

  4. OpsWorks 탭의 Layer type(계층 유형)에서 사용자 지정을 선택합니다.

  5. 이름Short name(짧은 이름) 필드에서 계층의 긴 이름과 짧은 이름을 입력한 다음 Add layer(계층 추가)를 선택합니다.

  6. 레시피(Recipes) 탭의 사용자 지정 Chef 레시피(Custom Chef Recipes)에는 설정(Setup), 구성(Configure), 배포(Deploy), 배포 취소(Undeploy), 종료(Shutdown) 등 AWS OpsWorks 수명 주기 이벤트에 해당하는 여러 개의 제목이 있습니다. AWS OpsWorks는 연관된 레시피를 실행하는 인스턴스 수명 주기의 중요 지점에서 이러한 이벤트를 트리거합니다.

    참고

    위의 제목들이 보이지 않으면 Custom Chef Recipes(사용자 지정 Chef 레시피)로 가서 편집을 선택합니다.

  7. 설정 옆에 logs::config, logs::install을 입력하고 +를 선택하여 목록에 추가한 다음 저장을 선택합니다.

    AWS OpsWorks는 인스턴스 부팅이 끝나면 즉시 이 계층의 새 인스턴스 각각에서 이 레시피를 실행합니다.

5단계: 인스턴스 추가

이 계층은 인스턴스를 구성하는 방법을 제어만 합니다. 해당 계층에 몇몇 인스턴스를 추가하고 이를 시작해야 합니다.

  1. AWS OpsWorks 콘솔(https://console.aws.amazon.com/opsworks/)을 엽니다.

  2. 탐색 창에서 인스턴스를 선택한 다음 계층으로 가서 + 인스턴스를 선택합니다.

  3. 기본 설정을 수락하고 Add Instance(인스턴스 추가)를 선택해서 해당 계층에 인스턴스를 추가합니다.

  4. 해당 행의 작업 열에서 시작을 클릭해서 인스턴스를 시작합니다.

    AWS OpsWorks는 새 EC2 인스턴스를 시작하고 CloudWatch Logs를 구성합니다. 준비가 되면 인스턴스가 온라인 상태로 바뀝니다.

6단계: 로그 보기

에이전트가 몇 분 동안 실행된 이후에 CloudWatch 콘솔에 새로 생성된 로그 그룹 및 로그 스트림이 나타납니다.

자세한 정보는 CloudWatch Logs로 전송된 로그 데이터 보기 섹션을 참조하세요.