ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws grafana, prometheus 구성_5
    카테고리 없음 2025. 5. 26. 18:35

    RDS 모니터링 구성

    EC2 와 다르지 않다.

     

    기존에 받았던 cloudwatch_exporter 의 examples/RDS.yml 사용
    
    cp -r a_account_ec2/ a_acount_rds
    
    cd a_acount_rds
    
    cp examples/RDS.yml ./config.yml

     

    아래 주석이 없는 3가지만 모니터링 할 예정

    region: us-west-2
    role_arn: arn:aws:iam::acount_id:role/cloudwatch_exporter_role
    metrics:
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: DatabaseConnections
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Maximum
    #
    
    
    - aws_dimensions:
      - DBInstanceIdentifier
      aws_metric_name: FreeStorageSpace
      aws_namespace: AWS/RDS
      aws_statistics:
      - Average
    - aws_dimensions:
      - DBInstanceIdentifier
      aws_metric_name: FreeableMemory
      aws_namespace: AWS/RDS
      aws_statistics:
      - Average
    - aws_dimensions:
      - DBInstanceIdentifier
      aws_metric_name: CPUUtilization
      aws_namespace: AWS/RDS
      aws_statistics:
      - Average
    
    
    ##- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: ReadIOPS
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Sum
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: WriteIOPS
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Sum
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: ReadLatency
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: WriteLatency
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: ReadThroughput
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: WriteThroughput
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: CPUCreditUsage
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: CPUCreditBalance
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: DiskQueueDepth
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: NetworkTransmitThroughput
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: NetworkReceiveThroughput
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average
    #- aws_dimensions:
    #  - DBInstanceIdentifier
    #  aws_metric_name: TransactionLogsDiskUsage
    #  aws_namespace: AWS/RDS
    #  aws_statistics:
    #  - Average

     

    Dockerfile

    FROM eclipse-temurin:21-jdk-noble as builder
    
    SHELL ["/bin/bash", "-xe", "-o", "pipefail", "-c"]
    
    ARG MAVEN_VERSION=3.8.5
    ARG MAVEN_SHA512=89ab8ece99292476447ef6a6800d9842bbb60787b9b8a45c103aa61d2f205a971d8c3ddfb8b03e514455b4173602bd015e82958c0b3ddc1728a57126f773c743
    
    ADD https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz /opt/maven.tar.gz
    RUN mkdir -p /opt/maven \
     && echo "${MAVEN_SHA512}  /opt/maven.tar.gz" | sha512sum -c \
     && tar -x --strip-components=1 -C /opt/maven -f /opt/maven.tar.gz
    ENV PATH /opt/maven/bin:${PATH}
    
    WORKDIR /cloudwatch_exporter
    COPY . /cloudwatch_exporter
    
    RUN mvn package \
     && mv target/cloudwatch_exporter-*-with-dependencies.jar /cloudwatch_exporter.jar
    
    FROM eclipse-temurin:21-jre-noble as runner
    LABEL maintainer="The Prometheus Authors <prometheus-developers@googlegroups.com>"
    EXPOSE 9106
    
    WORKDIR /
    RUN mkdir /config
    ADD config.yml /config/
    COPY --from=builder /cloudwatch_exporter.jar /cloudwatch_exporter.jar
    ENTRYPOINT [ "java", "-jar", "/cloudwatch_exporter.jar", "9106"]
    CMD ["/config/config.yml"]
    RUN apt-get update -y
    RUN apt-get install vim -y

     

     

    docker build -t a_acount_rds:v1 .
    docker run -d -p 9107:9106 --name a_acount_rds a_acount_rds:v1
    
    AWS 콘솔
    모니터링 서버의 보안 그룹에서 9107 포트 오픈
    
    웹
    모니터링서버 ip:9107

     

    문제없이 열리면 완료.

     

    이제 prometheus 수정

    a_acount_rds 의 컨테이너 ip 확인
    컨테이너 ip 확인 : docker inspect a_acount_rds | grep IPAddress
    
    
    global:
      scrape_interval: 1m
      evaluation_interval: 1m
    
    scrape_configs:
      - job_name: 'a_acount_ec2'
        static_configs:
          - targets: ['172.17.0.2:9106']
        metric_relabel_configs:
          - source_labels: [tag_Name]
            target_label: instance_name
    
      - job_name: 'a_acount_rds'
        static_configs:
          - targets: ['172.17.0.5:9106']
    
    1. 컨테이너에 직접 접속해서 수정
    docker exec -it -u root prometheus /bin/sh
    
    2. prometheus.yml 수정 후 이미지 - 새 컨테이너 구동
    예시)
    vi /home/ec2-user/prometheus/prometheus.yml
    docker build -t prometheus:v2 .
    docker run -d -p 9090:9090 --name prometheus prometheus:v2
    
    1, 2 둘 중 하나 선택
    
    저장 후
    docker restart prometheus

     

    prometheus 웹 새로고침 후 

     

     

     

    위와 같이 되면 완료.

     

    grafana 로 이동

    이번엔 dashboard 복붙

     

    Edit 클릭

     

    Save as copy 클릭

     

    이름 변경

     

    Dashboards 를 누르면 a_acount_rds 가 있다.

     

    a_acount_rds -> 판넬 선택 - Edit

     

    ec2 와 동일하지만 code 부분만 변경하면 된다.

     

    aws_rds_cpuutilization_average{dbinstance_identifier=~"(db1|test-db|abcd-db).*"}
    
    
    ec2와 다르게 instance_name 이 아닌 {{dbinstance_identifier}}

     

    RDS 이름만 나오게 된다.

     

     

    이번엔 memory 와 free storage. 다른 판넬에 들어가서 code 부분만 변경해주면 된다.

    RDS 메모리 모니터링
    aws_rds_freeable_memory_average{dbinstance_identifier=~"(db1|test-db|abcd).*"}
    
    RDS Free storage 모니터링
    aws_rds_free_storage_space_average{dbinstance_identifier=~"(db1|test-db|abcd).*"}

     

Designed by Tistory.