

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

# AWS 관리형 수집기를 사용하여 지표 수집
<a name="AMP-collector"></a>

Amazon Managed Service for Prometheus의 일반적인 사용 사례는 Amazon Elastic Kubernetes Service(Amazon EKS)에서 관리되는 Kubernetes 클러스터를 모니터링하는 것입니다. Kubernetes 클러스터와 Amazon EKS 내에서 실행되는 많은 애플리케이션은 Prometheus 호환 스크레이퍼가 액세스할 수 있도록 지표를 자동으로 내보냅니다.

**참고**  
Amazon EKS는 클러스터 내에서 API 서버 지표, `kube-controller-manager` 지표 및 `kube-scheduler` 지표를 제공합니다. Kubernetes 환경에서 실행되는 다른 많은 기술 및 애플리케이션도 Prometheus 호환 지표를 제공합니다. 체계적으로 문서화된 내보내기 목록은 Prometheus 문서에서 [내보내기 및 통합](https://prometheus.io/docs/instrumenting/exporters/)을 참조하세요.

Amazon Managed Service for Prometheus는 에이전트 없는 완전 관리형 스크레이퍼 또는 *수집기*를 제공하여 Prometheus 호환 지표를 자동으로 검색하고 가져옵니다. 에이전트나 스크레이퍼를 관리, 설치, 패치 또는 유지 관리할 필요가 없습니다. Amazon Managed Service for Prometheus 수집기는 Amazon EKS 클러스터에 대해 신뢰할 수 있고 안정적이며 가용성 높고 자동으로 확장되는 지표 모음을 제공합니다. Amazon Managed Service for Prometheus 관리형 수집기는 EC2 및 Fargate를 비롯한 Amazon EKS 클러스터와 함께 작동합니다.

Amazon Managed Service for Prometheus 수집기는 스크레이퍼를 생성할 때 지정된 서브넷별로 탄력적 네트워크 인터페이스(ENI)를 생성합니다. 수집기는 이러한 ENI를 통해 지표를 스크래핑하고 `remote_write`를 사용하여 VPC 엔드포인트를 통해 Amazon Managed Service for Prometheus WorkSpace로 데이터를 푸시합니다. 스크래핑한 데이터는 퍼블릭 인터넷을 통해 전송되지 않습니다.

다음 주제에서는 Amazon EKS 클러스터에서 Amazon Managed Service for Prometheus 수집기를 사용하는 방법 및 수집된 지표에 대한 자세한 정보를 제공합니다.

**Topics**
+ [

# Amazon EKS용 관리형 수집기 설정
](AMP-collector-how-to.md)
+ [

# Amazon MSK용 관리형 Prometheus 수집기 설정
](prom-msk-integration.md)
+ [

# Prometheus 호환 지표란 무엇입니까?
](prom-compatible-metrics.md)
+ [

# 제공형 로그를 사용하여 수집기 모니터링
](AMP-collector-vended-logs.md)

# Amazon EKS용 관리형 수집기 설정
<a name="AMP-collector-how-to"></a>

Amazon Managed Service for Prometheus 수집기를 사용하려면 Amazon EKS 클러스터에서 지표를 검색하고 가져오는 스크레이퍼를 생성해야 합니다. Amazon Managed Streaming for Apache Kafka와 통합되는 스크레이퍼를 생성할 수도 있습니다. 자세한 내용은 [Amazon MSK 통합](https://docs.aws.amazon.com/prometheus/latest/userguide/prom-msk-integration.html)을 참조하세요.
+ Amazon EKS 클러스터 생성의 일부로 스크레이퍼를 생성할 수 있습니다. 스크레이퍼 생성을 포함한 Amazon EKS 클러스터를 생성하는 방법에 대한 자세한 내용은 Amazon EKS 사용 설명서의 [Amazon EKS 클러스터 생성](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)을 참조하세요.**
+  AWS API를 사용하거나를 사용하여 프로그래밍 방식으로 자체 스크레이퍼를 생성할 수 있습니다 AWS CLI.

Amazon Managed Service for Prometheus 수집기는 Prometheus 호환 지표를 스크래핑합니다. Prometheus 호환 지표에 대한 자세한 내용은 [Prometheus 호환 지표란 무엇입니까?](prom-compatible-metrics.md) 섹션을 참조하세요. Amazon EKS 클러스터는 API 서버에 대한 지표를 제공합니다. Kubernetes 버전이 `1.28` 이상인 Amazon EKS 클러스터의 경우 `kube-scheduler` 및 `kube-controller-manager`에 대한 지표도 제공합니다. 자세한 내용은 *Amazon EKS 사용 설명서*에서 [컨트롤 플레인 원시 지표를 Prometheus 형식으로 가져오기](https://docs.aws.amazon.com/eks/latest/userguide/view-raw-metrics.html#scheduler-controller-metrics)를 참조하세요.

**참고**  
클러스터에서 지표를 스크래핑하면 네트워크 사용에 대한 요금이 부과될 수 있습니다. 이러한 비용을 최적화하는 한 가지 방법은 제공된 지표(예: gzip 사용)를 압축하도록 `/metrics` 엔드포인트를 구성하여 네트워크를 통해 이동해야 하는 데이터를 줄이는 것입니다. 이를 수행하는 방법은 지표를 제공하는 애플리케이션 또는 라이브러리에 따라 달라집니다. 일부 라이브러리는 기본적으로 gzip입니다.

다음 주제에서는 스크레이퍼를 생성, 관리 및 구성하는 방법을 설명합니다.

**Topics**
+ [

## 스크레이퍼 생성
](#AMP-collector-create)
+ [

## Amazon EKS 클러스터 구성
](#AMP-collector-eks-setup)
+ [

## 스크레이퍼 찾기 및 삭제
](#AMP-collector-list-delete)
+ [

## Scraper 구성
](#AMP-collector-configuration)
+ [

## 스크레이퍼 구성 문제 해결
](#AMP-collector-troubleshoot)
+ [

## 스크레이퍼 제한 사항
](#AMP-collector-limits)

## 스크레이퍼 생성
<a name="AMP-collector-create"></a>

Amazon Managed Service for Prometheus 수집기는 Amazon EKS 클러스터에서 지표를 검색하고 수집하는 스크레이퍼로 구성됩니다. Amazon Managed Service for Prometheus가 스크레이퍼를 관리하므로 인스턴스, 에이전트 또는 스크레이퍼를 직접 관리할 필요 없이 필요한 확장성, 보안 및 신뢰성을 제공합니다.

스크레이퍼를 생성하는 방법은 세 가지입니다.
+ [Amazon EKS 콘솔을 통해 Amazon EKS 클러스터를 생성](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)하고 Prometheus 지표를 활성화하도록 선택하면 스크레이퍼가 자동으로 생성됩니다.
+ 기존 클러스터의 경우 Amazon EKS 콘솔에서 스크레이퍼를 생성할 수 있습니다. [Amazon EKS 콘솔](https://console.aws.amazon.com/eks/home#/clusters)에서 클러스터를 연 다음 **관찰성** 탭에서 **스크레이퍼 추가**를 선택합니다.

  사용 가능한 설정에 대한 자세한 내용은 *Amazon EKS 사용 설명서*에서 [Prometheus 지표 켜기](https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html#turn-on-prometheus-metrics)를 참조하세요.
+  AWS API 또는를 사용하여 스크레이퍼를 생성할 수 있습니다 AWS CLI.

  이러한 옵션은 다음 절차에서 설명합니다.

나만의 스크레이퍼를 만들기 위한 몇 가지 사전 조건은 다음과 같습니다.
+ Amazon EKS 클러스터가 생성되어 있어야 합니다.
+ Amazon EKS 클러스터에 [클러스터 엔드포인트 액세스 제어](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)가 프라이빗 액세스를 포함하도록 설정되어 있어야 합니다. 프라이빗 및 퍼블릭을 포함할 수 있지만 프라이빗은 반드시 포함해야 합니다.
+ Amazon EKS 클러스터가 상주하는 Amazon VPC에 [DNS가 활성화](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html)되어 있어야 합니다.

**참고**  
클러스터는 Amazon 리소스 이름(ARN)으로 스크레이퍼와 연결됩니다. 클러스터를 삭제한 다음 이름이 같은 새 클러스터를 생성하면 ARN이 새 클러스터에 재사용됩니다. 이로 인해 스크레이퍼는 새 클러스터에 대한 지표를 수집하려고 시도합니다. 클러스터 삭제와 별도로 [스크레이퍼를 삭제](#AMP-collector-list-delete)합니다.

------
#### [ AWS API ]

** AWS API를 사용하여 스크레이퍼를 생성하려면**

`CreateScraper` API 작업을 사용하여 AWS API로 스크레이퍼를 생성합니다. 다음 예제에서는 `us-west-2` 리전에서 스크레이퍼를 생성합니다. AWS 계정, 워크스페이스, 보안 및 Amazon EKS 클러스터 정보를 자체 ID로 바꾸고 스크레이퍼에 사용할 구성을 제공해야 합니다.

**참고**  
보안 그룹 및 서브넷은 연결하려는 클러스터의 보안 그룹 및 서브넷으로 설정되어야 합니다.  
2개 이상의 가용 영역에 있는 2개 이상의 서브넷을 포함해야 합니다.

`scrapeConfiguration`은 base64로 인코딩된 Prometheus 구성 YAML 파일입니다. `GetDefaultScraperConfiguration` API 작업을 통해 범용 구성을 다운로드할 수 있습니다. `scrapeConfiguration`의 형식에 대한 자세한 정보는 [Scraper 구성](#AMP-collector-configuration) 섹션을 참조하세요.

```
POST /scrapers HTTP/1.1
Content-Length: 415 
Authorization: AUTHPARAMS
X-Amz-Date: 20201201T193725Z
User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6

{
    "alias": "myScraper",
    "destination":  {
        "ampConfiguration": {
            "workspaceArn": "arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id"
        }
    },
    "source": {
        "eksConfiguration": {
            "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name",
            "securityGroupIds": ["sg-security-group-id"],
            "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"]
        }
    },
    "scrapeConfiguration": {
        "configurationBlob": <base64-encoded-blob>
    }
}
```

------
#### [ AWS CLI ]

** AWS CLI를 사용하여 스크레이퍼를 생성하려면**

 AWS CLI에서는 `create-scraper` 명령을 사용하여 스크레이퍼를 생성합니다. 다음 예제에서는 `us-west-2` 리전에서 스크레이퍼를 생성합니다. AWS 계정, 워크스페이스, 보안 및 Amazon EKS 클러스터 정보를 자체 ID로 바꾸고 스크레이퍼에 사용할 구성을 제공해야 합니다.

**참고**  
보안 그룹 및 서브넷은 연결하려는 클러스터의 보안 그룹 및 서브넷으로 설정되어야 합니다.  
2개 이상의 가용 영역에 있는 2개 이상의 서브넷을 포함해야 합니다.

`scrape-configuration`은 base64로 인코딩된 Prometheus 구성 YAML 파일입니다. `get-default-scraper-configuration` 명령을 통해 범용 구성을 다운로드할 수 있습니다. `scrape-configuration`의 형식에 대한 자세한 정보는 [Scraper 구성](#AMP-collector-configuration) 섹션을 참조하세요.

```
aws amp create-scraper \
  --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \
  --scrape-configuration configurationBlob=<base64-encoded-blob> \
  --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"
```

------

다음은 AWS API와 함께 사용할 수 있는 스크레이퍼 작업의 전체 목록입니다.
+ [CreateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_CreateScraper.html) API 작업으로 스크레이퍼를 생성합니다.
+ [ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API 작업으로 기존 스크레이퍼를 나열합니다.
+ [UpdateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_UpdateScraper.html) API 작업으로 스크레이퍼의 별칭, 구성 또는 대상을 업데이트합니다.
+ [DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) API 작업으로 스크레이퍼를 삭제합니다.
+ [DescribeScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DescribeScraper.html) API 작업으로 스크레이퍼에 대한 자세한 내용을 확인합니다.
+ [GetDefaultScraperConfiguration](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_GetDefaultScraperConfiguration.html) API 작업으로 스크레이퍼의 범용 구성을 확보합니다.

**참고**  
스크래핑하려는 Amazon EKS 클러스터는 Amazon Managed Service for Prometheus가 지표에 액세스하는 것을 허용하도록 구성해야 합니다. 다음 주제에서는 클러스터를 구성하는 방법을 설명합니다.

### 교차 계정 설정
<a name="cross-account-remote-write"></a>

Amazon EKS 클러스터와 Amazon Managed Service for Prometheus 워크스페이스가 서로 다른 계정에 있을 때 교차 계정 스크레이퍼를 생성하려면 다음 절차를 따릅니다. 예를 들어 소스 계정 `account_id_source`에는 Amazon EKS 클러스터가 포함되어 있고, 대상 계정 `account_id_target`에는 Amazon Managed Service for Prometheus 워크스페이스가 포함되어 있다고 가정합니다.

**교차 계정 설정에서 스크레이퍼를 생성하려면**

1. 소스 계정에서 `arn:aws:iam::account_id_source:role/Source` 역할을 생성하고 다음 신뢰 정책을 추가합니다.

   ```
   {
       "Effect": "Allow",
       "Principal": {
       "Service": [
           "scraper.aps.amazonaws.com"
        ]
       },
       "Action": "sts:AssumeRole",
       "Condition": {
           "ArnEquals": {
               "aws:SourceArn": "scraper_ARN"
           },
           "StringEquals": {
               "AWS:SourceAccount": "account_id"
           }
       }
   }
   ```

1. 소스(Amazon EKS 클러스터)와 대상(Amazon Managed Service for Prometheus 워크스페이스)의 모든 조합마다 `arn:aws:iam::account_id_target:role/Target` 역할을 생성하고 다음 신뢰 정책을 추가하여 [AmazonPrometheusRemoteWriteAccess](https://docs.aws.amazon.com/prometheus/latest/userguide/security-iam-awsmanpol.html) 권한을 부여해야 합니다.

   ```
   {
     "Effect": "Allow",
     "Principal": {
        "AWS": "arn:aws:iam::account_id_source:role/Source"
     },
     "Action": "sts:AssumeRole",
     "Condition": {
        "StringEquals": {
           "sts:ExternalId": "scraper_ARN"
         }
     }
   }
   ```

1. `--role-configuration` 옵션을 사용하여 스크레이퍼를 생성합니다.

   ```
   aws amp create-scraper \
     --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id_source:cluster/xarw,subnetIds=[subnet-subnet-id]}" \
     --scrape-configuration configurationBlob=<base64-encoded-blob> \
     --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id_target:workspace/ws-workspace-id'}"\
     --role-configuration '{"sourceRoleArn":"arn:aws:iam::account-id_source:role/Source", "targetRoleArn":"arn:aws:iam::account-id_target:role/Target"}'
   ```

1. 스크레이퍼 생성을 검증합니다.

   ```
   aws amp list-scrapers
   {
       "scrapers": [
           {
               "scraperId": "scraper-id",
               "arn": "arn:aws:aps:us-west-2:account_id_source:scraper/scraper-id",
               "roleArn": "arn:aws:iam::account_id_source:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraperInternal_cc319052-41a3-4",
               "status": {
                   "statusCode": "ACTIVE"
               },
               "createdAt": "2024-10-29T16:37:58.789000+00:00",
               "lastModifiedAt": "2024-10-29T16:55:17.085000+00:00",
               "tags": {},
               "source": {
                   "eksConfiguration": {
                       "clusterArn": "arn:aws:eks:us-west-2:account_id_source:cluster/xarw",
                       "securityGroupIds": [
                           "sg-security-group-id",
                           "sg-security-group-id"
                       ],
                       "subnetIds": [
                           "subnet-subnet_id"
                       ]
                   }
               },
               "destination": {
                   "ampConfiguration": {
                       "workspaceArn": "arn:aws:aps:us-west-2:account_id_target:workspace/ws-workspace-id"
                   }
               }
           }
       ]
   }
   ```

### RoleConfiguration 및 서비스 연결 역할 간 변경
<a name="changing-roles"></a>

Amazon Managed Service for Prometheus 워크스페이스에 쓰기 위해 `RoleConfiguration` 대신 서비스 연결 역할로 다시 전환하려면 `UpdateScraper`를 업데이트하고 스크레이퍼와 동일한 계정에 `RoleConfiguration` 없이 워크스페이스를 제공해야 합니다. 스크레이퍼에서 `RoleConfiguration`이 제거되고 서비스 연결 역할이 사용됩니다.

스크레이퍼와 동일한 계정에서 워크스페이스를 변경할 때 `RoleConfiguration`을 계속 사용하려면 `UpdateScraper`에 `RoleConfiguration`을 다시 제공해야 합니다.

### 고객 관리형 키로 활성화된 워크스페이스용 스크레이퍼 생성
<a name="setup-customer-managed-keys"></a>

[고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 사용하여 Amazon Managed Service for Prometheus 워크스페이스로 지표를 수집하는 스크레이퍼를 생성하려면 소스와 대상이 모두 동일한 계정으로 설정된 `--role-configuration`을 사용합니다.

```
aws amp create-scraper \
  --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/xarw,subnetIds=[subnet-subnet_id]}" \
  --scrape-configuration configurationBlob=<base64-encoded-blob> \
  --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"\
  --role-configuration '{"sourceRoleArn":"arn:aws:iam::account_id:role/Source", "targetRoleArn":"arn:aws:iam::account_id:role/Target"}'
```

### 스크레이퍼 생성 시 일반적인 오류
<a name="AMP-collector-create-errors"></a>

다음은 새 스크레이퍼를 만들 때 발생하는 가장 일반적인 문제입니다.
+ 필요한 AWS 리소스가 존재하지 않습니다. 지정된 *보안 그룹*, *서브넷* 및 *Amazon EKS 클러스터*가 있어야 합니다.
+ IP 주소 공간이 부족합니다. `CreateScraper` API에 전달하는 각 서브넷에 하나 이상의 IP 주소가 있어야 합니다.

## Amazon EKS 클러스터 구성
<a name="AMP-collector-eks-setup"></a>

Amazon EKS 클러스터는 스크레이퍼가 지표에 액세스하는 것을 허용하도록 구성해야 합니다. 이 구성에는 두 가지 옵션이 있습니다.
+ Amazon EKS *액세스 항목*을 사용하여 Amazon Managed Service for Prometheus 수집기에 클러스터에 대한 액세스 권한을 자동으로 제공합니다.
+ 관리형 지표 스크래핑을 위해 Amazon EKS 클러스터를 수동으로 구성합니다.

다음 주제에서는 각각에 대해 자세히 설명합니다.

### 액세스 항목이 포함된 스크레이퍼 액세스를 위해 Amazon EKS 구성
<a name="AMP-collector-eks-access-entry-setup"></a>

Amazon EKS에 대한 액세스 항목을 사용하는 것은 Amazon Managed Service for Prometheus에 클러스터에서 지표를 스크래핑할 수 있는 액세스 권한을 부여하는 가장 쉬운 방법입니다.

API 인증을 허용하도록 스크래핑 중인 Amazon EKS 클러스터를 구성해야 합니다. 클러스터 인증 모드는 `API` 또는 `API_AND_CONFIG_MAP`으로 설정해야 합니다. 이는 클러스터 세부 정보의 **액세스 구성** 탭에 있는 Amazon EKS 콘솔에서 볼 수 있습니다. 자세한 내용은 *Amazon EKS 사용 설명서*의 [Amazon EKS 클러스터에서 IAM 역할 또는 사용자에게 Kubernetes 객체에 대한 액세스 허용](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)을 참조하세요.

클러스터를 생성할 때 또는 클러스터를 생성한 후 스크레이퍼를 생성할 수 있습니다.
+ **클러스터 생성 시** - [Amazon EKS 콘솔을 통해 Amazon EKS 클러스터를 생성](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)할 때(지침에 따라 클러스터의 일부로 스크레이퍼를 생성) 이 액세스를 구성할 수 있으며, 액세스 항목 정책이 자동으로 생성되어 Amazon Managed Service for Prometheus가 클러스터 지표에 액세스할 수 있습니다.
+ **클러스터가 생성된 후 추가** - Amazon EKS 클러스터가 이미 있는 경우 인증 모드를 `API` 또는 `API_AND_CONFIG_MAP`으로 설정합니다. 그러면 [Amazon Managed Service for Prometheus API 또는 CLI를 통해](#AMP-collector-create) 또는 Amazon EKS 콘솔을 통해 생성한 스크레이퍼에 대해 올바른 액세스 항목 정책이 자동으로 생성되며, 해당 스크레이퍼는 클러스터에 액세스할 수 있습니다.

**액세스 항목 정책 생성됨**

스크레이퍼를 생성하고 Amazon Managed Service for Prometheus가 액세스 항목 정책을 생성하도록 하면 다음 정책이 생성됩니다. 액세스 항목에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [IAM 역할 또는 사용자에게 Kubernetes에 대한 액세스 허용](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)을 참조하세요.

```
{
    "rules": [
        {
            "effect": "allow",
            "apiGroups": [
                ""
            ],
            "resources": [
                "nodes",
                "nodes/proxy",
                "nodes/metrics",
                "services",
                "endpoints",
                "pods",
                "ingresses",
                "configmaps"
            ],
            "verbs": [
                "get",
                "list",
                "watch"
            ]
        },
        {
            "effect": "allow",
            "apiGroups": [
                "extensions",
                "networking.k8s.io"
            ],
            "resources": [
                "ingresses/status",
                "ingresses"
            ],
            "verbs": [
                "get",
                "list",
                "watch"
            ]
        },
        {
            "effect": "allow",
            "apiGroups": [
                "metrics.eks.amazonaws.com"
            ],
            "resources": [
                "kcm/metrics",
                "ksh/metrics"
            ],
            "verbs": [
                "get"
            ]
        },
        {
            "effect": "allow",
            "nonResourceURLs": [
                "/metrics"
            ],
            "verbs": [
                "get"
            ]
        }
    ]
}
```

### 스크레이퍼 액세스를 위해 Amazon EKS 수동 구성
<a name="AMP-collector-eks-manual-setup"></a>

`aws-auth ConfigMap`을 사용하여 kubernetes 클러스터에 대한 액세스를 제어하려는 경우에도 Amazon Managed Service for Prometheus 스크레이퍼에 지표에 대한 액세스 권한을 부여할 수 있습니다. 다음 단계에서는 Amazon Managed Service for Prometheus가 Amazon EKS 클러스터에서 지표를 스크래핑할 수 있는 액세스 권한을 부여합니다.

**참고**  
`ConfigMap` 및 액세스 항목에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [IAM 역할 또는 사용자에게 Kubernetes에 대한 액세스 허용](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)을 참조하세요.

이 절차에서는 `kubectl` 및 AWS CLI를 사용합니다. `kubectl` 설치에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [kubectl 설치](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)를 참조하세요.

**관리형 지표 스크래핑을 위해 Amazon EKS 클러스터를 수동으로 구성하려면**

1. 다음 텍스트를 사용하여 `clusterrole-binding.yml`이라는 파일을 생성합니다.

   ```
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRole
   metadata:
     name: aps-collector-role
   rules:
     - apiGroups: [""]
       resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"]
       verbs: ["describe", "get", "list", "watch"]
     - apiGroups: ["extensions", "networking.k8s.io"]
       resources: ["ingresses/status", "ingresses"]
       verbs: ["describe", "get", "list", "watch"]
     - nonResourceURLs: ["/metrics"]
       verbs: ["get"]
     - apiGroups: ["metrics.eks.amazonaws.com"]
       resources: ["kcm/metrics", "ksh/metrics"]
       verbs: ["get"]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRoleBinding
   metadata:
     name: aps-collector-user-role-binding
   subjects:
   - kind: User
     name: aps-collector-user
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: ClusterRole
     name: aps-collector-role
     apiGroup: rbac.authorization.k8s.io
   ```

1. 클러스터에서 다음 명령을 실행합니다.

   ```
   kubectl apply -f clusterrole-binding.yml
   ```

   그러면 클러스터 역할 바인딩 및 규칙이 생성됩니다. 이 예제는 역할 이름으로 `aps-collector-role`을 사용하고, 사용자 이름으로 `aps-collector-user`를 사용합니다.

1. 다음 명령은 ID가 *scraper-id*인 스크레이퍼에 대한 정보를 제공합니다. 이 스크레이퍼는 이전 섹션의 명령을 사용하여 생성한 스크레이퍼입니다.

   ```
   aws amp describe-scraper --scraper-id scraper-id
   ```

1. `describe-scraper`의 결과에서 다음과 같은 형식의 `roleArn`을 찾습니다.

   ```
   arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id
   ```

   Amazon EKS에서는 이 ARN에 다른 형식이 필요합니다. 다음 단계에서 사용할 반환된 ARN의 형식을 조정해야 합니다. 다음 형식에 맞게 편집합니다.

   ```
   arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id
   ```

   예를 들어 이 ARN은

   ```
   arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
   ```

   다음과 같이 작성해야 합니다.

   ```
   arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
   ```

1. 이전 단계에서 수정한 `roleArn`과 클러스터 이름 및 리전을 사용하여 클러스터에서 다음 명령을 실행합니다.

   ```
   eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user
   ```

   이렇게 하면 스크레이퍼가 `clusterrole-binding.yml` 파일에서 생성한 역할과 사용자를 사용하여 클러스터에 액세스할 수 있습니다.

## 스크레이퍼 찾기 및 삭제
<a name="AMP-collector-list-delete"></a>

 AWS API 또는 AWS CLI 를 사용하여 계정의 스크레이퍼를 나열하거나 삭제할 수 있습니다.

**참고**  
최신 버전의 AWS CLI 또는 SDK를 사용하고 있는지 확인합니다. 최신 버전은 최신 특징과 기능 및 보안 업데이트도 제공합니다. 또는 항상 최신 명령줄 환경을 자동으로 제공하는 [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 사용합니다.

계정의 모든 스크레이퍼를 나열하려면 [ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API 작업을 사용합니다.

또는를 사용하여 다음을 AWS CLI호출합니다.

```
aws amp list-scrapers --region aws-region
```

`ListScrapers`가 계정의 모든 스크레이퍼를 반환합니다. 예를 들면 다음과 같습니다.

```
{
    "scrapers": [
        {
            "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890",
            "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890",
            "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931",
            "status": {
                "statusCode": "DELETING"
            },
            "createdAt": "2023-10-12T15:22:19.014000-07:00",
            "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00",
            "tags": {},
            "source": {
                "eksConfiguration": {
                    "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster",
                    "securityGroupIds": [
                        "sg-1234abcd5678ef90"
                    ],
                    "subnetIds": [
                        "subnet-abcd1234ef567890", 
                        "subnet-1234abcd5678ab90"
                    ]
                }
            },
            "destination": {
                "ampConfiguration": {
                    "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78"
                }
            }
        }
    ]
}
```

스크레이퍼를 삭제하려면 `ListScrapers` 작업을 사용하여 삭제하려는 스크레이퍼의 `scraperId`를 찾은 다음 [DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) 작업을 사용하여 삭제합니다.

또는를 사용하여 다음을 AWS CLI호출합니다.

```
aws amp delete-scraper --scraper-id scraperId
```

## Scraper 구성
<a name="AMP-collector-configuration"></a>

Prometheus 호환 스크레이퍼 구성을 사용하여 스크레이퍼가 지표를 검색하고 수집하는 방법을 제어할 수 있습니다. 예를 들어 지표가 WorkSpace로 전송되는 간격을 변경할 수 있습니다. 레이블 재지정을 사용하여 지표의 레이블을 동적으로 다시 작성할 수도 있습니다. 스크레이퍼 구성은 스크레이퍼 정의의 일부인 YAML 파일입니다.

새 스크레이퍼가 생성되면 API 호출에서 base64로 인코딩된 YAML 파일을 제공하여 구성을 지정합니다. Amazon Managed Service for Prometheus API에서 `GetDefaultScraperConfiguration` 작업이 포함된 범용 구성 파일을 다운로드할 수 있습니다.

스크레이퍼 구성을 수정하려면 `UpdateScraper` 작업을 사용하면 됩니다. 지표의 소스를 업데이트해야 하는 경우(예: 다른 Amazon EKS 클러스터로 업데이트) 스크레이퍼를 삭제한 후 새 소스로 다시 생성해야 합니다.

**지원되는 구성**

가능한 값에 대한 자세한 분석을 포함하여 스크레이퍼 구성 형식에 대한 자세한 내용은 Prometheus 설명서의 [구성](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)을 참조하세요. 글로벌 구성 옵션 및 `<scrape_config>` 옵션은 가장 일반적으로 필요한 옵션을 설명합니다.

Amazon EKS는 지원되는 유일한 서비스이므로 지원되는 유일한 서비스 검색 구성(`<*_sd_config>`)은 `<kubernetes_sd_config>`입니다.

허용되는 구성 섹션의 전체 목록은 다음과 같습니다.
+ `<global>`
+ `<scrape_config>`
+ `<static_config>`
+ `<relabel_config>`
+ `<metric_relabel_configs>`
+ `<kubernetes_sd_config>`

이러한 섹션 내의 제한 사항은 샘플 구성 파일 뒤에 나열됩니다.

**샘플 구성 파일**

다음은 스크래핑 간격이 30초인 샘플 YAML 구성 파일입니다. 이 샘플에는 kube API 서버 지표와 kube-controller-manager 및 kube-scheduler 지표에 대한 지원이 포함되어 있습니다. 자세한 내용은 *Amazon EKS 사용 설명서*에서 [컨트롤 플레인 원시 지표를 Prometheus 형식으로 가져오기](https://docs.aws.amazon.com/eks/latest/userguide/view-raw-metrics.html#scheduler-controller-metrics)를 참조하세요.

```
global:
   scrape_interval: 30s
   external_labels:
     clusterArn: apiserver-test-2
scrape_configs:
  - job_name: pod_exporter
    kubernetes_sd_configs:
      - role: pod
  - job_name: cadvisor
    scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    kubernetes_sd_configs:
      - role: node
    relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - replacement: kubernetes.default.svc:443
        target_label: __address__
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        target_label: __metrics_path__
        replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
  # apiserver metrics
  - scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    job_name: kubernetes-apiservers
    kubernetes_sd_configs:
    - role: endpoints
    relabel_configs:
    - action: keep
      regex: default;kubernetes;https
      source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
  # kube proxy metrics
  - job_name: kube-proxy
    honor_labels: true
    kubernetes_sd_configs:
    - role: pod
    relabel_configs:
    - action: keep
      source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_pod_name
      separator: '/'
      regex: 'kube-system/kube-proxy.+'
    - source_labels:
      - __address__
      action: replace
      target_label: __address__
      regex: (.+?)(\\:\\d+)?
      replacement: $1:10249
  # Scheduler metrics
  - job_name: 'ksh-metrics'
    kubernetes_sd_configs:
    - role: endpoints
    metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics
    scheme: https
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    relabel_configs:
    - source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
      action: keep
      regex: default;kubernetes;https
  # Controller Manager metrics
  - job_name: 'kcm-metrics'
    kubernetes_sd_configs:
    - role: endpoints
    metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics
    scheme: https
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    relabel_configs:
    - source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
      action: keep
      regex: default;kubernetes;https
```

다음은 AWS 관리형 수집기에 적용되는 제한 사항입니다.
+ **스크래핑 간격** - 스크레이퍼 구성에서는 스크래핑 간격을 30초 미만으로 지정할 수 없습니다.
+ **대상** - `static_config`의 대상을 IP 주소로 지정해야 합니다.
+ **DNS 확인** - 대상 이름과 관련하여 이 구성에서 인식되는 유일한 서버 이름은 Kubernetes api 서버인 `kubernetes.default.svc`입니다. 다른 모든 시스템 이름은 IP 주소로 지정해야 합니다.
+ **권한 부여** - 권한이 필요하지 않은 경우 생략합니다. 필요한 경우 권한 부여는 `Bearer`이어야 하며 `/var/run/secrets/kubernetes.io/serviceaccount/token` 파일을 가리켜야 합니다. 즉, 사용하는 경우 권한 부여 섹션은 다음과 같아야 합니다.

  ```
      authorization:
        type: Bearer
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  ```
**참고**  
`type: Bearer`가 기본값이므로 생략할 수 있습니다.

## 스크레이퍼 구성 문제 해결
<a name="AMP-collector-troubleshoot"></a>

Amazon Managed Service for Prometheus 수집기는 자동으로 지표를 검색하고 스크래핑합니다. 하지만 Amazon Managed Service for Prometheus WorkSpace에 표시될 것으로 예상되는 지표가 표시되지 않는 경우 어떻게 문제를 해결할 수 있습니까?

**중요**  
Amazon EKS 클러스터에 대한 프라이빗 액세스가 활성화되어 있는지 확인합니다. 자세한 내용은 **Amazon EKS 사용 설명서에서 [클러스터 프라이빗 엔드포인트](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#cluster-endpoint-private)를 참조하세요.

`up` 지표는 유용한 도구입니다. Amazon Managed Service for Prometheus 수집기가 발견한 각 엔드포인트에 대해 이 지표를 자동으로 제공합니다. 이 지표에는 수집기 내에서 발생하는 문제를 해결하는 데 도움이 되는 세 가지 상태가 있습니다.
+ `up`이 존재하지 않음 - 엔드포인트에 대한 `up` 지표가 없는 경우 수집기가 엔드포인트를 찾을 수 없었음을 의미합니다.

  엔드포인트가 확실히 있는 경우에도 수집기가 이를 찾지 못하는 데에는 여러 가지 이유가 있을 수 있습니다.
  + 스크레이프 구성을 조정해야 할 수 있습니다. `relabel_config` 검색을 조정해야 할 수 있습니다.
  + 검색에 사용된 `role`에 문제가 있을 수 있습니다.
  + Amazon EKS 클러스터에서 사용하는 Amazon VPC에 [DNS가 활성화](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html)되어 있지 않아 수집기가 엔드포인트를 찾지 못할 수 있습니다.
+ `up`이 존재하지만 항상 0임 - `up`이 존재하지만 0인 경우 수집기는 엔드포인트를 검색할 수 있지만 Prometheus 호환 지표를 찾을 수 없습니다.

  이 경우 엔드포인트에 대한 `curl` 명령을 직접 사용해 볼 수 있습니다. 프로토콜(`http` 또는 `https`), 엔드포인트 또는 사용 중인 포트와 같이 세부 정보가 올바른지 확인할 수 있습니다. 또한 엔드포인트가 유효한 `200` 응답으로 응답하고 있고 Prometheus 형식을 따르는지 확인할 수 있습니다. 마지막으로 응답 본문은 허용되는 최대 크기보다 클 수 없습니다. ( AWS 관리형 수집기에 대한 제한은 다음 섹션을 참조하세요.)
+ `up`이 존재하고 0보다 큰 경우 - `up`이 존재하고 0보다 크면 지표가 Amazon Managed Service for Prometheus로 전송됩니다.

  Amazon Managed Service for Prometheus(또는 Amazon Managed Grafana와 같은 대체 대시보드)에서 올바른 지표를 찾고 있는지 확인합니다. curl을 다시 사용하여 `/metrics` 엔드포인트에서 예상 데이터를 확인할 수 있습니다. 또한 스크레이퍼당 엔드포인트 수와 같은 다른 한도를 초과하지 않았는지도 확인합니다. `count(up)`를 사용하여 `up` 지표 수를 확인함으로써 스크래핑되는 지표 엔드포인트 수를 확인할 수 있습니다.

## 스크레이퍼 제한 사항
<a name="AMP-collector-limits"></a>

Amazon Managed Service for Prometheus에서 제공하는 완전 관리형 스크레이퍼에는 몇 가지 제한이 있습니다.
+ **리전** - EKS 클러스터, 관리형 스크레이퍼 및 Amazon Managed Service for Prometheus WorkSpace가 모두 동일한 AWS 리전에 있어야 합니다.
+ **수집기** - 계정별로 리전당 최대 10개의 Amazon Managed Service for Prometheus 스크레이퍼를 보유할 수 있습니다.
**참고**  
[할당량 증가를 요청](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)하여 이 한도에 대한 증가를 요청할 수 있습니다.
+ **지표 응답** - 한 `/metrics` 엔드포인트 요청의 응답 본문은 50메가바이트(MB)를 초과할 수 없습니다.
+ **스크레이퍼당 엔드포인트** - 스크레이퍼당 최대 30,000개의 `/metrics` 엔드포인트를 스크래핑할 수 있습니다.
+ **스크래핑 간격** - 스크레이퍼 구성에서는 스크래핑 간격을 30초 미만으로 지정할 수 없습니다.

# Amazon MSK용 관리형 Prometheus 수집기 설정
<a name="prom-msk-integration"></a>

Amazon Managed Service for Prometheus 수집기를 사용하려면 Amazon Managed Streaming for Apache Kafka 클러스터에서 지표를 검색하고 가져오는 스크레이퍼를 생성해야 합니다. Amazon Elastic Kubernetes Service와 통합되는 스크레이퍼를 생성할 수도 있습니다. 자세한 내용은 [Amazon EKS 통합](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html)을 참조하세요.

## 스크레이퍼 생성
<a name="prom-msk-create-scraper"></a>

Amazon Managed Service for Prometheus 수집기는 Amazon MSK 클러스터에서 지표를 검색하고 수집하는 스크레이퍼로 구성됩니다. Amazon Managed Service for Prometheus가 스크레이퍼를 관리하므로 인스턴스, 에이전트 또는 스크레이퍼를 직접 관리할 필요 없이 필요한 확장성, 보안 및 신뢰성을 제공합니다.

다음 절차에 설명된 AWS CLI 대로 AWS API 또는를 사용하여 스크레이퍼를 생성할 수 있습니다.

나만의 스크레이퍼를 만들기 위한 몇 가지 사전 조건은 다음과 같습니다.
+ Amazon MSK 클러스터가 생성되어 있어야 합니다.
+ Amazon VPC 내의 포트 **11001(JMX Exporter)** 및 **11002(Node Exporter)**에서 인바운드 트래픽을 허용하도록 Amazon MSK 클러스터의 보안 그룹을 구성합니다. 스크레이퍼가 Prometheus 지표를 수집하기 위해 이러한 DNS 레코드에 액세스해야 하기 때문입니다.
+ Amazon MSK 클러스터가 상주하는 Amazon VPC에 [DNS가 활성화](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html)되어 있어야 합니다.

**참고**  
클러스터는 Amazon 리소스 이름(ARN)으로 스크레이퍼와 연결됩니다. 클러스터를 삭제한 다음 이름이 같은 새 클러스터를 생성하면 ARN이 새 클러스터에 재사용됩니다. 이로 인해 스크레이퍼는 새 클러스터에 대한 지표를 수집하려고 시도합니다. 클러스터 삭제와 별도로 [스크레이퍼를 삭제](#prom-msk-delete-scraper)합니다.

------
#### [ To create a scraper using the AWS API ]

`CreateScraper` API 작업을 사용하여 AWS API로 스크레이퍼를 생성합니다. 다음 예제는 미국 동부(버지니아 북부) 리전에 스크레이퍼를 생성합니다. *예제* 콘텐츠를 사용자의 Amazon MSK 클러스터 정보로 대체하고 스크레이퍼 구성을 제공합니다.

**참고**  
대상 클러스터와 일치하도록 보안 그룹 및 서브넷을 구성합니다. 두 개의 가용 영역에 걸쳐 최소 두 개의 서브넷을 포함해야 합니다.

```
                POST /scrapers HTTP/1.1
Content-Length: 415 
Authorization: AUTHPARAMS
X-Amz-Date: 20201201T193725Z
User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6

{
    "alias": "myScraper",
    "destination":  {
        "ampConfiguration": {
            "workspaceArn": "arn:aws:aps:us-east-1:123456789012:workspace/ws-workspace-id"
        }
    },
    "source": {
        "vpcConfiguration": {
            "securityGroupIds": ["sg-security-group-id"],
            "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"]
        }
    },
    "scrapeConfiguration": {
        "configurationBlob": base64-encoded-blob
    }
}
```

이 예제에서 `scrapeConfiguration` 파라미터에는 MSK 클러스터의 DNS 레코드를 지정하는 base64로 인코딩된 Prometheus 구성 YAML 파일이 필요합니다.

각 DNS 레코드는 특정 가용 영역 내의 브로커 엔드포인트를 나타내며, 클라이언트는 선택한 AZ에 분산 배치된 브로커에 연결하여 고가용성을 확보할 수 있습니다.

MSK 클러스터 속성의 DNS 레코드 수는 클러스터 구성의 브로커 노드 및 가용 영역 수에 해당합니다.
+ **기본 구성** - 3개 AZ에 걸쳐 있는 3개의 브로커 노드 = 3개의 DNS 레코드
+ **사용자 지정 구성** - 2개 AZ에 걸쳐 있는 2개의 브로커 노드 = 2개의 DNS 레코드

MSK 클러스터의 DNS 레코드를 확인하려면 MSK 콘솔([https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/))을 엽니다. MSK 클러스터로 이동합니다. **속성**, **브로커**, **엔드포인트**를 차례로 선택합니다.

Prometheus가 MSK 클러스터에서 지표를 수집하도록 구성하는 방법에는 두 가지 옵션이 있습니다.

1. **클러스터 수준 DNS 확인(권장)** - 클러스터의 기본 DNS 이름을 사용하여 모든 브로커를 자동으로 검색합니다. 브로커 엔드포인트가 `b-1.clusterName.xxx.xxx.xxx`인 경우 `clusterName.xxx.xxx.xxx`를 DNS 레코드로 사용합니다. 이렇게 하면 Prometheus가 클러스터 내의 모든 브로커를 자동으로 스크래핑할 수 있습니다.

   **개별 브로커 엔드포인트** - 세분화된 제어를 사용하려면 각 브로커 엔드포인트를 개별적으로 지정합니다. 구성에서 전체 브로커 식별자(b-1, b-2)를 사용합니다. 예제:

   ```
   dns_sd_configs:
     - names:
       - b-1.clusterName.xxx.xxx.xxx
       - b-2.clusterName.xxx.xxx.xxx  
       - b-3.clusterName.xxx.xxx.xxx
   ```

**참고**  
`clusterName.xxx.xxx.xxx`를 AWS 콘솔의 실제 MSK 클러스터 엔드포인트로 바꿉니다.

자세한 내용은 Prometheus 설명서에서 [<dns\$1sd\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config)를 참조하세요**.

다음은 스크레이퍼 구성 파일의 예입니다.

```
global:
  scrape_interval: 30s
  external_labels:
    clusterArn: msk-test-1

scrape_configs:
  - job_name: msk-jmx
    scheme: http
    metrics_path: /metrics
    scrape_timeout: 10s
    dns_sd_configs:
      - names:
          - dns-record-1
          - dns-record-2
          - dns-record-3
        type: A
        port: 11001
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: broker_dns
      - source_labels: [__address__]
        target_label: instance
        regex: '(.*)'
        replacement: '${1}'

  - job_name: msk-node
    scheme: http
    metrics_path: /metrics
    scrape_timeout: 10s
    dns_sd_configs:
      - names:
          - dns-record-1
          - dns-record-2
          - dns-record-3
        type: A
        port: 11002
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: broker_dns
      - source_labels: [__address__]
        target_label: instance
        regex: '(.*)'
        replacement: '${1}'
```

다음 명령 중 하나를 실행하여 YAML 파일을 base64로 변환합니다. 온라인 base64 변환기를 사용하여 파일을 변환할 수도 있습니다.

**Example Linux/macOS**  

```
echo -n scraper config updated with dns records | base64 
```

**Example Windows PowerShell**  

```
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(scraper config updated with dns records))
```

------
#### [ To create a scraper using the AWS CLI ]

 AWS Command Line Interface에서 `create-scraper` 명령을 사용하여 스크레이퍼를 생성합니다. 다음 예제는 미국 동부(버지니아 북부) 리전에 스크레이퍼를 생성합니다. *예제* 콘텐츠를 사용자의 Amazon MSK 클러스터 정보로 대체하고 스크레이퍼 구성을 제공합니다.

**참고**  
대상 클러스터와 일치하도록 보안 그룹 및 서브넷을 구성합니다. 두 개의 가용 영역에 걸쳐 최소 두 개의 서브넷을 포함해야 합니다.

```
aws amp create-scraper \
 --source vpcConfiguration="{securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ 
--scrape-configuration configurationBlob=base64-encoded-blob \
 --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:123456789012:workspace/ws-workspace-id'}"
```

------
+ 다음은 AWS API와 함께 사용할 수 있는 스크레이퍼 작업의 전체 목록입니다.

  [CreateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_CreateScraper.html) API 작업으로 스크레이퍼를 생성합니다.
+ [ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API 작업으로 기존 스크레이퍼를 나열합니다.
+ [UpdateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_UpdateScraper.html) API 작업으로 스크레이퍼의 별칭, 구성 또는 대상을 업데이트합니다.
+ [DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) API 작업으로 스크레이퍼를 삭제합니다.
+ [DescribeScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DescribeScraper.html) API 작업으로 스크레이퍼에 대한 자세한 내용을 확인합니다.

## 교차 계정 설정
<a name="prom-msk-cross-account"></a>

지표를 수집하려는 Amazon MSK 클러스터가 Amazon Managed Service for Prometheus 수집기와 다른 계정에 있는 경우 교차 계정 설정에서 스크레이퍼를 생성하려면 아래 절차를 따릅니다.

예를 들어 Amazon MSK가 있는 첫 번째 소스 계정 `account_id_source`와 Amazon Managed Service for Prometheus 워크스페이스가 있는 두 번째 대상 계정 `account_id_target`과 같이 두 계정이 있는 경우를 가정합니다.

**교차 계정 설정에서 스크레이퍼를 생성하려면**

1. 소스 계정에서 `arn:aws:iam::111122223333:role/Source` 역할을 생성하고 다음 신뢰 정책을 추가합니다.

   ```
   {
       "Effect": "Allow",
       "Principal": {
       "Service": [
           "scraper.aps.amazonaws.com"
        ]
       },
       "Action": "sts:AssumeRole",
       "Condition": {
           "ArnEquals": {
               "aws:SourceArn": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id"
           },
           "StringEquals": {
               "AWS:SourceAccount": "111122223333"
           }
       }
   }
   ```

1. 소스(Amazon MSK 클러스터)와 대상(Amazon Managed Service for Prometheus 워크스페이스)의 모든 조합마다 `arn:aws:iam::444455556666:role/Target` 역할을 생성하고 다음 신뢰 정책을 추가하여 [AmazonPrometheusRemoteWriteAccess](https://docs.aws.amazon.com/prometheus/latest/userguide/security-iam-awsmanpol.html) 권한을 부여해야 합니다.

   ```
   {
     "Effect": "Allow",
     "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/Source"
     },
     "Action": "sts:AssumeRole",
     "Condition": {
        "StringEquals": {
           "sts:ExternalId": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id"
         }
     }
   }
   ```

1. `--role-configuration` 옵션을 사용하여 스크레이퍼를 생성합니다.

   ```
   aws amp create-scraper \ --source vpcConfiguration="{subnetIds=[subnet-subnet-id], "securityGroupIds": ["sg-security-group-id"]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::111122223333:role/Source", "targetRoleArn":"arn:aws:iam::444455556666:role/Target"}'
   ```

1. 스크레이퍼 생성을 검증합니다.

   ```
   aws amp list-scrapers
   {
       "scrapers": [
           {
               "scraperId": "s-example123456789abcdef0",
               "arn": "arn:aws:aps:aws-region:111122223333:scraper/s-example123456789abcdef0": "arn:aws:iam::111122223333:role/Source",
               "status": "ACTIVE",
               "creationTime": "2025-10-27T18:45:00.000Z",
               "lastModificationTime": "2025-10-27T18:50:00.000Z",
               "tags": {},
               "statusReason": "Scraper is running successfully",
               "source": {
                   "vpcConfiguration": {
                       "subnetIds": ["subnet-subnet-id"],
                       "securityGroupIds": ["sg-security-group-id"]
                   }
               },
               "destination": {
                   "ampConfiguration": {
                       "workspaceArn": "arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'"
                   }
               },
               "scrapeConfiguration": {
                   "configurationBlob": "<base64-encoded-blob>"
               }
           }
       ]
   }
   ```

## RoleConfiguration 및 서비스 연결 역할 간 변경
<a name="prom-msk-changing-roles"></a>

Amazon Managed Service for Prometheus 워크스페이스에 쓰기 위해 `RoleConfiguration` 대신 서비스 연결 역할로 다시 전환하려면 `UpdateScraper`를 업데이트하고 스크레이퍼와 동일한 계정에 `RoleConfiguration` 없이 워크스페이스를 제공해야 합니다. 스크레이퍼에서 `RoleConfiguration`이 제거되고 서비스 연결 역할이 사용됩니다.

스크레이퍼와 동일한 계정에서 워크스페이스를 변경할 때 `RoleConfiguration`을 계속 사용하려면 `UpdateScraper`에 `RoleConfiguration`을 다시 제공해야 합니다.

## 스크레이퍼 찾기 및 삭제
<a name="prom-msk-delete-scraper"></a>

 AWS API 또는 AWS CLI 를 사용하여 계정의 스크레이퍼를 나열하거나 삭제할 수 있습니다.

**참고**  
최신 버전의 AWS CLI 또는 SDK를 사용하고 있는지 확인합니다. 최신 버전은 최신 특징과 기능 및 보안 업데이트도 제공합니다. 또는 항상 최신 명령줄 환경을 자동으로 제공하는 [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 사용합니다.

계정의 모든 스크레이퍼를 나열하려면 [ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API 작업을 사용합니다.

또는를 사용하여 다음을 AWS CLI호출합니다.

```
aws amp list-scrapers
```

`ListScrapers`가 계정의 모든 스크레이퍼를 반환합니다. 예를 들면 다음과 같습니다.

```
{
    "scrapers": [
        {
            "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890",
            "arn": "arn:aws:aps:aws-region:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890",
            "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931",
            "status": {
                "statusCode": "DELETING"
            },
            "createdAt": "2023-10-12T15:22:19.014000-07:00",
            "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00",
            "tags": {},
            "source": {
                "vpcConfiguration": {
                   "securityGroupIds": [
                        "sg-1234abcd5678ef90"
                    ],
                    "subnetIds": [
                        "subnet-abcd1234ef567890", 
                        "subnet-1234abcd5678ab90"
                    ]
                }
            },
            "destination": {
                "ampConfiguration": {
                    "workspaceArn": "arn:aws:aps:aws-region:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78"
                }
            }
        }
    ]
}
```

스크레이퍼를 삭제하려면 `ListScrapers` 작업을 사용하여 삭제하려는 스크레이퍼의 `scraperId`를 찾은 다음 [DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) 작업을 사용하여 삭제합니다.

또는를 사용하여 다음을 AWS CLI호출합니다.

```
aws amp delete-scraper --scraper-id scraperId
```

## Amazon MSK에서 수집된 지표
<a name="prom-msk-metrics"></a>

Amazon MSK와 통합하면 Amazon Managed Service for Prometheus 수집기가 자동으로 다음 지표를 스크래핑합니다.

### 지표: jmx\$1exporter 및 pod\$1exporter 작업
<a name="broker-metrics"></a>


| 지표 | 설명/목적 | 
| --- | --- | 
|  jmx\$1config\$1reload\$1failure\$1total  |  JMX Exporter가 구성 파일을 다시 로드하지 못한 총 횟수입니다.  | 
|  jmx\$1scrape\$1duration\$1seconds  |  현재 수집 주기 동안 JMX 지표를 스크래핑하는 데 걸린 시간(초)입니다.  | 
|  jmx\$1scrape\$1error  |  JMX 지표 스크래핑 중에 오류가 발생했는지 여부를 나타냅니다(1 = 오류, 0 = 성공).  | 
|  java\$1lang\$1Memory\$1HeapMemoryUsage\$1used  |  JVM에 현재 사용된 힙 메모리의 양(바이트)입니다.  | 
|  java\$1lang\$1Memory\$1HeapMemoryUsage\$1max  |  메모리 관리에 사용할 수 있는 최대 힙 메모리 양(바이트)입니다.  | 
|  java\$1lang\$1Memory\$1NonHeapMemoryUsage\$1used  |  JVM에 현재 사용된 힙 이외 메모리의 양(바이트)입니다.  | 
|  kafka\$1cluster\$1Partition\$1Value  |  Kafka 클러스터 파티션과 관련된 현재 상태 또는 값을 파티션 ID 및 주제별로 분류하여 표시합니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1assigned\$1partitions  |  현재 이 소비자에게 할당된 파티션 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1commit\$1latency\$1avg  |  오프셋을 커밋하는 데 걸린 평균 시간입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1commit\$1rate  |  초당 오프셋 커밋 횟수입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1failed\$1rebalance\$1total  |  소비자 그룹 재조정 실패 총 횟수입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1last\$1heartbeat\$1seconds\$1ago  |  코디네이터에 마지막으로 하트비트가 전송된 이후 경과된 시간(초)입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1rebalance\$1latency\$1avg  |  소비자 그룹 재조정에 걸린 평균 시간(밀리초)입니다.  | 
|  kafka\$1consumer\$1consumer\$1coordinator\$1metrics\$1rebalance\$1total  |  소비자 그룹 재조정 총 횟수입니다.  | 
|  kafka\$1consumer\$1consumer\$1fetch\$1manager\$1metrics\$1bytes\$1consumed\$1rate  |  소비자가 초당 소비하는 평균 바이트 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1fetch\$1manager\$1metrics\$1fetch\$1latency\$1avg  |  가져오기 요청에 걸린 평균 시간(밀리초)입니다.  | 
|  kafka\$1consumer\$1consumer\$1fetch\$1manager\$1metrics\$1fetch\$1rate  |  초당 가져오기 요청 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1fetch\$1manager\$1metrics\$1records\$1consumed\$1rate  |  초당 소비된 평균 레코드 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1fetch\$1manager\$1metrics\$1records\$1lag\$1max  |  해당 소비자 내 모든 파티션에서 레코드 수 기준으로 발생하는 최대 지연 시간입니다.  | 
|  kafka\$1consumer\$1consumer\$1metrics\$1connection\$1count  |  현재 활성 연결 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1metrics\$1incoming\$1byte\$1rate  |  모든 서버에서 초당 수신된 평균 바이트 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1metrics\$1last\$1poll\$1seconds\$1ago  |  마지막 소비자 poll() 호출 이후 경과된 시간(초)입니다.  | 
|  kafka\$1consumer\$1consumer\$1metrics\$1request\$1rate  |  초당 전송된 요청 수입니다.  | 
|  kafka\$1consumer\$1consumer\$1metrics\$1response\$1rate  |  초당 수신된 응답 수입니다.  | 
|  kafka\$1consumer\$1group\$1ConsumerLagMetrics\$1Value  |  소비자 그룹의 현재 소비자 지연 값으로, 소비자가 얼마나 뒤처져 있는지를 나타냅니다.  | 
|  kafka\$1controller\$1KafkaController\$1Value  |  Kafka 컨트롤러의 현재 상태 또는 값입니다(1 = 활성 컨트롤러, 0 = 비활성).  | 
|  kafka\$1controller\$1ControllerEventManager\$1Count  |  처리된 총 컨트롤러 이벤트 수입니다.  | 
|  kafka\$1controller\$1ControllerEventManager\$1Mean  |  컨트롤러 이벤트를 처리하는 데 걸린 평균 시간입니다.  | 
|  kafka\$1controller\$1ControllerStats\$1MeanRate  |  컨트롤러 통계 작업의 초당 평균 처리 속도입니다.  | 
|  kafka\$1coordinator\$1group\$1GroupMetadataManager\$1Value  |  소비자 그룹에 대한 그룹 메타데이터 관리자의 현재 상태 또는 값입니다.  | 
|  kafka\$1log\$1LogFlushStats\$1Count  |  로그 플러시 작업의 총 횟수입니다.  | 
|  kafka\$1log\$1LogFlushStats\$1Mean  |  로그 플러시 작업에 걸린 평균 시간입니다.  | 
|  kafka\$1log\$1LogFlushStats\$1MeanRate  |  로그 플러시 작업의 초당 평균 속도입니다.  | 
|  kafka\$1network\$1RequestMetrics\$1Count  |  처리된 총 네트워크 요청 수입니다.  | 
|  kafka\$1network\$1RequestMetrics\$1Mean  |  네트워크 요청을 처리하는 데 걸린 평균 시간입니다.  | 
|  kafka\$1network\$1RequestMetrics\$1MeanRate  |  네트워크 요청의 초당 평균 속도입니다.  | 
|  kafka\$1network\$1Acceptor\$1MeanRate  |  수락된 연결의 초당 평균 속도입니다.  | 
|  kafka\$1server\$1Fetch\$1queue\$1size  |  가져오기 요청 대기열의 현재 크기입니다.  | 
|  kafka\$1server\$1Produce\$1queue\$1size  |  생산 요청 대기열의 현재 크기입니다.  | 
|  kafka\$1server\$1Request\$1queue\$1size  |  일반 요청 대기열의 현재 크기입니다.  | 
|  kafka\$1server\$1BrokerTopicMetrics\$1Count  |  브로커 주제 작업(수신/송신 메시지, 수신/송신 바이트)의 총 개수입니다.  | 
|  kafka\$1server\$1BrokerTopicMetrics\$1MeanRate  |  브로커 주제 작업의 초당 평균 속도입니다.  | 
|  kafka\$1server\$1BrokerTopicMetrics\$1OneMinuteRate  |  브로커 주제 작업의 1분 이동 평균 속도입니다.  | 
|  kafka\$1server\$1DelayedOperationPurgatory\$1Value  |  퍼거토리에 있는 지연된 작업(완료 대기 중)의 현재 개수입니다.  | 
|  kafka\$1server\$1DelayedFetchMetrics\$1MeanRate  |  지연된 가져오기 작업의 초당 평균 속도입니다.  | 
|  kafka\$1server\$1FetcherLagMetrics\$1Value  |  복제본 페쳐 스레드에 대한 현재 지연 값입니다(리더보다 얼마나 뒤처져 있는지를 나타냄).  | 
|  kafka\$1server\$1FetcherStats\$1MeanRate  |  페처 작업의 초당 평균 속도입니다.  | 
|  kafka\$1server\$1ReplicaManager\$1Value  |  복제본 관리자의 현재 상태 또는 값입니다.  | 
|  kafka\$1server\$1ReplicaManager\$1MeanRate  |  복제본 관리자 작업의 초당 평균 속도입니다.  | 
|  kafka\$1server\$1LeaderReplication\$1byte\$1rate  |  이 브로커가 리더인 파티션에 대한 초당 복제 속도(바이트)입니다.  | 
|  kafka\$1server\$1group\$1coordinator\$1metrics\$1group\$1completed\$1rebalance\$1count  |  소비자 그룹 재조정 완료 총 횟수입니다.  | 
|  kafka\$1server\$1group\$1coordinator\$1metrics\$1offset\$1commit\$1count  |  총 오프셋 커밋 작업 수입니다.  | 
|  kafka\$1server\$1group\$1coordinator\$1metrics\$1offset\$1commit\$1rate  |  오프셋 커밋 작업의 초당 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1connection\$1count  |  현재 활성 연결 수입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1connection\$1creation\$1rate  |  새 연결 생성 작업의 초당 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1connection\$1close\$1rate  |  초당 연결 종료 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1failed\$1authentication\$1total  |  총 인증 시도 실패 횟수입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1incoming\$1byte\$1rate  |  초당 수신 바이트 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1outgoing\$1byte\$1rate  |  초당 발신 바이트 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1request\$1rate  |  초당 요청 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1response\$1rate  |  초당 응답 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1network\$1io\$1rate  |  네트워크 I/O 작업의 초당 속도입니다.  | 
|  kafka\$1server\$1socket\$1server\$1metrics\$1io\$1ratio  |  I/O 작업에 소요된 시간 비율입니다.  | 
|  kafka\$1server\$1controller\$1channel\$1metrics\$1connection\$1count  |  컨트롤러 채널의 현재 활성 연결 수입니다.  | 
|  kafka\$1server\$1controller\$1channel\$1metrics\$1incoming\$1byte\$1rate  |  컨트롤러 채널의 초당 수신 바이트 속도입니다.  | 
|  kafka\$1server\$1controller\$1channel\$1metrics\$1outgoing\$1byte\$1rate  |  컨트롤러 채널의 초당 발신 바이트 속도입니다.  | 
|  kafka\$1server\$1controller\$1channel\$1metrics\$1request\$1rate  |  컨트롤러 채널의 초당 요청 속도입니다.  | 
|  kafka\$1server\$1replica\$1fetcher\$1metrics\$1connection\$1count  |  복제본 가져오기에 대한 현재 활성 연결 수입니다.  | 
|  kafka\$1server\$1replica\$1fetcher\$1metrics\$1incoming\$1byte\$1rate  |  복제본 가져오기에 대한 초당 수신 바이트 속도입니다.  | 
|  kafka\$1server\$1replica\$1fetcher\$1metrics\$1request\$1rate  |  복제본 가져오기에 대한 초당 요청 속도입니다.  | 
|  kafka\$1server\$1replica\$1fetcher\$1metrics\$1failed\$1authentication\$1total  |  복제본 가져오기에 대한 총 인증 시도 실패 횟수입니다.  | 
|  kafka\$1server\$1ZooKeeperClientMetrics\$1Count  |  ZooKeeper 클라이언트 작업의 총 개수입니다.  | 
|  kafka\$1server\$1ZooKeeperClientMetrics\$1Mean  |  ZooKeeper 클라이언트 작업의 평균 지연 시간입니다.  | 
|  kafka\$1server\$1KafkaServer\$1Value  |  Kafka 서버의 현재 상태 또는 값입니다(일반적으로 서버가 실행 중임을 나타냄).  | 
|  node\$1cpu\$1seconds\$1total  |  각 모드(사용자, 시스템, 유휴 등)에서 CPU가 소모한 총 시간(초)을 CPU 및 모드별로 분류하여 표시합니다.  | 
|  node\$1disk\$1read\$1bytes\$1total  |  디스크에서 성공적으로 읽은 총 바이트 수를 디바이스별로 구분하여 표시합니다.  | 
|  node\$1disk\$1reads\$1completed\$1total  |  디스크에 대해 성공적으로 완료된 총 읽기 횟수를 디바이스별로 분류하여 표시합니다.  | 
|  node\$1disk\$1writes\$1completed\$1total  |  디스크에 대해 성공적으로 완료된 총 쓰기 횟수를 디바이스별로 분류하여 표시합니다.  | 
|  node\$1disk\$1written\$1bytes\$1total  |  디스크에 성공적으로 기록된 총 바이트 수를 디바이스별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1avail\$1바이트  |  루트 사용자가 아닌 사용자에게 사용 가능한 파일 시스템 공간(바이트)을 디바이스 및 탑재 지점별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1size\$1bytes  |  파일 시스템의 총 크기(바이트)를 디바이스 및 탑재 지점별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1free\$1바이트  |  사용 가능한 파일 시스템 공간(바이트)을 디바이스 및 탑재 지점별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1files  |  파일 시스템의 총 파일 노드(inode) 수를 디바이스 및 탑재 지점별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1files\$1free  |  파일 시스템의 사용 가능한 파일 노드(inode) 수를 디바이스 및 탑재 지점별로 분류하여 표시합니다.  | 
|  node\$1filesystem\$1readonly  |  파일 시스템이 읽기 전용으로 마운트되었는지 여부를 나타냅니다(1 = 읽기 전용, 0 = 읽기-쓰기).  | 
|  node\$1filesystem\$1device\$1error  |  파일 시스템 통계를 가져오는 동안 오류가 발생했는지 여부를 나타냅니다(1 = 오류, 0 = 성공).  | 

## 제한 사항
<a name="prom-msk-limitations"></a>

현재 Amazon MSK와 Amazon Managed Service for Prometheus 간의 통합에는 다음과 같은 제한 사항이 적용됩니다:
+ Amazon MSK 프로비저닝 클러스터에서만 지원됩니다(Amazon MSK Serverless에서는 사용할 수 없음).
+ KRaft 메타데이터 모드와 함께 퍼블릭 액세스가 활성화된 Amazon MSK 클러스터에서는 지원되지 않습니다.
+ Amazon MSK Express 브로커에서는 지원되지 않습니다.
+ 현재 Amazon MSK 클러스터와 Amazon Managed Service for Prometheus 수집기/워크스페이스 간의 1:1 매핑을 지원합니다.

# Prometheus 호환 지표란 무엇입니까?
<a name="prom-compatible-metrics"></a>

Amazon Managed Service for Prometheus에서 사용하기 위해 애플리케이션과 인프라에서 Prometheus 지표를 스크래핑하려면 Prometheus 호환 `/metrics` 엔드포인트에서 *Prometheus 호환 지표*를 계측하여 공개해야 합니다. 자체 지표를 구현할 수 있지만 반드시 그럴 필요는 없습니다. Kubernetes(Amazon EKS 포함) 및 기타 여러 라이브러리 및 서비스는 이러한 지표를 직접 구현합니다.

Amazon EKS의 지표를 Prometheus 호환 엔드포인트로 내보내는 경우 Amazon Managed Service for Prometheus 수집기가 해당 지표를 자동으로 스크래핑하도록 할 수 있습니다.

자세한 내용은 다음 항목을 참조하세요.
+ 지표를 Prometheus 지표로 내보내는 기존 라이브러리 및 서비스에 대한 자세한 내용은 Prometheus 설명서의 [내보내기 및 통합](https://prometheus.io/docs/instrumenting/exporters/)을 참조하세요.
+ 자체 코드에서 Prometheus 호환 지표를 내보내는 방법에 대한 자세한 내용은 Prometheus 설명서의 [내보내기 작성](https://prometheus.io/docs/instrumenting/writing_exporters/)을 참조하세요.
+ Amazon EKS 클러스터의 지표를 자동으로 스크래핑하도록 Amazon Managed Service for Prometheus 수집기를 설정하는 방법에 대한 자세한 내용은 [Amazon EKS용 관리형 수집기 설정](AMP-collector-how-to.md) 섹션을 참조하세요.

# 제공형 로그를 사용하여 수집기 모니터링
<a name="AMP-collector-vended-logs"></a>

Amazon Managed Service for Prometheus 수집기는 지표 수집 프로세스를 모니터링하고 문제를 해결하는 데 도움이 되는 제공형 로그를 제공합니다. 이러한 로그는 Amazon CloudWatch Logs로 자동으로 전송되며 서비스 검색, 지표 수집 및 데이터 내보내기 작업에 대한 가시성을 제공합니다. 수집기는 지표 수집 파이프라인의 세 가지 주요 구성 요소에 대한 로그를 제공합니다.

**Topics**
+ [

## 서비스 검색 로그
](#amp-collector-service-discovery-vended-logs)
+ [

## 수집기 로그
](#amp-collector-vended-logs)
+ [

## Exporter 로그
](#amp-exporter-vended-logs)
+ [

## 수집기 제공형 로그 이해 및 사용
](#amp-collector-log-details)

## 서비스 검색 로그
<a name="amp-collector-service-discovery-vended-logs"></a>

서비스 검색 로그는 다음을 포함하여 대상 검색 프로세스에 대한 정보를 제공합니다.
+ Kubernetes API 리소스에 액세스할 때 발생하는 인증 또는 권한 문제
+ 서비스 검색 설정의 구성 오류

다음 예제에서는 서비스 검색 중에 발생할 수 있는 일반적인 인증 및 권한 오류를 보여줍니다.

**Amazon EKS 클러스터가 존재하지 않음**  
지정된 Amazon EKS 클러스터가 없으면 다음 오류가 발생합니다.  

```
{
  "component": "SERVICE_DISCOVERY",
  "timestamp": "2025-04-30T17:25:41.946Z",
  "message": {
    "log": "Failed to watch Service - Verify your scraper source exists."
  },
  "scrapeConfigId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

**유효하지 않은 서비스 권한**  
서비스를 감시할 수 있는 적절한 역할 기반 액세스 제어(RBAC) 권한이 수집기에 없는 경우 다음 오류가 발생합니다.  

```
{
  "component": "SERVICE_DISCOVERY",
  "timestamp": "2025-04-30T17:25:41.946Z",
  "message": {
    "log": "Failed to watch Service - Verify your scraper source permissions are valid."
  },
  "scrapeConfigId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

**유효하지 않은 엔드포인트 권한**  
엔드포인트를 감시할 수 있는 적절한 역할 기반 액세스 제어(RBAC) 권한이 수집기에 없는 경우 다음 오류가 발생합니다.  

```
{
  "component": "SERVICE_DISCOVERY",
  "timestamp": "2025-04-30T17:25:41.946Z",
  "message": {
    "log": "Failed to watch Endpoints - Verify your scraper source permissions are valid."
  },
  "scrapeConfigId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

## 수집기 로그
<a name="amp-collector-vended-logs"></a>

수집기 로그는 다음을 포함하여 지표 스크래핑 프로세스에 대한 정보를 제공합니다.
+ 엔드포인트를 사용할 수 없어 발생한 스크래핑 실패
+ 대상 스크래핑 시도 시 발생한 연결 문제
+ 스크래핑 작업 중 발생한 제한 시간 초과
+ 스크래핑 대상에서 반환된 HTTP 상태 오류

다음 예제에서는 지표 스크래핑 프로세스 중에 발생할 수 있는 일반적인 수집기 오류를 보여줍니다.

**지표 엔드포인트 누락**  
대상 인스턴스에서 `/metrics` 엔드포인트를 사용할 수 없는 경우 다음 오류가 발생합니다.  

```
{
    "component": "COLLECTOR",
    "message": {
        "log": "Failed to scrape Prometheus endpoint - verify /metrics endpoint is available",
        "job": "pod_exporter",
        "targetLabels": "{__name__=\"up\", instance=\10.24.34.0\", job=\"pod_exporter\"}"
    },
    "timestamp": "1752787969551",
    "scraperId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

**연결이 거부됨**  
수집기가 대상 엔드포인트에 연결할 수 없는 경우 다음 오류가 발생합니다.  

```
{
  "scrapeConfigId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
  "timestamp": "2025-04-30T17:25:41.946Z",
  "message": {
    "message": "Scrape failed",
    "scrape_pool": "pod_exporter",
    "target": "http://10.24.34.0:80/metrics",
    "error": "Get \"http://10.24.34.0:80/metrics\": dial tcp 10.24.34.0:80: connect: connection refused"
  },
  "component": "COLLECTOR"
}
```

## Exporter 로그
<a name="amp-exporter-vended-logs"></a>

Exporter 로그는 다음을 포함하여 수집된 지표를 Amazon Managed Service for Prometheus 워크스페이스로 보내는 프로세스에 대한 정보를 제공합니다.
+ 처리된 지표 및 데이터 포인트 수
+ 워크스페이스 문제로 인한 내보내기 실패
+ 지표를 작성하려고 할 때 발생한 권한 오류
+ 내보내기 파이프라인의 종속성 실패

다음 예제에서는 지표 내보내기 프로세스 중에 발생할 수 있는 일반적인 내보내기 오류를 보여줍니다.

**워크스페이스를 찾을 수 없음**  
지표 내보내기를 위한 대상 워크스페이스를 찾을 수 없는 경우 다음 오류가 발생합니다.  

```
{
    "component": "EXPORTER",
    "message": {
        "log": "Failed to export to the target workspace - Verify your scraper destination.",
        "samplesDropped": 5
    },
    "timestamp": "1752787969664",
    "scraperId": "s-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

## 수집기 제공형 로그 이해 및 사용
<a name="amp-collector-log-details"></a>

### 로그 구조
<a name="amp-log-structure"></a>

모든 수집기 제공형 로그는 다음 필드로 구성된 일관된 구조를 따릅니다.

**scrapeConfigId**  
해당 로그를 생성한 스크래핑 구성의 고유 식별자입니다.

**timestamp**  
로그 항목이 생성된 시간입니다.

**message**  
로그 메시지 콘텐츠로, 추가 구조화 필드가 포함될 수 있습니다.

**component**  
로그를 생성한 구성 요소입니다(SERVICE\$1DISCOVERY, COLLECTOR, EXPORTER).

### 문제 해결에 제공형 로그 사용
<a name="amp-troubleshooting"></a>

수집기 제공형 로그는 지표 수집과 관련된 일반적인 문제를 해결하는 데 도움이 됩니다.

1. 서비스 검색 문제
   + **SERVICE\$1DISCOVERY** 로그에서 인증 또는 권한 오류가 있는지 확인합니다.
   + Kubernetes 리소스에 액세스하는 데 필요한 권한이 수집기에 있는지 확인합니다.

1. 지표 스크래핑 문제
   + **COLLECTOR** 로그에서 스크래핑 실패가 있는지 확인합니다.
   + 대상 엔드포인트에 액세스할 수 있고 지표를 반환하는지 확인합니다.
   + 방화벽 규칙에 따라 수집기가 대상 엔드포인트에 연결할 수 있는지 확인합니다.

1. 지표 내보내기 문제
   + **EXPORTER** 로그에서 내보내기 실패가 있는지 확인합니다.
   + 워크스페이스가 존재하고 올바르게 구성되었는지 확인합니다.
   + 수집기에 워크스페이스에 쓰는 데 필요한 권한이 있는지 확인합니다.

### 수집기 제공형 로그 액세스
<a name="amp-accessing-logs"></a>

수집기 제공형 로그는 Amazon CloudWatch Logs로 자동 전송됩니다. 이러한 로그에 액세스하려면 다음을 수행합니다.

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그 그룹**을 선택합니다.

1. 수집기의 로그 그룹(`/aws/prometheus/workspace_id/collector/collector_id`)을 찾아 선택합니다.

1. 로그 이벤트를 찾아보거나 검색하여 관련 정보를 찾습니다.

CloudWatch Logs Insights를 사용하여 수집기 로그를 쿼리하고 분석할 수도 있습니다. 예를 들어, 서비스 검색 오류를 모두 찾으려면 다음과 같이 합니다.

```
fields @timestamp, message.message
| filter component = "SERVICE_DISCOVERY" and message.message like /Failed/
| sort @timestamp desc
```

### 수집기 모니터링 모범 사례
<a name="amp-monitoring-best-practices"></a>

Amazon Managed Service for Prometheus 수집기를 효과적으로 모니터링하려면 다음을 수행합니다.

1. 영구 스크래핑 실패 또는 내보내기 오류와 같은 중요한 수집기 문제에 대해 CloudWatch 경보를 설정합니다. 자세한 내용은 **Amazon CloudWatch 사용 설명서에서 [경보](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)를 참조하세요.

1. CloudWatch 대시보드를 생성하여 제공형 로그 데이터와 함께 수집기 성능 지표를 시각화합니다. 자세한 내용은 **Amazon CloudWatch 사용 설명서에서 [대시보드](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

1. 서비스 검색 로그를 정기적으로 검토하여 대상이 올바르게 검색되고 있는지 확인합니다.

1. 삭제된 대상 수를 모니터링하여 잠재적 구성 문제를 식별합니다.

1. 내보내기 실패를 추적하여 지표가 워크스페이스로 성공적으로 전송되고 있는지 확인합니다.