일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- web3.js
- geth
- ERC165
- MySQL
- truffle
- github
- 트랜잭션
- Programming
- ERC20
- tcp
- Python
- web
- 솔리디티
- solidity
- git
- 스마트 컨트랙트
- JavaScript
- 제어의역전
- 블록체인
- 네트워크
- server
- 이더리움
- erc
- blockchain
- erc721
- ethers
- NFT
- Docker
- web3
- Ethereum
- Today
- Total
멍개의 연구소
[ethereum] 이더리움 네트워크 모니터링 시스템 구축 본문
이번시간에는 지난번에 Ethash(POW), Clique(POA) 형태로 구축한 private network를 모니터링하는 시스템을 구축해보겠습니다.
2022.08.28 - [블록체인] - [ethereum] Geth를 이용하여 Clique(POA) 기반 private network 구축하기
[ethereum] Geth를 이용하여 Clique(POA) 기반 private network 구축하기
Geth를 이용하여 Ethash(POW) 기반 private network 구축하는 방법을 알아보겠습니다. Geth는 POW(Ethash), POA(Clique), POS(Caspre)를 선택적으로 운용가능합니다. 지난번에 정리한 POW(Ethash) 기반으로..
meongae.tistory.com
2022.08.27 - [블록체인] - [ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기
[ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기
Geth를 이용하여 Ethash(POW) 기반 private network 구축하는 방법을 알아보겠습니다. Geth는 POW(Ethash), POA(Clique), POS(Caspre)를 선택적으로 운용가능합니다. 여기선 개념적인 내용보다 방법론적인..
meongae.tistory.com
네트워크는 POW, POA 어느것을 이용해도 진행가능합니다.
● 시스템 구성도

● eth-netstats 구동
eth-netstats는 실질적으로 사용자가 접속합니다.
$ git clone https://github.com/cubedro/eth-netstats.git
$ cd eth-netstats
$ npm i
$ grunt
$ export WS_SECRET=123
$ npm run start
WS_SECRET은 Agent 서버에서 함부로 접속하지 못하게 하기 위해 설정합니다.
localhost:3000으로 접속하면 데이터가 비어있는 모습의 사이트가 뜹니다.

이제 우리는 agent 서버를 실행하여 주기적으로 노드의 정보를 해당 페이지에 뿌려줘야 합니다.
● Agent 서버 구동
$ git clone https://github.com/cubedro/eth-net-intelligence-api.git
$ cd eth-net-intelligence-api
$ npm i
이제 우리는 2개의 파일을 만들어줘야 합니다. 2개의 노드와 연결을 하기위해 노드정보를 가지고있는 json파일을 만듭니다.
· process-node1.json
[
{
"name" : "eth-node1",
"script" : "app.js",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"merge_logs" : false,
"watch" : false,
"max_restarts" : 10,
"exec_interpreter" : "node",
"exec_mode" : "fork_mode",
"env":
{
"NODE_ENV" : "production",
"RPC_HOST" : "localhost",
"RPC_PORT" : "8545",
"LISTENING_PORT" : "30303",
"INSTANCE_NAME" : "node1",
"CONTACT_DETAILS" : "",
"WS_SERVER" : "http://127.0.0.1:3000/api",
"WS_SECRET" : "123",
"VERBOSITY" : 2
}
}
]
· process-node2.json
[
{
"name" : "eth-node2",
"script" : "app.js",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"merge_logs" : false,
"watch" : false,
"max_restarts" : 10,
"exec_interpreter" : "node",
"exec_mode" : "fork_mode",
"env":
{
"NODE_ENV" : "production",
"RPC_HOST" : "localhost",
"RPC_PORT" : "8546",
"LISTENING_PORT" : "30304",
"INSTANCE_NAME" : "node2",
"CONTACT_DETAILS" : "",
"WS_SERVER" : "http://127.0.0.1:3000/api",
"WS_SECRET" : "123",
"VERBOSITY" : 2
}
}
]
WS_SERVER와 WS_SECRET은 앞에서 실행한 eth-netstats서버 입니다. WS_SECRET은 앞에서 eth-netstats를 실행하기 전에 설정한 값을 넣어줍니다. WS_SERVER는 엔드포인트가 /api 입니다.

· Agent 실행
이제 Agent 서버를 실행해줍니다.
$ pm2 start process-node1.json
$ pm2 start process-node2.json
$ pm2 list
┌────┬─────────────────────────┬─────────┬─────────┬──────────┬────────┬──────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼─────────────────────────┼─────────┼─────────┼──────────┼────────┼──────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ eth-node1 │ 0.1.1 │ fork │ 54204 │ 97s │ 0 │ online │ 0.6% │ 44.7mb │ bag… │ disabled │
│ 1 │ eth-node2 │ 0.1.1 │ fork │ 54408 │ 49s │ 0 │ online │ 0.6% │ 40.1mb │ bag… │ disabled │
└────┴─────────────────────────┴─────────┴─────────┴──────────┴────────┴──────┴──────────┴──────────┴──────────┴──────────┴──────────┘
pm2는 백그라운드로 서버를 동작시킵니다. 해당 서버는 실행시 전달한 json파일에 명시된 노드에서 주기적으로 정보를 조회한 후 WS_SERVER로 전달하는 역할을 합니다.
$ pm2 log

pm2 log는 백그라운드로 동작하고 있는 서버의 로그를 출력하는 명령어입니다.
앞에서 실행한 eth-netstats의 로그를 확인해보면 다음과 같습니다.


'블록체인' 카테고리의 다른 글
[Ethereum] EIP1559 GETH, Ganache-cli 사용해보기 (0) | 2022.08.28 |
---|---|
[ethereum] ERC721을 이용한 NFT 만들기 - 1편 (0) | 2022.08.28 |
[ethereum] Geth를 이용하여 Clique(POA) 기반 private network 구축하기 (0) | 2022.08.28 |
[ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기 (0) | 2022.08.27 |
[ethereum] mnemonic 생성, privatekey 복구와 계층적 구조의 원리 (0) | 2022.08.27 |