grafana와 cloudwatch metric 계기판 배치 시작

14580 단어 kubernetesawsbeginners

지표의 기둥


도량은 관찰 가능한 관건적인 구성 요소 중 하나이다. 우리가 더 많은 분포식 응용 프로그램 체계 구조를 채택함에 따라 관찰 가능성은 점점 중요해진다. 만약에 우리가 적당한 집합 시스템이 없다면 응용 프로그램의 건강 상태를 관리하기 어렵다.만약에 귀하가 관찰할 수 있는 여행을 시작하고 데이터독이나 splunk 등 비용을 지불하는 SaAS 서비스를 변호하는 것이 극복하기 어려운 장애라는 것을 발견한다면 먼저 소스 해결 방안을 사용하여 도량 수집의 작업 방식을 더욱 잘 파악하고 계기판을 만들어서 현재 시스템에 대한 견해를 제공할 수 있습니다.
이 글에서 우리는 지역 사회를 통해 만들어진 계기판을 통해 Grafana를 AWS 탄력성 Kubernetes 서비스(EKS) 집단에 배치하는 데 도움이 되는 빠른 방법을 소개할 것이다.시작합시다.

카탈로그

  • Requirements

  • The quick 5-minute build
  • What you get
  • Setup
  • Cloudwatch IAM Role

  • Grafana
  • Installing Grafana
  • Show me the UI!
  • Whats next?

  • The 10-minute build
  • What you get
  • Setup
  • Postgres RDS
  • Grafana
  • Logging in
  • Wrapping up
  • 요구 사항

  • Kubernetes 클러스터, AWS EKS
  • 지형
  • 빠른 5분 구축


    뭐 공부 해요?

  • 그라파나 실례
  • Cloudwatch 지표
  • AWS 서비스(EBS, EC2 등) 모니터링을 위한 Cloudwatch 대시보드
  • 설치 프로그램


    레노라 / 식단


    관측 가능한 도구를 설정하는 데 사용되는 처방 집합


    식단


    AWS 및 EKS에서 리소스를 설정하는 방법 집합
    이것은 제가 사람들에게 관찰할 수 있는 도구를 소개하고 그들에게 가능한 한 쉽게 인프라 시설에 추가할 수 있는 레시피를 제공하려고 시도한 것입니다. 따라서 이러한 설정 중 대부분이 당신의 생산 수요에 있어서 너무 간단할 수 있습니다(예를 들어 HA 고려, 유지 보수 과정). 만약에 제가 이 도구를 개선하고 간소화할 수 있다면나는 이 저장소를 업데이트해서 내가 미래에 설정한 식단 지침으로 삼을 것이다.

    요구 사항


    이 저장소는 다음 도구가 설치되어 있고 IAM 권한이 있어야 테라폼과 함께 사용할 수 있다고 가정합니다 (관리자가 가장 좋습니다).
  • 지형>= v0.12.29
  • 지형>= v0.23.6
  • kubectl>=1.18
  • 키 > = 3.3.0
  • 메모

    This is not a free tier compatible setup and any costs incurred will be bared by you and you…


    View on GitHub
    github.com/ryanoolala/recipes에서 복제 레시피 라이브러리를 사용하면 본고에서 설정을 인용할 것입니다

    Cloudwatch IAM 역할


    우선 클라우드워치에서 지표를 얻을 수 있는 권한을 가진 IAM 캐릭터를 만듭니다. 속도를 높이기 위해서는terraform을 사용하여 캐릭터를 설정합니다. 제 경우terragrunt를 사용하지만, 입력을 terraform 모듈 변수 입력으로 쉽게 복사할 수 있습니다.
    module "cloudwatch-iam" {
      source = "git::https://gitlab.com/govtechsingapore/gdsace/terraform-modules/grafana-cloudwatch-iam?ref=1.0.0"
      allow_role_arn = arn:aws:iam::{{ACCOUNT_ID}}:role/ryan20200826021839068100000001
      name = "ryan"
    }
    
    grafana cloudwatch iam 모듈은 EKS ARN 역할을 가지고 있습니다. 이것은 저희 Grafana 응용 프로그램이 노드에서 실행되고 이cloudwatch 역할을 맡으며 AWS API에서 지표를 추출할 수 있는 권한을 부여받았기 때문입니다.이것은 제공했다grafana_role_arn = arn:aws:iam::{{ACCOUNT_ID}}:role/grafana-cloudwatch-role-ryan

    그라파나


    흥미로운 것은 우리가helm3를 이용하여 Grafana를 배치할 것이다.kubectl 컨텍스트를 이 서비스를 호스팅할 클러스터로 설정하고 IAM 역할을 방금 작성한 동일한 AWS 계정에 속합니다.
    우리는 데이터 원본을 만듭니다.다음 값의yaml 파일을 사용하려면 위의 출력으로 바꾸십시오assumeRoleArn.
    # file://datasource.yaml
    datasources:
      datasources.yaml:
        apiVersion: 1
        datasources:
          - name: Cloudwatch
            type: cloudwatch
            isDefault: true
            jsonData:
              authType: arn
              assumeRoleArn: "arn:aws:iam::{{ACCOUNT_ID}}:role/grafana-cloudwatch-role-ryan"
              defaultRegion: "ap-southeast-1"
              customMetricsNamespaces: ""
        version: 1
        # <bool> allow users to edit datasources from the UI.
        editable: true
    
    이것은grafana가 클라우드 워치 데이터 원본에서 시작할 수 있도록 합니다. 이 데이터 원본은 assumeRoleArn 을 사용하여 클라우드 워치 지표를 검색하도록 설정합니다.

    Grafana 설치


    $ helm install grafana stable/grafana -f https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/5min/k8s/grafana/values.yaml -f datasource.yaml --create-namespace --namespace grafana
    
    또는 저장소를 복제한 경우 datasource.yaml./metrics/grafana/5min/k8s/grafana 에 넣고 실행하십시오.
    $ cd ./metrics/grafana/5min/k8s/grafana && make install.datasource
    
    몇 분 후, 너는 그라파나 달리기를 할 것이다
    $ kubectl get pod -n grafana
    NAME                          READY   STATUS     RESTARTS   AGE
    grafana-5c58b66f46-9dt2h      2/2     Running    0          84s
    
    대시보드에 액세스하려면 실행
    $ kubectl port-forward svc/grafana -n grafana 8080:80
    Forwarding from 127.0.0.1:8080 -> 3000
    Forwarding from [::1]:8080 -> 3000
    

    사용자 인터페이스 보여줘!


    http://localhost:8080로 이동하면 Grafana UI가 표시됩니다.

    이 대시보드를 어디에서 불러왔는지 알고 싶다면, grafana's dashboard site 에서 찾았고, 몇 가지를 선택한 다음 설정values.yaml을 통해 불러왔습니다.
    # https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/5min/k8s/grafana/values.yaml#L364
    
    dashboards:
      default:
        aws-ec2:
          url: https://grafana.com/api/dashboards/617/revisions/4/download
        aws-ebs:
          url: https://grafana.com/api/dashboards/11268/revisions/2/download
        aws-cloudwatch-logs:
          url: https://grafana.com/api/dashboards/11266/revisions/1/download
        aws-rds:
          url: https://grafana.com/api/dashboards/11264/revisions/2/download
        aws-api-gateway:
          url: https://grafana.com/api/dashboards/1516/revisions/10/download
        aws-route-53:
          url: https://grafana.com/api/dashboards/11154/revisions/4/download
        aws-ses:
          url: https://grafana.com/api/dashboards/1519/revisions/4/download
        aws-sqs:
          url: https://grafana.com/api/dashboards/584/revisions/5/download
    

    다음은 무엇입니까?


    우리가 방금 배치한 내용은 약간의 제한이 있다. 비록 UI는 편집을 허용하고 심지어 새로운 대시보드를 추가할 수 있지만, 우리가 변경한 것은 영구적이지 않다. 왜냐하면 우리는 이 설정에 어떠한 영구적인 저장도 제공하지 않았기 때문이다.더 잘하자!

    10분 구축


    변경 사항을 저장하기 위한 몇 가지 방법이 있습니다. 가장 간단한 방법은 블록 저장소(EBS) 볼륨을 실례에 추가하고 설정을 디스크에 저장하는 것입니다.그러나 EBS는 스토리지 드라이버가 아니기 때문에 가용성 영역과 EKS 노드에 걸쳐 Grafana 인스턴스를 확장할 수 없습니다.내가 보기에 다음 가장 간단한 해결 방안은 AWS 관계 데이터베이스 서비스(RDS)를 사용하는 것이다. 이것은 완전히 관리되고 자동 백업과 고가용성(HA)을 가지며 Grafana의 지구층이다.

    뭐 공부 해요?

  • HA Grafana with persistence
  • 설치 프로그램


    박사 후 RDS


    이 예에서 우리는postgres를 사용할 것이다. 비록 Grafana도 MySQL과 sqlite3를 지원하지만.주제에서 벗어나지 않기 위해서 데이터베이스 설정 설명을 생략하겠습니다. 만약에 제가 테라포밍 배치 실례를 어떻게 사용하는지 알고 싶으면 제 README 에서 더 많은 내용을 읽을 수 있습니다.
    테라포름에 익숙하지 않으면 좀 복잡할 수 있습니다. 따라서 AWS 컨트롤러를 사용하여postgres를 만드는 것이 좋습니다. 10분 안에 완성할 수 있도록 더 쉽고 더 빠를 것입니다.

    그라파나


    현재postgres 데이터베이스 설정이 있습니다. 이 대상에 연결하는 데 필요한 증거를 포함하기 위해kubernetes 비밀 대상을 만들 것입니다.
    $ cd ./metrics/grafana/10min/k8s/grafana
    $ make secret
    Removing old grafana-db-connection...
    secret "grafana-db-connection" deleted
    Postgres Host?: 
    mydbhost.com
    Postgres Username?: 
    myuser
    Postgres Password? (keys will not show up in the terminal): 
    Attempting to create secret 'grafana-db-connection'...
    secret/grafana-db-connection created
    
    이 비밀ReadWriteMany은 우리grafana-db-connection에서 사용될 것이며, 환경values.yamlGF_DATABASE_TYPE로 설정할 것이다.
    # https://github.com/ryanoolala/recipes/blob/cf7839e9e919735c72fee77450d891f8ee13ef17/metrics/grafana/10min/k8s/grafana/values.yaml#L268
    ## Extra environment variables that will be pass onto deployment pods
    env:
      GF_DATABASE_TYPE: "postgres"
    
    # https://github.com/ryanoolala/recipes/blob/cf7839e9e919735c72fee77450d891f8ee13ef17/metrics/grafana/10min/k8s/grafana/values.yaml#L282
    envFromSecret: "grafana-db-connection"
    
    이 변경 사항을 완료하면 현재 배포된 Grafana를 업그레이드하거나, 새로운 설정부터
    $ helm install grafana stable/grafana -f https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/10min/k8s/grafana/values.yaml --create-namespace --namespace grafana
    
    또는 저장소가 복제된 경우 실행
    $ cd ./metrics/grafana/10min/k8s/grafana && make install
    
    이 새 Grafana는 시스템을 변경하고 데이터 원본과 대시보드를 추가하며 데이터베이스에 저장할 수 있습니다. 그러면 실례적인 재시작과 재시작을 걱정할 필요가 없습니다.

    로그인 중


    편집하려면 관리자 사용자를 사용하여 로그인해야 합니다. 설치 과정에서 postgres 의 다음 내용을 수정하여 기본 사용자 이름과 암호를 설정할 수 있습니다.
    # Administrator credentials when not using an existing secret (see below)
    adminUser: admin
    adminPassword: strongpassword
    
    Grafana가 시작되면 UI에서 암호를 변경할 수 있습니다. 새 암호는 데이터베이스에 저장되어 나중에 로그인 세션에 사용할 수 있습니다.

    끝내다


    grafanahelm 그래프를 어떻게 사용하는지 알고 클라우드 워치 도량 계기판을 표시하도록 설정할 수 있기를 바랍니다.
    다음 부분에서 저는 프로메테우스 배치에 대한 더 많은 정보를 공유할 것입니다. 이것은ec2 노드의 CPU/RAM 사용 상황과POD를 포함하여kubernetes 집단 내의 더 많은 견해를 제공할 것입니다.이 정보들은 우리가 배치된 응용 프로그램을 더욱 잘 이해하는 데 도움을 줄 것이다.

    좋은 웹페이지 즐겨찾기