전체 글

Go언어 golang

golang elasticsearch / go언어 elasticsearch 사용하여 REST API 만들기 - #1 개발 환경 셋팅

elasticsearch 설치 from macos 패키지 다운로드. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-darwin-x86_64.tar.gz 인증기능 끄기. 개발 테스트용으로 https 기본은 -> http로 변경. (계정설정 생략) elasticsearch-8.7.0/config/elasticsearch.yml 파일. xpack.security.enabled: false 사용할 인덱스를 만들어 줍니다. Create Index curl --location --request PUT 'http://localhost:9200/devices' \ --header 'Content-Type: application..

Go언어 golang

2023-03-28 : golang Syslog server / Go언어 Syslog collector - Grok 으로 해보기.

예전 포스팅에서 regRFC5424 을 간략하게 했었습니다. 마침 Grok 보고 있다가 RFC5424를 리팩토링 해보겠습니다. 여기가 주요 포인트 입니다. g.Parse("%{NUMBER:version:int} %{TIMESTAMP_ISO8601:datetime} %{USERNAME:hostname} %{DATA:application} %{DATA:structure_data} %{DATA:message_id} %{GREEDYDATA:msg}", string(r)) hostname, application, structure_data, message_id 는 명확하게 패턴을 몰라 USERNAME, DATA로 정의하였습니다. 미스매치 나는 로그가 있다면 상황에 따라 다른 패턴으로 정의 필요합니다. 다음과 같은..

Go언어 golang

golang grok / go언어 grok 패턴

Grok 패턴은 로그 파싱을 편하게 하기 위해 나왔습니다. 아래 patterns.go를 봐보면, 정규식들의 집합체입니다. 그래서 정규식을 직접 쓰는 것보다 간편하게 string을 파싱하는데 유용합니다. 동시에 매칭 시 Key, Value를 사용할 수 있어 깔끔한 코딩을 하는 데 도움이 됩니다. (어느정도는... 만능은 아닙니다.)이번 포스팅에는 간단하게 오픈소스 검증만 하고, 다음 포스팅에 예전에 만들었던 syslog파싱에 적용해 봐야겠습니다. 정의되어있는 grok 패턴들... https://github.com/vjeantet/grok/blob/master/patterns.go package main import ( "fmt" "github.com/vjeantet/grok" ) func main() { ..

Go언어 golang

2023-03-24 json decoder 주석 허용 하는 기능 구현

이전 포스팅에서 오류가 나는 경우가 있어서 직접 작성하였습니다. 정규식으로 한 줄만 처리하도록 하였습니다. '//' 주석만 처리할 수 있습니다. 특별한 설명 없이 바로 가보실까요? 테스트 json파일 { "service_ip": "1.1.1.1", // 안아ᄋᆫ안 "node_name": "node_1", //kljfds "info": { // kjfdklsj "service_name": "TheGolangOfFuture",// jkjdsj_kfdjs!#@#$%^^&*()()_ jfj // jdjd// "desc": "미래의 고"// 안아ᄋᆫ안안ㅇ } } 결과는 다음과 같습니다. package main import ( "encoding/json" "fmt" "os" "path" "regexp" ) type..

미래의 고
The Golang of future