Author: byun1114

  • 부팅 후 특정 웹 사이트 항상 열기

    Grafana 사이트에 접속하여 상태를 보여줄 수 있는 컴퓨터가 없어서 라즈베리 파이 하나 남아 있는 여유분으로 이 사이트를 보기로 했다. 라즈베리 파이의 경우 항상 시작하게 하려면 다음과 같이 한다.

    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

    다음의 내용을 추가한다.

    @xset s off
    @xset -dpms
    @xset s noblank
    @chromium-browser --kiosk http://rcc.work:4000/

    마우스 커서도 없애고 싶으면 unclutter 를 먼저 설치하고 다음의 내용을 추가한다.

    @unclutter -idle 0.1 -root
    

    2025-03-18 추가함

    최신 버전에서는 이상하게 위의 코드가 먹히지 않는다.

    일단 .bashrc 에 unclutter 와 chromium-browser –kiosk 를 실행시키도록 해서 해결하고 있다.

  • Prometheus

    node-exporter를 설치하였으니 이제 Prometheus를 설치할 차례이다. 역시 프로그램 파일을 받아서 이용해도 되고 Docker container를 이용해도 된다. Docker를 이용한 방법을 설명한다. 9090번 포트를 이용해서 환경 설정 화면에 들어갈 수 있다.

    sudo docker run \
        -itd \
        -p 9090:9090 \
        --restart always \
        --name prometheus \
        prom/prometheus

    Docker를 이용한다면 promethus.yml 파일을 수정해서 정보를 수집한 시스템을 입력해 주어야 한다. 컨테이너에 접근해도 수정할 수 없으므로 해당 파일을 컨테이너가 설치된 컴퓨터로 복사해서 수정한다. 수정한 후에 다시 컨테이너로 복사해 준다.

    sudo docker cp prometheus:/etc/prometheus/prometheus.yml .
    ...
    nano prometheus.yml
    ...
    sudo docker cp prometheus.yml prometheus:/etc/prometheus/prometheus.yml

    다음과 같이 추가하면 된다. job_name은 적절한 것을 선택하면 된다.

    scrape_configs:
      - job_name: "server"
        static_configs:
          - targets: ["10.10.10.170:9100", "10.10.10.184:9100", "10.10.10.171:9100", "10.10.10.178:9100"]

    1분 정도 시간이 경과한 후 Status – Targets 에서 정보를 수집하고 있는 것을 확인할 수 있다.

    이제 Grafana에서 Prometheus를 등록시켜서 시각화시키면 되는데 이게 처음에는 매우 어렵다.

    여기 하단에 보면 예시가 있는데 이를 이용하면 기본은 할 수 있다.

  • node-exporter

    요즘 모니터링 프로그램 중 하나인 Prometheus 를 많이 사용하는 것 같다. 그래서 이것을 사용해 보기로 했다. 감시 대상에 정보를 추출하는 node-exporter나 다른 exporter를 설치하고, 수집하는 시스템을 Prometheus로 구축한 후 Grafana 등을 이용해서 시각화한다.

    node-exporter는 프로그램 형식으로 이용할 수도 있고, Docker container를 이용할 수도 있다. 둘 다 기본적으로 9100 포트를 이용하는 것을 전제로 한다. Docker 를 이용하려면 다음과 같이 설치한다.

    sudo docker run -itd \
      --net="host" \
      --pid="host" \
          --restart always \
        --name node-exporter \
      -v "/:/host:ro,rslave" \
      quay.io/prometheus/node-exporter:latest \
      --path.rootfs=/host

    이게 Prometheus 홈페이지와 Docker Hub 내용이 조금 다른데 Docker Hub 내용을 기준으로 했다.

  • Grafana & Influxdb 설치

    시각화 툴로 유명한 것들이 있지만, 그 중에서 TrueNAS로 검색을 해보았을 때 Grafana가 우선적으로 검색이 되어서 이것으로 선택했다. 시계열 DB도 종류가 여러가지가 있는데 그 중에서 Influxdb를 이용해야 했다.

    나는 Docker를 이용할 것이므로 사용하는 포트를 미리 알아 두어야 했다. Grafana는 기본적으로 3000번 포트를 이용한다. 하지만 나의 경우 이 것은 생체 모니터에서 데이터 전송에 사용하고 있으므로 4000번으로 변경해서 사용하고자 했다. 꼭 필요한지는 좀 더 알아봐야 하는데 Influxdb는 8086번을 graphite의 경우 2003번을 이용해서 혹시나 싶은 마음에 이것도 설정해 두었다.

    sudo docker run -it -p 4000:4000 -p 8086:8086 -p 2003:2003 --name=grafana debian

    필요한 패키지들을 설치한다.

    echo exit 0 > /usr/sbin/policy-rc.d
    echo 'Acquire::http::Proxy "http://rcc.work:3142";' > /etc/apt/apt.conf
    rm -rf /etc/localtime; ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 
    
    apt -y update && apt -y upgrade && apt -y install wget libfontconfig1 dialog sudo procps nano influxdb influxdb-client

    미리 받아둔 grafana 프로그램을 다운 받아서 설치한다. 편의상 /root에 다운 받는다.

    cd ~
    wget http://rcc.work:3143/grafana-enterprise_9.5.1_amd64.deb
    sudo dpkg -i grafana-enterprise_9.5.1_amd64.deb

    /etc/grafana.ini 를 수정한다.

    ...
    [server]
    http_port = 4000
    

    그 후에 grafana를 실행한다. 오류 메세지가 나오더라도 보통은 실행된다… ;(

    service grafana-server start

    /etc/influxdb/influxdb.conf 파일을 수정한다.

    ...
    [http]
      # Determines whether HTTP endpoint is enabled.
       enabled = true
    
      # The bind address used by the HTTP service.
       bind-address = ":8086"
    
      # Determines whether user authentication is enabled over HTTP/HTTPS.
       auth-enabled = true
    
    
    ...
    [[graphite]]
      # Determines whether the graphite endpoint is enabled.
       enabled = true
       database = "graphite"
       retention-policy = ""
       bind-address = ":2003"
       protocol = "tcp"
       consistency-level = "one"
    ...

    InfluxDB를 실행한다.

    echo service influxdb start

    사용자 ID와 비밀번호를 설정한다. 편의상 admin/1로 설정했다. 다른 SQL과 다른게 마지막에 새미콜론이 빠져도 된다.

    > create user admin with password '1' with all privileges

    exit 입력 후 다시 설정한 ID와 PW로 로그인 한다.

    influx -username "admin" -password "1"
    

    influxdb.conf 에서 graphite 부분에 database 이름을 graphite라고 했으므로 graphite DB를 생성한다.

    > create database graphite

    생성된 database를 확인해 본다.

    > show databases
    name: databases
    name
    ----
    _internal
    graphite
    

    Grafana에 접속해서 다음의 메뉴를 찾는다.

    HTTP URL을 입력하고, Auth 에 Basic auth 선택, Basic Auth Details에서 ID/PW를 입력한다. PW를 입력하고 나면 configured 라고 나온다.

    그리고 아래 부분에서 Database를 입력해주고, HTTP Method에서 GET을 선택한다.