본문 바로가기

전체 글

(215)
[LogBack]API 요청 로그 수집하기 개요 API 요청에 따라 springboot에서 로그를 수집하고, 발생하는 로그를 ES의 인덱스에 추가하려고 한다. 전체적인 로직은 다음 포스팅들을 참고하였다. https://prohannah.tistory.com/182 Spring Logging (1) : HTTP Request/Response 로그 남기기 서비스를 운영하면서 서버가 받는 HTTP 요청과 서버가 제공하는 응답을 로그로 남긴다면, 추후 무슨 일이 생겼을 때 추적이 용이하다. 이번 포스팅은 Spring Boot을 사용하여 로그 남기기 시리즈 중 prohannah.tistory.com https://devbksheen.tistory.com/entry/ELK-Filebeat%EB%A1%9C-%EC%8B%A4%EC%8B%9C%EA%B0%84-%..
[Kibana] Kibana 데이터시각화 구현 https://www.elastic.co/guide/en/kibana/7.11/index-patterns.html Create an index pattern | Kibana Guide [7.11] | Elastic If you don’t set a default time field, you will not be able to use global time filters on your dashboards. This is useful if you have multiple time fields and want to create dashboards that combine visualizations based on different timestamps. www.elastic.co 1. 인덱스 패턴 생성 Stack ..
[Elasticsearch] 네트워크 오버헤드 효율 비교 및 개선(쿼리 변경) 개요 기존 프로젝트에서 우리는 오타를 보정하기 위해 검색어와 가장 유사한 검색어들을 차등적으로 리스트의 형태로 제공했다. 이 과정에서 Ngram과 Fuzzy의 분석 결과를 요청하고, 이를 다시 합산하여 가장 스코어가 높은 순서대로 유사하다는 결론을 내렸다. //통합 제목 검색 : 제목 일치 or (Fuzzy + ngram) @GetMapping("/title/aggregate-search") public List searchTitleComprehensive(@RequestParam("title") String title, @RequestParam("maxResults") int maxResults, @RequestParam("fuzziness") int fuzziness, @RequestParam("fu..
[2주차 스터디 노트] 쓰레드, 멀티 프로세스/쓰레딩, 프로세스 상태 변화 프로세스 상태 프로세스의 수행 상태 변화는 운영 체제의 프로세스 관리의 중요한 부분이다. 운영 체제는 프로세스의 생명 주기 동안 여러 가지 상태를 가지며, 프로세스의 현재 상황과 다음에 수행해야 할 작업을 나타낸다. OS에서는 이 상태를 PCB를 통해 인식하고 관리한다. 새로 생성된 상태 (New) 프로세스가 생성되고 초기화되는 단계이다. 프로세스는 프로세스에 필요한 초기 리소스와 설정을 할당받있지만, 아직 실행 준비가 완전히 되지 않은 상태. -> 프로세스가 필요한 모든 리소스를 할당받고, 실행을 위한 준비가 완료되면 "준비 상태"로 전환된다. 여기서 할당받을 리소스들은 다음과 같다. - 프로세스 식별자 (PID): - 프로세스 제어 블록 (PCB): - 프로세스 실행을 위한 최소한의 메모리 공간 - ..
[2주차 스터디 노트] 프로세스, 프로세스의 메모리 구조, 문맥 교환 프로그램과 프로세스 프로그램은 저장장치에 존재하는 컴파일된 코드의 집합이다. 이것이 실행되기 전까지는 그저 저장장치에 존재되는 데이터에 불과하지만, OS에서 명령을 받아 메모리에 적재하게 되면 그때부터는 운영체제의 관리를 받으며 CPU 자원을 통해 동작하는 '프로세스' 가 된다. 프로세스는 CPU 자원을 사용하고 운영체제의 관리를 받으며, 프로그램 코드를 실제로 실행하는 동적인 개체 이중 눈에 보이지 않는 백그라운드 프로세스를 유닉스 체계의 운영체제에서는 데몬(daemon)이라고 부르고, 윈도우 운영 체제에서는 서비스라고 부른다. 프로그램은 어떤 과정을 거쳐 메모리에 적재되는가? 프로그램이 메모리에 적재되는 일반적인 과정 1. 프로그램 실행 요청: 특정 프로그램을 실행하라는 명령을 운영체제에 전달 2. ..
[ElasticSearch] 최종 인덱스, 중복 문제와 오탈자 검색의 고민 인덱스 최종 수정 기존에는 필터 유무로 인덱스를 나눴는데. 이는 매우 비효율적인 짓이었다. 그냥 커스텀 분석기를 하나 추가하고, 하나의 인덱스에 적용하면 된다. 특히 match_term 등의 토큰화 과정에서만 2글자 이상 토크나이징 분석기를 사용하면 될 것이다. 그리고 후에 설명할 로직으로 인해 ngram 분석기를 추가하였다. reindex 효율적으로 사용하기 와중에 데이터를 마이그레이션하는 과정에서 reindex가 timeout되는 것을 확인했다. 이는 큰 사이즈의 데이터일 경우 kibana에서 일정 시간 이상 할당한 경우 자체적으로 block하는 것으로 보인다. POST _reindex { "source": { "index": "scrap_wiki_limited_term_length_1109", "s..
2606 바이러스[S3] 문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 ..
1107 리모컨[G5] 문제 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 ..