회사에서 노드 익스포터를 사용할 일이 생겨서 정리해보자.
도커 허브에 이미 만들어진 노드 익스포터가 있지만 직접 만들어보자.
파일의 구조는 다음과 같다.
최상위 docker 폴더의 압축파일이다.
build-node-exporter.sh 는 내가 만든 도커파일로 이미지를 만들 때 사용한다.
build-node-exporter.sh
#!/bin/bash
IMAGE_NAME=node-exporter-pgt
IMAGE_TAG=0.01
IMAGE_NAME_TAG=$IMAGE_NAME:$IMAGE_TAG
if [[ "$(docker container ls -a --filter="status=exited" -q 2> /dev/null)" != "" ]]; then
docker rm $(docker container ls -a --filter="status=exited" -q)
fi
if [[ "$(docker images "dangling=true" -q 2> /dev/null)" != "" ]]; then
echo "Remove dangling images"
docker rmi $(docker images -f "dangling=true" -q)
fi
if [[ "$(docker container ls -q --filter "name=${CONTAINER_NAME}" 2> /dev/null)" != "" ]]; then
echo "Stop & Remove Container ${CONTAINER_NAME}"
docker stop $(docker container ls -q --filter "name=${CONTAINER_NAME}")
docker rm $(docker container ls -q --filter "name=${CONTAINER_NAME}")
fi
docker build \
-f ./node-exporter/node-exporter-dockerfile/Dockerfile \
-t $IMAGE_NAME_TAG .
Dockerfile 은 내가 만든 도커파일이다.
FROM ubuntu:18.04
LABEL title="node-exporter"
LABEL maintainer="parkgyeongtae"
# apt 미러서버 미국(default) -> 한국 변경
RUN sed -i 's@archive.ubuntu.com@kr.archive.ubuntu.com@g' /etc/apt/sources.list
# 자주 사용하는 패키지 설치
RUN apt-get update && \
apt-get install wget -y
# 작업 영역
WORKDIR /home
# node exporter 1.3.1
RUN wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz && \
tar -zxf node_exporter-1.3.1.linux-amd64.tar.gz && \
mv node_exporter-1.3.1.linux-amd64 node_exporter && \
rm -rf node_exporter-1.3.1.linux-amd64.tar.gz
ENTRYPOINT /home/node_exporter/node_exporter --web.listen-address=:9500 & bash
remove-image.sh 는 이미지를 지울 때 사용하는 쉘 스크립트다.
#!/bin/bash
docker rmi -f node-exporter-pgt:0.01
마지막으로 docker-compose.yml 은 컨테이너를 만들 때 사용한다.
version: '2.1'
services:
node-exporter:
hostname: node-exporter
container_name: node-exporter
image: node-exporter-pgt:0.01
restart: always
stdin_open: true
tty: true
ports:
- 9500:9500
먼저 내 도커의 컨테이너와 이미지를 확인해보자
docker ps -a
docker images
컨테이너와 이미지가 아무것도 없다.
이미지를 만드는 명령어를 실행해보자.
./node-exporter/node-exporter-build/build-node-exporter.sh
docker images
노드익스포터의 이미지를 만든 것을 확인할 수 있다.
이번에는 만든 이미지를 바탕으로 노드익스포터 컨테이너를 만들어보자.
docker-compose up -d
docker ps
컨테이너가 잘 실행된 것을 확인할 수 있다.
이번에는 노드익스포터가 잘 실행됐는지 확인하기위해,
노드익스포터 웹 ui 에 접속해보자!
접속이 잘 된다!
메트릭스를 눌러보자
'Database > Prometheus' 카테고리의 다른 글
[Prometheus] PromQL, Loki (0) | 2024.05.27 |
---|---|
[Prometheus] 기능 및 장단점 (0) | 2024.05.27 |
[Prometheus] 프로메테우스의 장점 (0) | 2023.05.13 |
[cadvisor] 도커 컨테이너로 cadvisor 설치하는 방법 (0) | 2022.04.02 |
[Node-Exporter] 노드 익스포터 설치, 웹 ui 포트 변경하는 방법 (0) | 2022.04.02 |