본문 바로가기

퍼블릭 클라우드

CloudWatch 에이전트를 사용하여 Nginx와 PHP-FPM의 로그 데이터를 CloudWatch에 수집하고 저장하는 방법

반응형

CloudWatch 에이전트를 사용하여 Nginx와 PHP-FPM의 로그 데이터를 CloudWatch에 수집하고 저장하는 방법

Amazon CloudWatch는 AWS의 모니터링 및 관측 서비스로서, 다양한 리소스의 성능 지표와 로그 데이터를 수집하고 모니터링할 수 있게 해주는 도구입니다. Amazon CloudWatch Agent는 EC2 인스턴스 또는 온프레미스 서버에서 작동하는 데몬으로서, 서버의 로그 및 메트릭 데이터를 수집하여 Amazon CloudWatch에 보내는 역할을 합니다.

1. CloudWatch Logs 그룹 생성

CloudWatch Logs에서 로그 데이터를 저장할 그룹을 생성합니다. AWS Management Console을 사용하거나 AWS CLI를 통해 그룹을 생성할 수 있습니다.

  • AWS Management Console에 로그인하여 CloudWatch 서비스로 이동합니다.
  • 그런 다음 왼쪽 네비게이션 메뉴에서 "Logs"를 선택하고 "Create log group" 버튼을 클릭하여 로그 그룹을 생성합니다.
  • 로그 그룹 이름을 지정하고 "Create" 버튼을 클릭하여 로그 그룹을 생성합니다.
    • nginx access log: NginxLogAccess
    • php-fpm access log: PHPFpmLogAccess

c1

2. CloudWatch Agent 설치

아래 명령을 실행하여 CloudWatch Agent를 설치합니다.

sudo yum install -y amazon-cloudwatch-agent
$ systemctl status amazon-cloudwatch-agent
● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent
   Loaded: loaded (/etc/systemd/system/amazon-cloudwatch-agent.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
systemctl --now enable amazon-cloudwatch-agent
$ systemctl status amazon-cloudwatch-agent
● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent
   Loaded: loaded (/etc/systemd/system/amazon-cloudwatch-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-08-10 23:12:02 KST; 6s ago
 Main PID: 19302 (amazon-cloudwat)
   CGroup: /system.slice/amazon-cloudwatch-agent.service
           └─19302 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml...

Aug 10 23:12:02 web-01 systemd[1]: Started Amazon CloudWatch Agent.
Aug 10 23:12:02 web-01 start-amazon-cloudwatch-agent[19302]: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json does not ...ng it.
Aug 10 23:12:02 web-01 start-amazon-cloudwatch-agent[19302]: I! Detecting run_as_user...
Hint: Some lines were ellipsized, use -l to show in full.
$ ls -l /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
ls: cannot access /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json: No such file or directory
728x90

3. CloudWatch Agent 구성 파일 생성

에이전트의 구성 파일을 생성하고 편집합니다.

  • 구성 파일은 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json에 위치합니다.
sudo vim /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  • 예제 구성 파일
{
    "agent": {
        "run_as_user": "root"
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/nginx/access.log",
                        "log_group_name": "NginxLogAccess",
                        "log_stream_name": "nginx-access"
                    },
                    {
                        "file_path": "/var/log/php-fpm/www.log",
                        "log_group_name": "PHPFpmLogAccess",
                        "log_stream_name": "php-fpm-www"
                    }
                ]
            }
        }
    }
}

위에서 "YourLogGroupName"은 CloudWatch Logs에 생성한 로그 그룹의 이름으로 변경해야 합니다.

4. CloudWatch Agent 실행 및 구성 적용

다음 명령을 사용하여 CloudWatch Agent를 실행하고 구성을 적용합니다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
****** processing amazon-cloudwatch-agent ******
I! Trying to detect region from ec2 D! [EC2] Found active network interface Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json.tmp
Start configuration validation...
2023/08/10 23:20:37 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json.tmp ...
2023/08/10 23:20:37 I! Valid Json input schema.
2023/08/10 23:20:37 Configuration validation first phase succeeded
I! Detecting run_as_user...
I! Trying to detect region from ec2
D! [EC2] Found active network interface
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
Configuration validation second phase succeeded
Configuration validation succeeded

위 명령을 실행하면 CloudWatch Agent가 구성 파일을 읽고 로그 데이터를 수집하여 CloudWatch Logs로 보내게 됩니다.

5. CloudWatch Logs에서 로그 확인

AWS Management Console에서 CloudWatch Logs로 이동하여 생성한 로그 그룹에서 로그 데이터를 확인할 수 있습니다.

c2

이렇게 하면 CloudWatch Agent가 EC2 인스턴스에서 로그 데이터를 수집하여 CloudWatch Logs로 전송하도록 설정됩니다. 위 단계를 따라가면 CloudWatch Agent를 설치하고 구성할 수 있습니다.

 

CloudWatch Management Console에서 생성한 로그 그룹을 선택하고 해당 로그 그룹에서 로그 데이터를 확인할 수 있습니다.

이러한 과정을 통해 Nginx와 PHP-FPM의 로그 데이터를 CloudWatch에 수집하여 저장할 수 있습니다. 이것은 애플리케이션 모니터링과 문제 해결에 유용한 도구입니다.

 

728x90
반응형