CloudWatchLogs에 Rails 애플리케이션의 로그 표시

개시하다
CloudWatch에서 Rails 응용 프로그램을 사용하는 EC2의 로그를 표시하는 절차를 요약했습니다.
공식 문서를 바탕으로 상세한 부분도 설명한다.
CloudWatchLogs의 이점
  • 서버가 여러 개인 경우에도 로그를 한 곳에 모아 관리할 수 있습니다.여러 서버에 하나씩 연결할 필요가 없다.
  • EventBridge 등 다른 AWS 리소스와의 협업은 간단합니다.오류가 발생하면 슬랙에 알릴 수도 있습니다.
  • 고급 검색을 위해 Logs Insight 사용 가능

  • 전제 조건
  • AWS 계정 생성
  • EC2 인스턴스 생성
  • OS: CentOS 7.6.1810
  • 프로그램 개요
  • 정책 및 역할 생성
  • EC2에 롤러 부착
  • EC2에 CloudWatch 에이전트 설치
  • 프록시 설정 파일 수정
  • EC2에 액세스 키 등록
  • CloudWatch 에이전트 시작
  • 정책 및 역할 작성
    우선 정책 생성
    1. 선택IAM > ロール > ポリシーを作成1. JSON 태그를 선택하고 다음 텍스트를 붙여넣습니다. 다음: 태그로
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents",
            "logs:DescribeLogStreams"
        ],
          "Resource": [
            "*"
        ]
      }
     ]
    }
    
    3. 입력하지 않음, 다음: 확인
    4. 이름 및 설명 입력CloudWatchLogsPolicy, 정책 작성
    다음 역할 만들기
    1. 선택IAM > ロール > ロールを作成1. ユースケースの選択에서 EC2를 선택하고 다음 단계: 액세스 권한
    1. 정책 검색에서 방금 작성한 CloudWatchLogsPolicy을 선택하고 다음 단계: 탭으로 이동
    1. 아무것도 입력하지 않음, 다음: 확인
    1. 캐릭터 이름과 캐릭터 설명서EC2Role를 입력하고 캐릭터 만들기
    EC2에 볼륨 첨부

  • 선택EC2 > インスタンス > (対象のインスタンス詳細画面) > アクション(画面右上) > セキュリティ > IAMロールを変更
  • 방금 IAM 스크롤에서 만든 EC2Role를 선택하여 보관
  • EC2에 액세스 키 등록
    EC2 및 AWS를 위한 액세스 키 등록
    # EC2にssh接続後、設定ファイルを開く
    vi ~/.aws/credentials
    
    #アクセスキーとシークレットアクセスキーを記述する
    [default]
    aws_access_key_id = **********************
    aws_secret_access_key = **********************
    
    EC2에 CloudWatch 에이전트 설치
    OS마다 다르게 설치됩니다.
    이 문서에서 CentOS 7 은다음은 6.11810에 설치하는 방법에 대해 설명합니다.
    다른 OS에 설치하려면 공식을 참조하십시오.
    https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
    # EC2インスタンスにssh接続した後、以下コマンドを実行
    
    # setup用のシェルをダウンロード
    curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
    
    # setupシェルを実行
    # 選択肢を問われたら適当に回答。後で設定ファイルを編集するので適当に答えて大丈夫です。
    sudo python ./awslogs-agent-setup.py --region ap-northeast-1
    
    # 上記コマンドでエラー出たらこちらを実行
    sudo python3 ./awslogs-agent-setup.py --region ap-northeast-1
    
    프록시 구성 파일 수정
    EC2에서 CloudWatchLogs로 로그를 보낼 때 설정 파일 수정
    필자는 CloudWatchLogs에서 EC2에 활용된 Rails 응용의 로그를 보고 싶어서 다음과 같이 썼다.
    # 設定ファイルであるawslog.confを開く
    vi /var/awslogs/etc/awslog.conf
    
    # ファイルの末尾に[/var/log/messages]から始まる部分があるのでそこを以下に書き換える
    [/aws/ec2/hoge_production]
    # 日付のフォーマット。お好きな形式で。
    datetime_format = %b %d %H:%M:%S
    # EC2インスタンスからCloudWatchLogsに送るログファイルを指定する。今回はhogeアプリのproduction.logを指定。
    file = /var/www/applications/workspace/hoge/log/production.log
    buffer_duration = 5000
    log_stream_name = {instance_id}
    initial_position = start_of_file
    log_group_name =/aws/ec2/hoge_production
    
    프록시 설정 파일에 대한 자세한 정보를 알고 싶으신 분들은 이쪽을 보세요.
    https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AgentReference.html
    CloudWatch 에이전트 시작
    프록시 구성 파일 수정 후 프록시 시작
    # サービス起動
    sudo service awslogs start
    
    # システム起動時に毎回自動でサービス起動したい場合はこちらも実行
    sudo chkconfig awslogs on
    
    CloudWatchLogs 확인CloudWatch > Log groups > /aws/ec2/hoge_production(エージェント設定ファイルのlog_group_name) > Log stream에서 로그 확인
    Rails 프로그램에서 토출된 EC2의 로그는 클라우드 워치 로그에 표시될 것입니다!
    로그가 작성되지 않은 경우 EC2의 /var/log/awslogs.log를 보고 디버깅하십시오.
    참고 문헌

    좋은 웹페이지 즐겨찾기