λ΄λ λ¦μ ECS ν΅ν©μ Amazon ECS νκ²½μ μ±λ₯ λ°μ΄ν°λ₯Ό λ³΄κ³ νκ³ νμν©λλ€.
μ€μΉ κ°μ
μ€μΉνκΈ° μ μ μΈνλΌ μμ΄μ νΈ(newrelic-infra)κ° λ€μ λ κ°μ§ μμ μ νμ λν΄ λ°°ν¬λλ λ°©μμ κ°κ΄μ μΌλ‘ μ΄ν΄νλ λ° λμμ΄ λ μ μμ΅λλ€.
EC2 and EXTERNAL (ECS Anywhere) launch type:
λ΄λ λ¦ μμ΄μ νΈλ λ°λͺ¬ μ€μΌμ€λ§ μ λ΅μ μ¬μ©νμ¬ μλΉμ€λ‘ ECS ν΄λ¬μ€ν°μ λ°°ν¬λ©λλ€. (AWS λ¬Έμ μ€λͺ μ°Έμ‘°) κ·Έλ¬λ©΄ ν΄λ¬μ€ν°μ λͺ¨λ ECS μΈμ€ν΄νΈμ μμ΄μ νΈκ° μ€μΉλμ΄ ECSμ Docker 컨ν μ΄λλ₯Ό λͺ¨λν°λ§ν©λλ€.
AWS Fargate launch type:
λͺ¨λν°λ§ν λͺ¨λ μμ μμ μμ΄μ νΈλ μ¬μ΄λμΉ΄λ‘ λ°°ν¬λ©λλ€. μ ν μ¬ν: AWSκ° μ¬μ΄λμΉ΄λ₯Ό μ μνλ λ°©λ²μ λν΄ μμΈν μμ보μμμ€.
μ€μΉ μ΅μ
μνλ μ€μΉ λ°©λ² μ ν:
CloudFormationμ μ¬μ© μ€μΉ
AWS CloudFormationμ μ¬μ©ν΄ μ€μΉν μ μλλ‘ EC2, EXTERNAL(ECS Anywhere) λ° AWS Fargate μμ μ νμ AWS κ³μ μ ECS ν΅ν©μ μ€μΉνλ λͺ κ°μ§ CloudFormation ν νλ¦Ώμ μ 곡ν©λλ€.
CloudFormationμ μ¬μ©νμ¬ μ€μΉνλ €λ©΄:
ECS ν΅ν© μμ μ λ±λ‘νλ €λ©΄ μ΄ μ€νμ λ°°ν¬ν©λλ€. μνλ μ§μμ μ€νμ΄ λ°°ν¬λλμ§ νμΈν©λλ€. μ΄ μ€νμ λ€μ 리μμ€λ₯Ό μμ±ν©λλ€.
λ΄λ λ¦
μ μ μ₯νλ μν¬λ¦Ώ
λΌμ΄μ μ€ ν€μ μ‘μΈμ€νκΈ° μν μ μ± μ λλ€.
λΌμ΄μ μ€ ν€μ λν μ‘μΈμ€ κΆνμ΄ μλ ECS μμ
ExecutionRoleλ‘ μ¬μ©ν μΈμ€ν΄μ€ μν μ λλ€.EC2 λ° μΈλΆ(ECS Anywhere) μμ μ νμ κ²½μ°: λ΄λ λ¦ Infrastructure ECS ν΅ν© μμ μ λ±λ‘ν©λλ€.
μμ μ νμ λν μΆκ° μ§μΉ¨μ λ°λ¦ λλ€.
μλ£λλ©΄ λ€μ λ¨κ³λ₯Ό μ°Έμ‘°νμμμ€.
μλ μ€ν¬λ¦½νΈλ‘ μ€μΉ
ν κ°μ§ μ€μΉ μ΅μ μ μ€μΉ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ κ²μ λλ€. μλ μ€μΉ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ €λ©΄:
ECS ν΅ν© μ€μΉ νλ‘κ·Έλ¨μ λ€μ΄λ‘λν©λλ€.
bash$curl -O https://download.newrelic.com/infrastructure_agent/integrations/ecs/newrelic-infra-ecs-installer.shμ€μΉ νλ‘κ·Έλ¨μ μ€ν κΆνμ μΆκ°ν©λλ€.
bash$chmod +x newrelic-infra-ecs-installer.shλ¬Έμ λ° μꡬ μ¬νμ λ³΄λ €λ©΄
-hλ‘ μ€νν©λλ€.bash$./newrelic-infra-ecs-installer.sh -hAWS νλ‘νμΌμ΄ ECS ν΄λ¬μ€ν°κ° μμ±λ λμΌν 리μ μ κ°λ¦¬ν€λμ§ νμΈν©λλ€.
bash$aws configure get regionus-east-1$aws ecs list-clustersYOUR_CLUSTER_ARNSarn:aws:ecs:us-east-1:YOUR_AWS_ACCOUNT:cluster/YOUR_CLUSTERλ° ν΄λ¬μ€ν° μ΄λ¦μ μ§μ νμ¬ μ€μΉ νλ‘κ·Έλ¨μ μ€νν©λλ€.
Fargate μμ μ νμ λν μΆκ° λ¨κ³(EC2 μμ μ ν μλ):
λ°°ν¬ν μ¬μ΄λμΉ΄ 컨ν μ΄λκ° μλ μμ μ μ μμλ₯Ό λ€μ΄λ‘λν©λλ€.
bash$curl -O https://download.newrelic.com/infrastructure_agent/integrations/ecs/newrelic-infra-ecs-fargate-example-latest.jsonν
Gravitonμ κ²½μ°,
"cpuArchitecture": "X86_64"λ₯Ό"cpuArchitecture": "ARM64"λ‘ λ°κΏλλ€.λ°©κΈ μμ±λ
NewRelicECSTaskExecutionRoleμ μμ μ€ν μν λ‘ μ¬μ©ν΄μΌ νλ κ²μ μ£Όμνμμμ€. μν μ μ°κ²°λ μ μ± (λͺ¨λ μμ μ ν):NewRelicSSMLicenseKeyReadAccessλΌμ΄μ μ€ ν€λ₯Ό μ¬μ©ν΄ SSMμ λν μ‘μΈμ€λ₯Ό νμ±νν μ μλλ‘ ν©λλ€.AmazonECSTaskExecutionRolePolicy
κ·Έλ° λ€μ, λͺ¨λν°λ§νλ €λ 컨ν μ΄λλ₯Ό μ¬μ΄λμΉ΄λ‘ μΆκ°ν μ μμ΅λλ€.
μλ£λλ©΄ λ€μ λ¨κ³λ₯Ό μ°Έμ‘°νμμμ€.
μλ μ€μΉ
ν κ°μ§ μ€μΉ μ΅μ
μ μλ μ€μΉ νλ‘κ·Έλ¨ μ€ν¬λ¦½νΈμμ μννλ λ¨κ³λ₯Ό μλμΌλ‘ μννλ κ²μ
λλ€. awscli ν΄μ μ¬μ©νμ¬ μ΄ μμ
μ μννλ λ°©λ²μ μ€λͺ
ν©λλ€.
AWS νλ‘νμΌμ΄ ECS ν΄λ¬μ€ν°κ° μμ±λ λμΌν 리μ μ κ°λ¦¬ν€λμ§ νμΈν©λλ€.
bash$aws configure get regionus-east-1$aws ecs list-clustersYOUR_CLUSTER_ARNSarn:aws:ecs:us-east-1:YOUR_AWS_ACCOUNT:cluster/YOUR_CLUSTERλ₯Ό Systems Manager(SSM) λ§€κ°λ³μλ‘ μ μ₯ν©λλ€.
bash$aws ssm put-parameter \>--name "/newrelic-infra/ecs/license-key" \>--type SecureString \>--description 'New Relic license key for ECS monitoring' \>--value "NEW_RELIC_LICENSE_KEY"λΌμ΄μ μ€ ν€ νλΌλ―Έν°μ μ‘μΈμ€νκΈ° μν IAM μ μ± μ μμ±ν©λλ€.
bash$aws iam create-policy \>--policy-name "NewRelicSSMLicenseKeyReadAccess" \>--policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameters\"],\"Resource\":[\"ARN_OF_LICENSE_KEY_PARAMETER\"]}]}" \>--description "Provides read access to the New Relic SSM license key parameter"μμ μ€ν μν λ‘ μ¬μ©ν IAM μν μ μμ±ν©λλ€.
bash$aws iam create-role \>--role-name "NewRelicECSTaskExecutionRole" \>--assume-role-policy-document '{"Version":"2008-10-17","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"},"Action":"sts:AssumeRole"}]}' \>--description "ECS task execution role for New Relic infrastructure"μ μ±
NewRelicSSMLicenseKeyReadAccessλ°AmazonECSTaskExecutionRolePolicyλ₯Ό μν μ μ°κ²°ν©λλ€.bash$aws iam attach-role-policy \>--role-name "NewRelicECSTaskExecutionRole" \>--policy-arn "POLICY_ARN"μμΈν μ§μΉ¨μ λ³΄λ €λ©΄ μμ μ νμ μ νν©λλ€.
μλ£λλ©΄ λ€μ λ¨κ³λ₯Ό μ°Έμ‘°νμμμ€.
μ΄ λ¬Έμκ° μ€μΉνλλ° λμμ΄ λμ ¨λμ?
μ€μΉ ν λ€μ λ¨κ³
μ΄ ν΅ν©μ μ€μΉν ν:
- λͺ λΆ μ λ κΈ°λ€λ¦° λ€μ UIμμ λ°μ΄ν°λ₯Ό μ°Ύμ΅λλ€.
- κΆμ₯ μ¬ν: ν΄λ¬μ€ν° λ° μλΉμ€μ λν μ 보λ₯Ό ν¬ν¨νμ¬ λ€λ₯Έ ECS λ°μ΄ν°λ₯Ό κ°μ Έμ€λ ECS ν΄λΌμ°λ ν΅ν©μ μ€μΉν©λλ€.
- κΆμ₯ μλ¦Ό 쑰건μ μ°Έμ‘°ν©λλ€.
- μ΄ νλ‘μΈμ€μμ μμ±λ AWS 리μμ€λ₯Ό νμ ν©λλ€.
μμ±λ AWS 리μμ€
κΈ°λ³Έ/κΆμ₯ κ°μ μ¬μ©νμ¬ ECS ν΅ν©μ μ€μΉνλ©΄ AWSμμ λ€μμ μνν©λλ€.
Systems Manager(SSM) λ§€κ°λ³μ
/newrelic-infra/ecs/license-keyλ₯Ό μμ±ν©λλ€. μ΄ μμ€ν μλ λ΄λ λ¦κ° ν¬ν¨λμ΄ μμ΅λλ€.
λΌμ΄μ μ€ ν€λ‘ SSM λ§€κ°λ³μμ λν μ‘μΈμ€λ₯Ό νμ±ννλ IAM μ μ±
NewRelicSSMLicenseKeyReadAccessλ₯Ό μμ±ν©λλ€.μμ μ€ν μν λ‘ μ¬μ©λλ IAM μν
NewRelicECSTaskExecutionRoleμ μμ±ν©λλ€. μν μ μ°κ²°λ μ μ± :NewRelicSSMLicenseKeyReadAccess(μ€μΉ νλ‘κ·Έλ¨μΌλ‘ μμ±)AmazonECSTaskExecutionRolePolicy
EC2 λ° μΈλΆ(ECS Anywhere) μμ μ νμ λν
newrelic-infraECS μμ μ μλ₯Ό λ±λ‘ν©λλ€.EC2 μμ μ νμ κ²½μ° λ€μλ μνλ©λλ€.
- λ°λͺ¬ μ€μΌμ€λ§ μ λ΅ λ° EC2 μμ μ νμ μ¬μ©νμ¬ λ±λ‘λ μμ
μ λν μλΉμ€
newrelic-infraλ₯Ό μμ±ν©λλ€.
- λ°λͺ¬ μ€μΌμ€λ§ μ λ΅ λ° EC2 μμ μ νμ μ¬μ©νμ¬ λ±λ‘λ μμ
μ λν μλΉμ€
EXTERNAL(ECS Anywhere) μμ μ νμ κ²½μ°, μ΄ μμ λ μνλ©λλ€.
- λ°λͺ¬ μ€μΌμ€λ§ μ λ΅ λ° EXTERNAL(ECS Anywhere) μμ μ νμ μ¬μ©νμ¬ λ±λ‘λ μμ
μ λν μλΉμ€
newrelic-infra-externalμ μμ±ν©λλ€.
- λ°λͺ¬ μ€μΌμ€λ§ μ λ΅ λ° EXTERNAL(ECS Anywhere) μμ μ νμ μ¬μ©νμ¬ λ±λ‘λ μμ
μ λν μλΉμ€