OmniEdge Github Action을 사용하여 서버를 모니터링하는 방법

서버 상태를 모니터링하는 많은 방법이 있지만 그 중 일부는 우리에게 너무 무겁고 목표는 매우 쉽습니다. 전 세계의 public super node 서버가 온라인 상태인지 확인하십시오.

모니터링해야 하는 이유



우리는 오하이오, 오레곤, 프랑크푸르트, 도쿄, 시드니, 뭄바이, 상파울로, 밀라노, 싱가포르, 홍콩, 타이페이에 위치한 11개의 퍼블릭 슈퍼노드 서버를 운영하고 있습니다.

모든 서버는 AWS 및 GCP와 분리된 클라우드 인스턴스에서 실행 중이며, UDP 포트를 서버로 개방하고, 도움말omniedge 노드가 P2P 연결을 지원하며, NAT 순회가 실패할 경우 노드 간 트래픽을 릴레이하기 위한 폴백으로 사용됩니다. 직접 연결을 설정할 수 없습니다. 따라서 슈퍼노드 서버는 전 세계 사용자에게 매우 중요합니다.

모니터링 방법



서버는 하나의 udp 포트만 열기 때문에 다음 명령을 실행하여 상태를 쉽게 확인할 수 있습니다.

nc -v -w 2 -z -u 1.2.3.4 80  #scan port 80 of IP 1.2.3.4


Netcat(또는 줄여서 nc)은 TCP, UDP 또는 UNIX 도메인 소켓과 관련된 Linux에서 모든 작업을 수행하는 데 사용되는 단순하지만 강력한 네트워킹 명령줄 도구입니다. 설치가 매우 쉽습니다.

$ yum install nc                  #CentOS/RHEL
$ dnf install nc                  #Fedora
$ sudo apt-get install Netcat     #Debian/Ubuntu


이 명령은 다른 매개변수를 사용합니다.
  • -v 옵션은 세부 정보 표시 모드를 활성화합니다
  • .
  • -w는 설정할 수 없는 연결에 대한 시간 초과를 지정합니다.
  • -u 스캔UDP 포트
  • -z는 nc 데몬에 실제로 데이터를 보내지 않고 단순히 수신 데몬을 검색하도록 설정합니다.

  • 하나의 인트라넷에서 모든 서버를 연결하는 방법



    1. Sign up OmniEdge account 시스템이 가상 네트워크를 구축하고 가상 네트워크 ID를 가져오고 Dashboard에서 보안 키를 생성합니다.

    2. Docker를 설치하고 모든 서버에서 자체 보안 키 및 가상 네트워크 ID로 명령을 실행합니다.

    sudo docker run -d \
      -e OMNIEDGE_SECURITYKEY=Security-key \
      -e OMNIEDGE_VIRUTALNETWORK_ID="Virtual Network ID" \
      --network host \
      --privileged \
      omniedge/omniedge:latest
    


    3. 가상 네트워크 대시보드에 모든 서버가 나열되는 것을 볼 수 있습니다.

    Github 작업을 사용하여 모니터링



    모든 슈퍼 노드를 인트라넷에 연결했으며 내부적으로 확인하고 싶습니다. 그래서 GitHub action을 인트라넷에 가져와 공개 IP가 아닌 내부 IP 없이 P2P 연결을 통해 상태를 확인합니다.

    상태를 확인하고 readme를 업데이트하도록 GitHub 작업을 설정하는 단계는 다음과 같습니다.
  • GitHub 리포지토리에서 워크플로 생성

  • mkdir -p /.github/workflows/check-server-status.yml
    


    2. 환경 변수를 설정하고 your-repo-address/settings/secrets/actions로 전환한 다음 이름으로 Repository secrets를 생성합니다.

      SERVER_IPs #Servers IP and name with format: server_name, IP
      PORT # 80
      OMNIEDGE_SECURITY_KEY #OmniEdge security_key
      OMNIEDGE_VIRTUALNETWORK_ID #OmniEdge Virtual network ID
    


    3. Sign up OmniEdge account 에서 OMNIEDGE_SECURITY_KEYOMNIEDGE_VIRTUALNETWORK_IDDashboard 에서 가져오고 2 단계에서 채웁니다.

    4.check-server-status.yml 파일을 편집하고 OmniEdge for GitHub Action을 추가합니다.

    - name: OmniEdge for Github Action
      uses: omniedgeio/github-action@v1
      with:
        securitykey: ${{ secrets.OMNIEDGE_SECURITY_KEY }}
        virtualnetworkid: ${{ secrets.OMNIEDGE_VIRTUALNETWORK_ID }}
    


    5.확인 일정을 설정합니다. 여기서는 5시간마다 확인합니다.

    - cron: "0 */5 * * *"
    


    6. 링크에서 전체 워크플로를 복사할 수 있습니다https://github.com/omniedgeio/server-status/blob/main/.github/workflows/check-server-status.yml.

    7. 커밋을 리포지토리로 푸시하면 작업이 실행되고 1분 후에 새 README.md가 생성되는 것을 볼 수 있습니다.



    예, 읽어보기에는 홍콩이 오프라인 상태인 것으로 표시되지만 실제로는 그렇지 않습니다. nc 명령이 항상 제대로 작동하지 않습니다. 더 나은 명령이 있으면 알려주십시오.

    감사.

    실행 중인 전체 저장소는 다음과 같습니다. https://github.com/omniedgeio/server-status

    좋은 웹페이지 즐겨찾기