콘텐츠로 이동

알리바바 클라우드 SAE

알리바바 클라우드 SAE(Serverless App Engine)의 지표, 로그, 트레이스 정보를 수집합니다.

구성

SAE에 배포된 애플리케이션은 다음 절차로 트레이스, 지표, 로그 데이터를 연동할 수 있으며, 구체적인 흐름은 다음과 같습니다:

  • 애플리케이션은 APM을 연동해 Trace 데이터를 DataKit으로 전송합니다
  • 애플리케이션의 로그 데이터는 KafkaMQ로 수집한 뒤, DataKit에서 소비할 수 있습니다
  • 애플리케이션 컨테이너의 지표 데이터는 알리바바 클라우드의 모니터링 API와 Function 플랫폼(DataFlux.f(x))을 통해 수집한 뒤Guance으로 전송합니다
  • DataKit가 수집한 데이터를 통합 처리한 뒤Guance으로 보냅니다

참고: SAE에 DataKit를 배포하면 대역폭을 절약할 수 있습니다.

DataKit 애플리케이션 생성

SAE에서 DataKit 애플리케이션을 생성합니다

  • SAE에 들어가서 애플리케이션 목록 - 애플리케이션 생성 을 클릭합니다.
  • 애플리케이션 정보를 입력합니다
    • 애플리케이션 이름
    • 네임스페이스를 선택하고, 없으면 새로 생성합니다
    • VPC를 선택하고, 없으면 새로 생성합니다
    • 보안 그룹을 선택합니다: vSwitch는 NAT의 스위치와 일치해야 합니다
    • 인스턴스 수는 필요에 따라 조정합니다
    • CPU 1 core, 메모리 1G
    • 완료되면 다음을 클릭합니다
  • 이미지 추가: pubrepo.guance.com/datakit/datakit:1.31.0
  • 환경 변수를 추가하고, 설정 내용은 다음과 같습니다:
{
  "ENV_DATAWAY": "https://openway.guance.com?token=tkn_xxx",
  "KAFKAMQ": "# {\"version\": \"1.22.7-1510\", \"desc\": \"do NOT edit this line\"}\n\n[[inputs.kafkamq]]\n  # addrs = [\"alikafka-serverless-cn-8ex3y7ciq02-1000.alikafka.aliyuncs.com:9093\",\"alikafka-serverless-cn-8ex3y7ciq02-2000.alikafka.aliyuncs.com:9093\",\"alikafka-serverless-cn-8ex3y7ciq02-3000.alikafka.aliyuncs.com:9093\"]\n  addrs = [\"alikafka-serverless-cn-8ex3y7ciq02-1000-vpc.alikafka.aliyuncs.com:9092\",\"alikafka-serverless-cn-8ex3y7ciq02-2000-vpc.alikafka.aliyuncs.com:9092\",\"alikafka-serverless-cn-8ex3y7ciq02-3000-vpc.alikafka.aliyuncs.com:9092\"]\n  # your kafka version:0.8.2 ~ 3.2.0\n  kafka_version = \"3.3.1\"\n  group_id = \"datakit-group\"\n  # consumer group partition assignment strategy (range, roundrobin, sticky)\n  assignor = \"roundrobin\"\n\n  ## kafka tls config\n   tls_enable = false\n\n  ## -1:Offset Newest, -2:Offset Oldest\n  offsets=-1\n\n\n  ## user custom message with PL script.\n  [inputs.kafkamq.custom]\n    #spilt_json_body = true\n    ## spilt_topic_map determines whether to enable log splitting for specific topic based on the values in the spilt_topic_map[topic].\n    #[inputs.kafkamq.custom.spilt_topic_map]\n     # \"log_topic\"=true\n     # \"log01\"=false\n    [inputs.kafkamq.custom.log_topic_map]\n      \"springboot-server_log\"=\"springboot_log.p\"\n    #[inputs.kafkamq.custom.metric_topic_map]\n    #  \"metric_topic\"=\"metric.p\"\n    #  \"metric01\"=\"rum_apm.p\"\n    #[inputs.kafkamq.custom.rum_topic_map]\n    #  \"rum_topic\"=\"rum_01.p\"\n    #  \"rum_02\"=\"rum_02.p\"\n",
  "SPRINGBOOT_LOG_P": "abc = load_json(_)\n\nadd_key(file, abc[\"file\"])\n\nadd_key(message, abc[\"message\"])\nadd_key(host, abc[\"host\"])\nmsg = abc[\"message\"]\ngrok(msg, \"%{TIMESTAMP_ISO8601:time} %{NOTSPACE:thread_name} %{LOGLEVEL:status}%{SPACE}%{NOTSPACE:class_name} - \\\\[%{NOTSPACE:method_name},%{NUMBER:line}\\\\] %{DATA:service_name} %{DATA:trace_id} %{DATA:span_id} - %{GREEDYDATA:msg}\")\n\nadd_key(topic, abc[\"topic\"])\n\ndefault_time(time,\"Asia/Shanghai\")",
  "ENV_GLOBAL_HOST_TAGS": "host=__datakit_hostname,host_ip=__datakit_ip",
  "ENV_HTTP_LISTEN": "0.0.0.0:9529",
  "ENV_DEFAULT_ENABLED_INPUTS": "dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,ddtrace,statsd,profile"
}

설정 항목 설명:

  1. ENV_DATAWAY: 필수, Guance로 전송하는 게이트웨이 주소
  2. KAFKAMQ: 필수 아님, kafkamq 수집기 설정. 자세한 내용은 Kafka 수집기 설정 파일 소개 참고
  3. SPRINGBOOT_LOG_P: 필수 아님, KAFKAMQ와 함께 사용하는 로그 pipeline 스크립트로, kafka에서 온 로그 데이터를 분리하는 데 사용
  4. ENV_GLOBAL_HOST_TAGS: 필수, 수집기 전역 태그
  5. ENV_HTTP_LISTEN: 필수, Datakit 포트. IP는 반드시 0.0.0.0이어야 하며, 그렇지 않으면 다른 pod가 접근할 수 없습니다
  6. ENV_DEFAULT_ENABLED_INPUTS: 필수, 기본으로 활성화되는 수집기

자세한 내용은 알리바바 클라우드 SAE 애플리케이션 엔진 관측성 모범 사례 참고

트레이싱

알리바바 클라우드 SAE에 애플리케이션을 배포하려면, 해당 컨테이너에 APM을 포함해야 합니다:

  • APM이 필요로 하는 빌드 패키지를 oss에 업로드하거나, APM 빌드 패키지를 애플리케이션의 Dockerfile에 통합해 빌드할 수 있습니다
  • 시작 로딩은 일반 환경에서 APM을 연동하는 절차와 동일합니다.

자세한 내용은 알리바바 클라우드 SAE 애플리케이션 엔진 관측성 모범 사례 참고

지표

Func 설치

Guance 통합 - 확장 - 호스팅 버전 Func를 사용하는 것을 권장합니다

직접 배포하는 경우 Func 직접 배포 참고

스크립트 활성화

안내: 요구 사항에 맞는 알리바바 클라우드 AK를 미리 준비해 두세요(간단히 하려면 전역 읽기 전용 권한ReadOnlyAccess를 직접 부여할 수 있습니다)

호스팅 버전 활성화 스크립트

  1. Guance 콘솔에 로그인합니다
  2. [통합] 메뉴를 클릭하고 [클라우드 계정 관리]를 선택합니다
  3. [클라우드 계정 추가]를 클릭하고 [알리바바 클라우드]를 선택한 뒤, 화면에 필요한 정보를 입력합니다. 이전에 클라우드 계정 정보를 이미 설정했다면 이 단계는 건너뜁니다
  4. [테스트]를 클릭하고, 테스트가 성공하면 [저장]을 클릭합니다. 테스트에 실패하면 관련 설정이 올바른지 확인한 뒤 다시 테스트합니다
  5. [클라우드 계정 관리] 목록에서 추가된 클라우드 계정을 확인할 수 있습니다. 해당 클라우드 계정을 클릭해 상세 페이지로 들어갑니다
  6. 클라우드 계정 상세 페이지의 [통합] 버튼을 클릭한 뒤 미설치 목록에서 알리바바 클라우드 SAE를 찾아 [설치]를 클릭하면 설치 화면에서 설치할 수 있습니다

수동 활성화 스크립트

  1. Func 콘솔에 로그인하고 [스크립트 마켓]을 클릭한 뒤, Guance 스크립트 마켓으로 들어가 integration_alibabacloud_sae_app, integration_alibabacloud_sae_instance를 검색합니다

  2. [설치]를 클릭한 뒤, 알리바바 클라우드 AK ID, AK Secret 및 계정명을 입력합니다.

  3. [시작 스크립트 배포]를 클릭하면 시스템이 자동으로 Startup 스크립트 세트를 생성하고, 해당 시작 스크립트를 자동으로 설정합니다.

  4. 활성화 후에는 「관리 / 자동 트리거 설정」에서 해당 자동 트리거 설정을 볼 수 있습니다. [실행]을 클릭하면 예약 시간을 기다리지 않고 즉시 한 번 실행됩니다. 잠시 후 실행 작업 기록과 해당 로그를 확인할 수 있습니다.

검증

  1. 「관리 / 자동 트리거 설정」에서 해당 작업에 대한 자동 트리거 설정이 존재하는지 확인하고, 작업 기록과 로그를 함께 보며 이상이 있는지 확인합니다
  2. Guance에서 「인프라 / 사용자 정의」를 열어 자산 정보가 있는지 확인합니다
  3. Guance에서 「지표」를 열어 해당 모니터링 데이터가 있는지 확인합니다

지표 소개

지표 단위 Dimensions 설명
cpu_Average % userId、appId 애플리케이션 CPU
diskIopsRead_Average Count/Second userId、appId 애플리케이션 디스크 IOPS 읽기
diskIopsWrite_Average Count/Second userId、appId 애플리케이션 디스크 IOPS 쓰기
diskRead_Average Byte/Second userId、appId 애플리케이션 디스크 IO 처리량 읽기
diskTotal_Average Kilobyte userId、appId 애플리케이션 디스크 총량
diskUsed_Average Kilobyte userId、appId 애플리케이션 디스크 사용량
diskWrite_Average Byte/Second userId、appId 애플리케이션 디스크 IO 처리량 쓰기
instanceId_memoryUsed_Average MB userId、appId、instanceId 인스턴스 사용 중인 메모리
instance_cpu_Average % userId、appId、instanceId 인스턴스 CPU
instance_diskIopsRead_Average Count/Second userId、appId、instanceId 인스턴스 디스크 IOPS 읽기
instance_diskIopsWrite_Average Count/Second userId、appId、instanceId 인스턴스 디스크 IOPS 쓰기
instance_diskRead_Average Byte/Second userId、appId、instanceId 인스턴스 디스크 IO 처리량 읽기
instance_diskTotal_Average Kilobyte userId、appId、instanceId 인스턴스 디스크 총량
instance_diskUsed_Average Kilobyte userId、appId、instanceId 인스턴스 디스크 사용량
instance_diskWrite_Average Byte/Second userId、appId、instanceId 인스턴스 디스크 IO 처리량 쓰기
instance_load_Average min userId、appId、instanceId 인스턴스 평균 부하
instance_memoryTotal_Average MB userId、appId、instanceId 인스턴스 총 메모리
instance_memoryUsed_Average MB userId、appId、instanceId 인스턴스 사용 중인 메모리
instance_netRecv_Average Byte/Second userId、appId、instanceId 인스턴스 수신 바이트
instance_netRecvBytes_Average Byte userId、appId、instanceId 인스턴스 총 수신 바이트
instance_netRecvDrop_Average Count/Second userId、appId、instanceId 인스턴스 수신 데이터 드롭
instance_netRecvError_Average Count/Second userId、appId、instanceId 인스턴스 수신 오류 패킷
instance_netRecvPacket_Average Count/Second userId、appId、instanceId 인스턴스 수신 패킷
instance_netTran_Average Byte/Second userId、appId、instanceId 인스턴스 송신 바이트
instance_netTranBytes_Average Byte userId、appId、instanceId 인스턴스 총 송신 바이트
instance_netTranDrop_Average Count/Second userId、appId、instanceId 인스턴스 송신 데이터 드롭
instance_netTranError_Average Count/Second userId、appId、instanceId 인스턴스 송신 오류 패킷
instance_netTranPacket_Average Count/Second userId、appId、instanceId 인스턴스 송신 패킷
instance_tcpActiveConn_Average Count userId、appId、instanceId 인스턴스 활성 TCP 연결 수
instance_tcpInactiveConn_Average Count userId、appId、instanceId 인스턴스 비활성 TCP 연결 수
instance_tcpTotalConn_Average Count userId、appId、instanceId 인스턴스 총 TCP 연결 수
load_Average min userId、appId 애플리케이션 평균 부하
memoryTotal_Average MB userId、appId 애플리케이션 총 메모리
memoryUsed_Average MB userId、appId 애플리케이션 사용 중인 메모리
netRecv_Average Byte/Second userId、appId 애플리케이션 수신 바이트
netRecvBytes_Average Byte userId、appId 애플리케이션 총 수신 바이트
netRecvDrop_Average Count/Second userId、appId 애플리케이션 수신 데이터 드롭
netRecvError_Average Count/Second userId、appId 애플리케이션 수신 오류 패킷
netRecvPacket_Average Count/Second userId、appId 애플리케이션 수신 패킷
netTran_Average Byte/Second userId、appId 애플리케이션 송신 바이트
netTranBytes_Average Byte userId、appId 애플리케이션 총 송신 바이트
netTranDrop_Average Count/Second userId、appId 애플리케이션 송신 데이터 드롭
netTranError_Average Count/Second userId、appId 애플리케이션 송신 오류 패킷
netTranPacket_Average Count/Second userId、appId 애플리케이션 송신 패킷
tcpActiveConn_Average Count userId、appId 애플리케이션 활성 TCP 연결 수
tcpInactiveConn_Average Count userId、appId 애플리케이션 비활성 TCP 연결 수
tcpTotalConn_Average Count userId、appId 애플리케이션 총 TCP 연결 수

로그

알리바바 클라우드 SAE는 Kafka 방식으로 로그를Guance으로 출력할 수 있으며, 흐름은 다음과 같습니다:

  • SAE 애플리케이션에서 Kafka 로그 보고를 활성화합니다
  • DataKit에서 KafkaMQ 로그 수집을 활성화하고, 애플리케이션의 Kafka 로그 보고 Topic을 수집합니다

자세한 내용은 알리바바 클라우드 SAE 애플리케이션 엔진 관측성 모범 사례 참고

예시:

[[inputs.kafkamq]]
  [inputs.kafkamq.custom]
    [inputs.kafkamq.custom.log_topic_map]
      "log_topic"="topic_name"
      "log01"="pipeline_name"

문서 평가

이 페이지가 도움이 되었나요?