카테고리 없음
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}} 변경