ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws grafana, prometheus 구성_6
    카테고리 없음 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}} 변경

     

     

Designed by Tistory.