-
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).*"}