• 프로필사진
    Home
  • Portfolio
  • github [#ffffff] Created with Sketch.
    Github
  • linkedin
    Linkedin
  • Setting
  • Posting
    • 분류 전체보기 (105)
      • Aws (96)
      • Backend (3)
      • Extension (1)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • EKS Fluent-Bit to OpenSearch
        2024년 12월 24일
        • wngnl05
        • 작성자
        • 2024.12.24.:06

        OpenSearch 도매인 생성할 때 참고하세요.

        최대 절 수에 1024를 꼭 적어주세요.

        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": "es:ESHttp*",
              "Resource": "arn:aws:es:<리전>:<사용자 아이디>:domain/<OpenSearch 도매인>/*"
            }
          ]
        }

        위의 정책은 OpenSearch의 보안구성 > 액세스 정책 에 넣어주세요

         

         

        OpenSearch 정책 생성하기

        OPENSEARCH_ARN="<OpenSearch ARN>"
        aws iam create-policy \
            --policy-name wngnl_OpenSearch_Policy \
            --policy-document '{
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Action": [
                            "es:ESHttp*"
                        ],
                        "Resource": "'"${OPENSEARCH_ARN}"'",
                        "Effect": "Allow"
                    }
                ]
            }'

        OpenSeach 역활 생성하기

        CLUSTER_NAME="<EKS CLUSTER 이름>"
        OIDC_ID=$(aws eks describe-cluster --name $CLUSTER_NAME --query "cluster.identity.oidc.issuer" --output text | sed 's|https://||')
        ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
        OIDC_ARN="arn:aws:iam::$ACCOUNT_ID:oidc-provider/$OIDC_ID"
        
        aws iam create-role --role-name wngnl_OpenSearch_Role --assume-role-policy-document '{
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Federated": "'"${OIDC_ARN}"'"
                    },
                    "Action": "sts:AssumeRoleWithWebIdentity",
                    "Condition": {
                        "StringEquals": {
                            "'"${OIDC_ID}"':aud": "sts.amazonaws.com"
                            "'"${OIDC_ID}"':sub": "fluent-bit",
                        }
                    }
                }
            ]
        }'
        aws iam attach-role-policy --role-name wngnl_OpenSearch_Role --policy-arn arn:aws:iam::aws:policy/PowerUserAccess

         

        Down File

        wget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/OpenSearch/serviceaccount.yaml
        wget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/OpenSearch/daemonset.yaml
        wget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/OpenSearch/fluentbit.yaml

        daemonset.yaml, serviceaccount.yaml, fluentbit.yaml을 수정하고 apply 해줍니다.

        export CLUSTER_NAME=<클러스터 이름>
        export LOGGING_ROLE=$(kubectl get sa fluent-bit -n default -o json |jq '.metadata.annotations."eks.amazonaws.com/role-arn"' -r)
        export OPEN_SEARCH_ENDPOINT=<OpenSearch 앤드포인트>
        export OPEN_SEARCH_MASTER_PASSWORD=<OpenSearch 비밀번호>
        
        curl -sS -u "${OPEN_SEARCH_MASTER_USER}:${OPEN_SEARCH_MASTER_PASSWORD}" \
            -X PATCH ${OPEN_SEARCH_ENDPOINT}/_opendistro/_security/api/rolesmapping/all_access?pretty \
            -H 'Content-Type: application/json' \
            -d '[{"op": "add", "path": "/backend_roles", "value": [ "'${LOGGING_ROLE}'" ]}]'

        OpenSearh 보안 역활 업데이트

        kubectl logs daemonset.apps/fluent-bit

        위의 명령어로 상태를 체크하고 아무 문제 없다면 

        로드밸런서 OR 컨테이너에서 curl 을 보내 로그를 생성한 후 OpenSearch 도매인으로 접속해줍니다,

         

        OpenSearch 설정

        _dashboards/app/management/opensearch-dashboards/indexPatterns/create

        위의 경로로 접속하여 로그 이름을 작성해줍니다       ex.  product-* 

         

        Time field = @timestamp

        Log 확인

         

        Discover 로 이동하여 줍니다.

         

        product-* 를 클릭하면 로그를 확인할 수 있습니다.

        특정 Log 확인

        메뉴 아래의 DevTools를 클릭하고

        POST /<로그 이름>-*/_search
        {
          "query": {
            "query_string": {
              "query": "<찾는 텍스트>"
            }
          }
        }

        위의 코드로 원하는 값을 찾을 수 있습니다.

        값이 있는 경우

        값이 없는 경우

         

         

         

         

         

         

         

         

         

         

         

         

        저작자표시 비영리 변경금지 (새창열림)

        'Aws' 카테고리의 다른 글

        ApiGW & Lambda에서 브라우저 분류하기  (0) 2024.12.24
        EC2 접속 시 CloudWatch LogGroup에 USER 로그 작성하기  (0) 2024.12.24
        EKS Fluent-Bit to CloudWatch 로그 그룹  (0) 2024.12.24
        EKS Calico  (0) 2024.12.24
        EKS MetricServer [ HPA, VPA, CA ] 공부  (0) 2024.12.24
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바