Ubuntu 20.04 에 Grafana 설치해서 서버 모니터링 하는 방법입니다.

 

초기 삽질을 많이 해야하기 때문에, 제가 성공한 방법을 공유합니다.

 

필요하신분들은 보고서 따라하시면 됄듯합니다.

 

1. Grafana 설치.

 

기본적인 설치는 공식 사이트를 확인해서 순서대로 따라가면 됍니다.

 

Install on Debian/Ubuntu | Grafana Labs

 

Install on Debian/Ubuntu

Install on Debian or Ubuntu This page explains how to install Grafana dependencies, download and install Grafana, get the service up and running on your Debian or Ubuntu system, and also describes the installation package details. Note on upgrading While t

grafana.com

 

일단 ufw 상태를 확인합니다.

(vultr 가 지금까지 ufw 가 켜진적이 없는데, 최신 이미지부터는 ufw 가 켜져있더군요;;)

 

ufw status

 

아래와 같이 나온다면, ufw 를 꺼주시거나, 앞으로 사용하게 돼는 포트들을 열어주시면 됍니다.

 

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

 

ufw 를 끄는 명령어입니다.

 

ufw disable

 

다시 한번 상태를 확인하는 ufw status 를 쳐서 아래와 같이 나온다면 방화벽이 꺼진겁니다.

 

Status: inactive

 

공홈에서는 엔터프라이즈 버전을 설치하는것을 권장하는데, 여기서는 오픈소스 버전을 설치하도록 하겠습니다.

(워차피 큰 차이가 없어보입니다. 둘다 설치해봤는데, 그게 그거.. 그리고 다른 서비스들도 대부분 OSS 버전 설치를 권장하고 있어서, 일단 OSS 버전으로..)

 

아래의 명령어를 순서대로 쳐서 grafana 를 설치합니다.

 

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

sudo apt-get update
sudo apt-get install -y grafana

 

저장소에서 설치한거기 때문에, service 등록은 넘어가도록합니다.

 

그리고 선택사항이라고는 하는데, 일단 공홈에서 하라고 하니까 해주도록 합니다.

 

아래의 명령어를 쳐주세요.

 

systemctl edit grafana-server.service

 

그러면 빈 페이지의 파일이 열리는데..

 

아래의 텍스트를 복사해서 붙여넣습니다.

 

[Service]
# Give the CAP_NET_BIND_SERVICE capability
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE

# A private user cannot have process capabilities on the host's user
# namespace and thus CAP_NET_BIND_SERVICE has no effect.
PrivateUsers=false

 

붙여넣은후에는 Ctrl+O -> Enter -> Ctrl+X 를 순서대로 눌러서 빠져나옵니다.

 

아래의 명령어를 다시 순서대로 쳐줍니다.

 

sudo service grafana-server start
sudo service grafana-server status

sudo update-rc.d grafana-server defaults

 

sudo service grafana-server status 를 친후에 빠져나오려면, Ctrl+C 를 두번 눌러줍니다.

 

서비스가 실행이 정상적으로 됐다면, 접속을 해봅니다.

 

http://{Grafana Server IP}:3000

 

 

이런 로그인 화면이 나오면 성공입니다.

 

초기 아이디와 비밀번호는 admin / admin 입니다.

 

로그인을하면, 비밀번호를 바꾸라고하는데, 비밀번호를 변경해줍니다.

 

 

비밀번호를 변경하거나, 혹은 넘기시면 대시보드 화면이 나오게 됍니다.

 

 


 

2. Prometheus 설치.

 

그러면 이제 각 서버로부터 데이터를 입력받을 Prometheus 를 설치합니다.

 

아래의 명령어를 쳐서 prometheus 와 prometheus-node-exporter (ubuntu 상태 확인용) 를 설치합니다.

 

sudo apt install -y prometheus prometheus-node-exporter

 

설치가 완료돼면, 데이터를 저장하는 기간을 수정합니다.

 

sudo vi /etc/default/prometheus

 

2번째 줄에 ARGS="" 라는게 있는데, 이걸 수정합니다.

 

ARGS="--storage.tsdb.retention=15d"

 

기본 설정은 15일이며, 로그가 쌓이는 속도를 보고서 수정하시면 됍니다.

 

설정까지 수정이 완료돼었다면, Prometheus 에 접속해봅니다.

 

http://{Your Prometheus IP}:9090

 

아래와 같은 화면이 나온다면 성공입니다.

 

 

그러면 prometheus 설치가 종료돼었기 때문에, grafana 대시보드에 추가하도록 합니다.

 

 

대시보드에서 왼쪽메뉴 -> 톱니바퀴 -> Data sources 를 클릭합니다.

 

그러면 위와 같은 화면이 나오는데, Add data source 를 눌러줍니다.

 

 

여러가지가 나오는데, 그중에서 Prometheus 를 사용할거기 때문에, 눌러줍니다.

 

 

설정 화면이 나오는데, HTTP의 URL 은 Prometheus 의 주소를 입력합니다.

 

여기서는 localhost 기 때문에, 기본값인 http://localhost:9090 를 입력합니다.

 

 

맨 아래로 내리면 Save & test 버튼이 있는데, 눌러서 저장합니다.

 

 

이런 alert 이 뜨면 성공입니다.

 

이제 Linux Dashboard 를 확인해봅시다.

 

 

대시보드 왼쪽메뉴 -> + -> Import 로 이동합니다.

 

검색해보면 가장 많이 추천을 받는 대시보드인 1860 을 입력 후 Load 합니다.

 

Node Exporter Full dashboard for Grafana | Grafana Labs

 

Node Exporter Full dashboard for Grafana

Data visualization & monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases

grafana.com

 

로드하면 화면이 바뀌는데요.

 

 

Prometheus 선택 박스를 방금 설치한 Prometheus 로 선택한뒤 Import 합니다.

(현 상황에서는 하나만 나옵니다.)

 

 

그러면 위와 같은 화면이 나오는데, 빨간색? 핑크색?의 느낌표는 오류가 있다는 소리입니다.

 

위의 대시보드 사이트에서 22버전을 다운받도록합니다.

 

기존의 대시보드는 삭제합니다.

 

 

좌측 상단에 보면 톱니바퀴가 있는데, 눌러줍니다.

 

 

맨 아래쪽에 보면 Delete Dashboard 버튼이 있습니다.

 

눌러주세요.

 

진짜로 삭제할건지 물어보는데, 삭제하도록합니다.

 

그리고 다시 Dashboard 를 import 를 하는데, 이번에는 다운받은 json 파일을 선택해서 업로드합니다.

 

 

22버전으로 업로드를 하면 아무런 오류 없이, 정상적으로 데이터들이 보이게 됍니다.

(이상하게 22버전 이후로는 오류가 발생합니다. Grafana Agent 의 경우는 오류가 발생하지 않습니다.)

 


 

3. prometheus 에서 데이터가 오류가 나는지 아닌지 확인하는 법.

 

prometheus 에서 데이터가 재대로 저장하고 있는지를 확인하려면, 아래의 주소에서 확인이 가능합니다.

 

http://{Your Prometheus IP}:9090/targets

 

위의 주소로 들어가보시면, 아래와 같은 화면이 나오는데..

 

 

state 를 확인하시면 됍니다.

 

정상인 경우 UP, 오류가 발생한 경우는 DOWN 으로 표시됍니다.

 

오류의 내용은 맨 오른쪽에 Error 에서 확인이 가능합니다.

(오류 내용 확인하는거는 추후 mysql exporter 랑 연결할때 확인을 해볼 예정입니다.)

 


 

4. prometheus 의 host 명 변경

 

대시보드에 보시면 host 가 localhost:9100 으로 돼어있는것을 볼 수 있습니다.

 

이걸 변경해보겠습니다.

 

prometheus 설정 파일을 엽니다.

 

sudo vi /etc/prometheus/prometheus.yml

 

설정이 이것저것 나오는데..

 

맨 아래로 이동해서 아래의 코드를 찾습니다.

 

  - job_name: node
    # If prometheus-node-exporter is installed, grab stats about the local
    # machine by default.
    static_configs:
      - targets: ['localhost:9100']

 

위의 내용들이 대시보드에서 봤던 데이터들의 이름들입니다.

 

 

job_name 을 다른걸로 변경하면 대시보드에서도 변경됍니다.

(단, 대시보드가 5분의 데이터를 표시하게 했으면, 변경 후 5분이 지나야 node 가 사라지고 새로운 이름만 등장하게 됍니다.)

 

찾은 설정 아래에다가 아래처럼 내용을 추가합니다.

 

  - job_name: node
    # If prometheus-node-exporter is installed, grab stats about the local
    # machine by default.
    static_configs:
      - targets: ['localhost:9100']
    relabel_configs:
      - source_labels: ['__address__']
        target_label: instance
        replacement: 'Grafana'

 

수정후 저장한다음에 prometheus 를 재시작합니다.

 

sudo service prometheus restart

 

prometheus 대시보드로 이동합니다.

 

http://{Your Prometheus IP}:9090/targets

 

이동해서 보시면, instance="localhost:9100" 이 설정한 데이터로 변경됀것을 알 수 있습니다.

 

 

이렇게 확인이 필요한 경우는, grafana 에서 데이터 반영이 느릴 수 있어서입니다.

 

grafana 대시보드를 한번 새로고침하신후에 확인을 해보시면, 설정이 반영됀것을 확인 하실 수 있습니다.

 

 

아래의 localhost:9100 의 경우는 시간이 지나면 자동으로 사라지게 됍니다.

(즉, 시간이 해결해주니, 그냥 신경쓰지 말도록 합시다. 로그 데이터 삭제라도 하지 않는 이상은 안사라집니다.)

 

그러면 현재는 localhost 지만, 여러 IP 의 경우는 어떻게 수정을 하느냐..

 

위에서 수정한 파일 ( sudo vi /etc/prometheus/prometheus.yml ) 아래처럼 수정을 하시면 됍니다.

 

  - job_name: node
    # If prometheus-node-exporter is installed, grab stats about the local
    # machine by default.
    static_configs:
      - targets:
          - 'localhost:9100'

          # Test Server
          - '{Your Other Server IP}:9100'
          - '{Your Other Server IP}:9113'
          - '{Your Other Server IP}:9121'
          - '{Your Other Server IP}:9104'
    relabel_configs:
      - source_labels: ['__address__']
        regex: 'localhost:91[0-9]+'
        target_label: instance
        replacement: 'Grafana'

      - source_labels: ['__address__']
        regex: '{Your}\.{Other}\.{Server}\.{IP}:91[0-9]+'
        target_label: instance
        replacement: 'Test'

 

참고로 9113 번 포트는 nginx 의 stub_status 를 확인하기 위한 설정이고, 9121은 Redis, 9104는 MySQL 입니다.

 

nginx 의 access.log 의 경우는 다른 프로그램을 또 따로 깔아야하는데, Grafana Loki 라는 프로그램을 설치해야합니다.

 


 

5. Grafana Loki 설치하기.

 

Grafana Loki 는 NGINX access.log 와 같은 로그파일을 분석할때 필요로 합니다.

 

만약 Grafana Dashboard 에서 로그파일 분석 데이터가 필요없다면 설치를 안하셔도 괜찮습니다.

(예를들면, Prometheus 데이터만 사용하는 경우..)

 

GitHub - grafana/loki: Like Prometheus, but for logs.

 

GitHub - grafana/loki: Like Prometheus, but for logs.

Like Prometheus, but for logs. Contribute to grafana/loki development by creating an account on GitHub.

github.com

 

위의 깃허브 주소에서 최신버전을 확인 할 수 있습니다.

 

아래의 명령어를 순서대로 실행합니다.

 

loki 파일을 다운로드 할때는 버전(설명에서는 v2.4.2)과 서버의 CPU(설명에서는 amd64)를 꼭 체크해서 최신버전 및 자기자신에게 맞는 CPU 의 파일을 다운로드 받도록 합니다.

 

cd /etc/grafana/
wget https://github.com/grafana/loki/releases/download/v2.4.2/loki-linux-amd64.zip

unzip loki-linux-amd64.zip
chmod a+x loki-linux-amd64

rm -rf loki-linux-amd64.zip
mv loki-linux-amd64 loki

wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml

 

다 받았으면, service 로 생성을 합니다.

 

sudo vi /etc/systemd/system/grafana-loki.service

 

그리고 내용을 아래와 같이 넣습니다.

 

각 내용들은 잘 모르겠지만, 인터넷 검색해보니 이렇게 넣으라고 하니, 넣습니다.

 

[Unit]
Description=Grafana Loki
Documentation=https://github.com/grafana/loki
After=network-online.target

[Service]
User=root
Restart=always
ExecStart=/etc/grafana/loki --config.file=/etc/grafana/loki-local-config.yaml

[Install]
WantedBy=multi-user.target

 

그리고 서비스로 만드는 명령어를 순서대로 입력합니다.

 

systemctl daemon-reload
service grafana-loki restart
service grafana-loki status
systemctl enable grafana-loki

 

그러면 이제 grafana 대시보드로 이동합니다.

 

 

Data sources 로 이동한뒤에, Add data source 를 클릭합니다.

 

 

그리고 이번엔 Loki 를 클릭합니다.

 

 

이번에는 HTTP URL에 http://localhost:3100 을 입력합니다.

 

맨 아래쪽에 Save & test 를 눌러서 Prometheus 때처럼 성공 표시가 돼면 종료입니다.

 

이걸로 linux 로그 파일을 분석 할 준비가 모두 종료 돼었습니다.

 

다음글부터는 localhost 가 아닌 외부 서버 node(Linux), NGINX, MySQL, Redis 들의 exporter 들을 설치하고 연동하는 방법을 써볼까 합니다.

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

ラズベリーキューブ まどそふと

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

死に逝く君、館に芽吹く憎悪 バグシステム

Sanguinea-サングイネア- すにぃる

麗華の館 しすたーそふと

カスタムメイドオンライン KISS