Service Running without Kubernetes Building

Screen Shot 2022-06-10 at 2.20.14 AM.png

메트릭 데이터를 스크레이핑(긁어오는)하는 Prometheus 와 그 데이터를 추출하는 Node exporter, 그 데이터를 대쉬보드 포맷으로 도식화하는 Grafana 모두 설치하고 리부팅 후에도 백그라운드 서비스로 구동될 수 있도록 아래 가이드를 따라 실행하도록 한다. 제일 마지막 부분에는 Grafana 대쉬보드 판넬을 자신의 취향대로 설정하는 방법을 첨부했으니 인터넷 검색하면서 같이 참고하면 어떠한 노드라도 효율적으로 모니터링할 수 있다.

  1. Prometheus 설치

    1-1. Prometheus 계정 추가

    root 권한이 아닌 일반 유저로 설치 진행

    만약 root로 로그인 상태라면 exit를 입력하여 빠져 나온 후 아래 명령 실행

    cd

    sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

    1-2. Prometheus 설치

    sudo apt-get install -y prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager

    정상적으로 설치되면 박스 표시한 부분이 마지막에 나타난다

    정상적으로 설치되면 박스 표시한 부분이 마지막에 나타난다

    설치가 완료되면 아래 명령으로 프로세스가 동작하는 지 확인

    ps -ef | grep prometheus

    Screen Shot 2022-06-11 at 5.18.08 AM.png

  2. Grafana 설치

2-1. 저장소 추가

sudo add-apt-repository "deb <https://packages.grafana.com/oss/deb> stable main"

Screen Shot 2022-06-11 at 5.19.27 AM.png

위 명령 실행 중 NO_PUBKEY 메세지가 나오면 우측의 박스 표시된 부분의 코드를 복사한 후 아래 에러 해결 순서에 따라 진행한다

에러 해결 순서

  1. keyserver.ubuntu.com/ 접속
  2. 위 에러 메세지에 출력된 박스 표시된 Public Key를 복사하여 위 사이트의 검색창에 입력한 후 서치 단, 6AF0……0 이면 0x6AF0…….0 처럼 앞에 0x를 붙여야 함! (중요)

스크린샷 2022-05-19 18.11.17.png

  1. 화면에 결과가 나타나면 pub 우측 부분의 링크를 클릭한다

스크린샷 2022-05-19 18.12.11.png

  1. 그러면 -----BEGIN PGP PUBLIC KEY BLOCK----- 으로 시작하여 키가 나오고 -----END PGP PUBLIC KEY BLOCK----- 으로 끝나는 내용이 출력됨

  2. 전체 내용을 모두 복사하여 적당한 파일로 저장 (my-key.txt 등)

스크린샷 2022-05-19 18.04.11.png

  1. 파일을 저장하였으면 아래 명령 실행
sudo apt-key add my-key.txt
OK

# OK 가 출력되면 문제 해결된 것임
# 다시 저장소 추가 명령 입력

sudo add-apt-repository "deb <https://packages.grafana.com/oss/deb> stable main"

Hit:1 <http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu> bionic InRelease
Hit:2 <http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu> bionic-updates InRelease
Hit:3 <http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu> bionic-backports InRelease
Hit:4 <http://security.ubuntu.com/ubuntu> bionic-security InRelease
Get:5 <https://packages.grafana.com/oss/deb> stable InRelease [12.1 kB]
Get:6 <https://packages.grafana.com/oss/deb> stable/main amd64 Packages [13.8 kB]
Fetched 13.8 kB in 1s (9670 B/s)
Reading package lists... Done

# 위와 같이 결과가 출력되면 저장소 추가 작업이 문제없이 완료된 것임

2-2. Key 다운로드

curl <https://packages.grafana.com/gpg.key> | sudo apt-key add -

2-3. Grafana 설치

sudo apt-get install grafana

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  fontconfig-config fonts-dejavu-core libfontconfig1
The following NEW packages will be installed:
  fontconfig-config fonts-dejavu-core grafana libfontconfig1
0 upgraded, 4 newly installed, 0 to remove and 57 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 176 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

# y 입력하고 계속 진행

Screen Shot 2022-06-11 at 5.28.56 AM.png

마지막 부분에 위의 박스 표시된 부분이 나타나야 정상적으로 설치된 것임

2-4. Grafana 시작

# 아래 3개의 명령을 순서대로 실행

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

# Grafana 가 정상 동작 하는 지 아래 명령으로 확인

ps -ef | grep grafana

grafana  32146     1  3 15:27 ?        00:00:00 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning
ubuntu   32263 29893  0 15:27 pts/1    00:00:00 grep --color=auto grafana

2-5. 설정 파일 위치 확인

# 아래 명령 실행 후 grafana.ini 파일이 정확한 위치에 있는 지 확인하고 그냥 나온다

sudo nano /etc/grafana/grafana.ini
  1. Prometheus 설정

    # 아래 명령으로 Prometheus 설정 파일을 열어 데이터 수집 대상 서버 정보를 아래와 같이 입력한다
    
    sudo nano /etc/prometheus/prometheus.yml
    
    # 맥 OS에서 실행하는 경우에는 설정파일이 아래 경로에 위치한다
    
    nano /usr/local/etc/prometheus.yml
    
    # 아래 내용을 복사하여 설정 파일 제일 아래에 붙여넣고 저장
    
      - job_name: aptos
        # If prometheus-node-exporter is installed, grab stats about the local
        # machine by default.
        static_configs:
          - targets: ['서버주소:9101', '서버주소:9103']
    
    # 만약 Validator만 운영하고 Fullnode는 운영하지 않는다면 ['서버주소:9101'] 만 입력하여도 좋고, 그대로 두어도 문제없다
    # 이미 설정되어 있는 부분도 IP주소 부분은 모두 서버 주소로 수정하고 저장
    

    Screen Shot 2022-06-11 at 5.58.15 AM.png

    # 설정 파일 수정 후에는 반드시 아래 명령으로 Prometheus 서비스를 리스타트한다
    
    sudo systemctl reload prometheus.service
    

    여기까지 문제없이 진행했다면 서버 쪽에 해주어야 할 데이터 스크레이핑 서비스 환경구축 과정은 모두 마쳤다.

  2. 방화벽 설정

Node Exporter는 9100번 포트로 Prometheus와 공유하고,

Prometheus는 Aptos 9101 및 9103번 포트로부터 긁어 온 데이터를 9090번 포트로 Grafana와 공유하고,

Grafana는 3000번 포트를 통해 도식화된 정보를 유저와 공유한다

따라서 원격으로 서버에 접속하여 대쉬보드로 모니터링하기 전에 적절한 설정을 하기 위해서는 위에서 언급한 각 단계의 포트를 모두 오픈하여야만

원격으로 각 모니터링 툴의 설정이 가능하다. 따라서 3000, 9100, 9090 3 개 포트는 방화벽에 의해 막혀 있는 지 미리 확인하자

특히 본인이 우분투 OS 자체 방화벽을 별도 설정없이 disable 상태로 두었다면 디폴트로 인바운드 접속은 모두 거부되고 모니터링 불가능하다

아래 순서대로 명령 실행

sudo ufw enable
sudo ufw allow 3000
sudo ufw allow 3000/tcp
sudo ufw allow 9100
sudo ufw allow 9100/tcp
sudo ufw allow 9090
sudo ufw allow 9090/tcp

# 현재 방화벽에 등록된 포트 오픈 현황보려면 아래 명령 실행

sudo ufw status verbose

# 위 명령을 모두 실행하고 나서 실제 효력이 발생하기 위해서는 리부팅이 필요하다

sudo reboot now
  1. 모니터링 웹페이지 접속

서버주소:9090/targets 를 브라우저 주소창에 입력하면 아래와 같은 Prometheus 웹페이지 화면이 나타난다

스크린샷 2022-05-22 23.14.40.png

위 화면에서 각각의 Endpoint를 클릭하여 들어가 보면 아래와 같은 데이터가 나타난다

아래와 같은 데이터가 보이지 않거나 접속 불능 상태라면 방화벽이 확실히 열려있는 지 다시 확인해야 한다

Prometheus 설정파일에서 추가한 9101 9103 포트에서 데이터가 잘 추출되는 지 확인하고 문제없다면 특별히 다른 설정은 필요없다

스크린샷 2022-05-22 23.26.18.png

브라우저를 열고 본인서버IP:3000 을 주소창에 입력하면 아래와 같은 Grafana 화면이 나타나며 admin admin 으로 진입(별도 비번 불필요)

스크린샷 2022-05-20 11.44.28.png

스크린샷 2022-05-20 11.46.13.png

제일 먼저 좌측 메뉴 설정에서 데이터 소스를 선택하고

스크린샷 2022-05-22 22.47.28.png

Prometheus를 선택한 후

스크린샷 2022-05-22 22.48.07.png

HTTP URL 설정을 서버주소로 수정하면 끝이다

스크린샷 2022-05-22 23.39.54.png

완성된 대쉬보드를 가져오기 위해 Create - Import 를 선택

스크린샷 2022-05-20 11.47.55.png

그리고 나서 아래 Aptos-Core Github 저장소 https://github.com/aptos-labs/aptos-core/tree/main/dashboards 로 가서

본인이 Import하고 싶은 json 파일의 Copy raw contents 버튼을 클릭하여 내용을 모두 복사 후 아래 화면처럼 json 파일 내용을 붙여 넣고 Load 클릭

스크린샷 2022-05-21 14.38.29.png

스크린샷 2022-05-20 12.08.45.png

대쉬보드를 닫고 나중에 다시 열어서 볼려면 Grafana 접속 후 좌측 메뉴에서 Dashboards - Browse를 선택하면 아래 화면처럼 이미 Load 되었던 Dashboard를 선택할 수 있다

스크린샷 2022-05-20 12.10.44.png

Aptos-Core Github 저장소 https://github.com/aptos-labs/aptos-core/tree/main/dashboards 에서 가장 아름답고 추출 항목이 다양하여

많은 즐거움을 주는 dashboard json 파일은 https://github.com/aptos-labs/aptos-core/blob/main/dashboards/state-sync-v2.json 이다

모두 성공적으로 모니터링 환경을 구축하고 이 json 파일로 dashboard를 눈 앞에 펼쳐보기 바란다

이상 핵심적인 부분에 대한 가이드를 마치고 대쉬보드 판넬 설정 부분은 각자 인터넷 검색하고 공부하면서 직접 해보자

참고로 대쉬보드 판넬을 추가하고 원하는 메트릭 항목을 추출하는 방법만 소개하겠다

Screen Shot 2022-06-10 at 1.43.59 AM.png

Screen Shot 2022-06-10 at 1.44.37 AM.png

메트릭 데이터를 추출하기 위해 서치할 항목 이름을 입력 (단어만 입력하면 해당 단어를 포함한 항목이 모두 나타난다)

메트릭 데이터를 추출하기 위해 서치할 항목 이름을 입력 (단어만 입력하면 해당 단어를 포함한 항목이 모두 나타난다)

적절한 대쉬보드 타입을 선택

적절한 대쉬보드 타입을 선택

판넬에 표시할 제목을 아래 추출항목 이름을 복붙하여 수정

판넬에 표시할 제목을 아래 추출항목 이름을 복붙하여 수정

컬러 구현 방식도 선택 가능하다. 설정이 끝나면 우측 상단 Apply 버튼 클릭

컬러 구현 방식도 선택 가능하다. 설정이 끝나면 우측 상단 Apply 버튼 클릭

판넬 사이즈는 우측 하단 모서리로 마우스를 가져가서 조절

판넬 사이즈는 우측 하단 모서리로 마우스를 가져가서 조절

판넬을 추가하여 다른 항목을 추출하려면 위에서 했던 순서대로 반복하면 된다

판넬을 추가하여 다른 항목을 추출하려면 위에서 했던 순서대로 반복하면 된다

AIT2를 앞두고 Validator와 Fullnode monitoring dashboard를 만들어 보았다. 원한다면 만들 수 있다.

AIT2를 앞두고 Validator와 Fullnode monitoring dashboard를 만들어 보았다. 원한다면 만들 수 있다.

Grafan 설정에 충분히 익숙해지고 난 후 좀 더 다양한 정보를 추가하고 싶다면 node exporter collector 정보를 검색하여 필요한 collector를 추가하면 선택할 수 있는 정보가 늘어난다.

아래 링크를 참고하기 바란다.

node exporter docker로 실행

https://danawalab.github.io/common/2021/10/06/Common-Node-exporter.html

node exporter collector List

https://github.com/prometheus/node_exporter#node-exporter