카테고리 없음

aws grafana, prometheus 구성_6

plli 2025. 5. 26. 19:51

Elasticache 모니터링

RDS 와 동일하다.

기존에 받았던 cloudwatch_exporter 의 examples/ElastiCache.yml 사용

cp -r a_account_ec2/ a_acount_cache

cd a_acount_cache

cp examples/ElastiCache.yml ./config.yml

 

cpu 와 free memory 만 모니터링

region: us-west-2
role_arn: arn:aws:iam::acount_id:role/cloudwatch_exporter_role

metrics:
- aws_dimensions:
  - CacheNodeId
  - CacheClusterId
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/ElastiCache
  aws_statistics:
  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: CPUCreditBalance
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
- aws_dimensions:
  - CacheNodeId
  - CacheClusterId
  aws_metric_name: FreeableMemory
  aws_namespace: AWS/ElastiCache
  aws_statistics:
  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: NetworkBytesIn
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: NetworkBytesOut
#  aws_metric_name: NetworkBytesOut
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SwapUsage
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: CacheHits
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: CacheMisses
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: CurrConnections
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: NewConnections
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: GetTypeCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SetTypeCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: EngineCPUUtilization
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: BytesUsedForCache
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: HashBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: HyperLogLogBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: KeyBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: ListBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SetBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SetTypeCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SortedSetBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: StringBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: StreamBasedCmds
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: CurrItems
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: ActiveDefragHits
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: Evictions
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: Reclaimed
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: SaveInProgress
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: ReplicationLag
#  aws_namespace: AWS/ElastiCache
#  aws_statistics:
#  - Average
#- aws_dimensions:
#  - CacheNodeId
#  - CacheClusterId
#  aws_metric_name: ReplicationBytes
#  aws_namespace: AWS/ElastiCache
#  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"]

 

 

docker build -t a_acount_cache:v1 .
docker run -d -p 9108:9106 --name a_acount_cache a_acount_cache:v1

AWS 콘솔
모니터링 서버의 보안 그룹에서 9108 포트 오픈

웹
모니터링서버 ip:9108

 

문제없이 열리면 완료.

 

이제 prometheus 수정

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']

  - job_name: 'a_acount_cache'
    static_configs:
      - targets: ['172.17.0.6: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

code

aws_elasticache_cpuutilization_average{cache_cluster_id=~".*(redis).*"}

Legend 는 {{cache_cluster_id}} 변경