Simpleton은 UDP 패킷을 받아들이고 이를 SQLite3 데이터베이스에 저장하는 데이터베이스 로깅 솔루션에 대한 죽은 단순 UDP입니다. 기본적으로 현재 디렉터리의 simpleton.db
에 저장되지만 명령줄 옵션을 사용하여 이를 재정의할 수 있습니다.
이는 매우 간단한 테스트 외에는 그다지 유용하지 않지만 확장할 수 있습니다.
Simpleton을 빌드하려면 make
실행하기만 하면 바이너리가 bin
디렉터리에 나타납니다. 기본적으로 OSX용으로 빌드됩니다.
make
다른 플랫폼용으로 빌드하려면 Makefile
에서 GOOS
및 GOARCH
변수를 편집하세요. make
실행할 때 다음과 같이 명령줄에 이러한 매개변수를 입력할 수도 있습니다.
GOOS=linux GOARCH=amd64 make
syslist.go에서 다양한 플랫폼에 대한 이러한 변수 값을 찾을 수 있지만 가장 일반적인 값은 다음과 같습니다.
OS | 구스 | 고아치 |
---|---|---|
OSX | 다윈 | amd64 |
리눅스 | 리눅스 | amd64 |
윈도우 | 창문들 | amd64 |
물론 GOOS와 GOARCH의 올바른 조합을 설정하여 크로스 컴파일(예: OSX 시스템에서 Linux 바이너리 컴파일)을 수행할 수 있지만 Windows에서는 문제가 발생할 수 있습니다. (저는 이것을 Windows용으로 만들지 않았습니다).
바이너리는 bin
에 표시되므로 다음을 사용하여 기본 디렉터리에서 실행할 수 있습니다.
bin/simpleton
명령줄 옵션을 나열하려면 -h
플래그를 사용합니다.
bin/simpleton -h
다음은 특정 인터페이스(예제에서는 10.1.0.3)와 포트(7788)를 수신하고 데이터베이스를 /tmp/simpleton.db
에 저장하는 옵션을 사용하여 Simpleton을 실행하는 예입니다.
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
결과 데이터베이스를 살펴보고 싶다면 컴퓨터에 SQLite3을 설치하고 sqlite3
명령을 사용하여 데이터베이스를 검사할 수 있습니다. 이전 예제에서 데이터베이스를 열려면 다음을 실행하세요.
sqlite3 /tmp/simpleton.db
매우 간단한 데이터베이스 스키마를 보려면 .schema
입력하세요. 이제 데이터에 대해 SQL 문을 수행할 수 있습니다.
참고: 저는 SQLite3의 동시성에 대해 완전히 확신하지 못하므로 데이터베이스를 통합 지점으로 사용하지 않을 것입니다(절대로 사용해서는 안 됩니다).
이는 또한 코드에 데이터베이스 액세스에 대한 뮤텍스 잠금이 있는 이유이기도 합니다. 코드는 데이터베이스에 액세스하는 여러 고루틴이 있는 프로젝트에서 가져왔습니다. 이 프로그램에는 그런 기능이 없지만 알림을 위해 뮤텍스 잠금을 그대로 두었습니다.
프로덕션 용도의 경우 동시성을 위해 구축된 PostgreSQL 데이터베이스 또는 이와 유사한 데이터베이스를 사용해야 합니다. 그러나 소규모 실험과 동시성이 제한된 경우 SQLite3은 놀랍도록 유능한 작은 짐승입니다.
HTTP 인터페이스에는 인증이나 보안 메커니즘이 없으므로 테스트 이외의 용도로는 사용하지 마세요. 웹 인터페이스의 기본 주소는 다음과 같습니다.
http://localhost:8008/
웹 인터페이스는 매우 간단합니다. 데이터에 액세스하는 두 개의 URL이 있습니다.
/data
/data/{id}
첫 번째는 JSON 배열을 반환하고, 두 번째는 ID로 제공된 데이터 항목의 페이로드만 반환합니다. /data
경로는 데이터베이스의 최신 항목 20개로 제한되지만 offset
및 limit
URL 매개변수를 설정하여 데이터베이스 전체를 페이징할 수 있습니다.
/data?offset=10&limit=10
Simpleton은 정적 파일이 포함된 디렉토리를 지원하므로 콘텐츠에 대한 유용한 링크가 포함된 일부 HTML 페이지를 만들거나 JS 프런트엔드 애플리케이션을 호스팅할 수 있습니다.
조작할 수 있는 매개변수를 보려면 명령줄 도움말을 확인하세요.