코딩마을방범대
[ELK] 데이터뷰 및 필드 생성하기 본문
ELK를 구축하고 시각화를 진행할 때 필요한 View 생성과 필드 생성을 진행해볼 것이다.
시각화를 진행하려면 Data View가 꼭 필요한데, 일단 ELK 구축 완료 후 Kibana 사이트에 접속 가능하다는 가정 하에 진행할 것이다.
(만약 ELK 구축 전이라면 위 포스트를 참고하면 된다.)
데이터 뷰 생성하기
Kibana 홈페이지 접속 후 왼쪽의 메뉴 중 Stack Management 를 선택해준다.
이후 Kibana 블록에 있는 Data Views 를 선택한다.
Data Views 클릭 후 출력되는 화면에서 Create data view 버튼을 클릭해준다.
이후 Name에는 본인만의 데이터뷰 이름을 지정해주면 되고, Index pattern은 여러 항목을 입력할 경우 , 로 연결지어주면 된다.
모든 데이터를 입력해주었다면 Save data view to Kibana 를 클릭해준다.
예시.
Name: API Labdev
Index pattern: labdev-*,api-*
필드 생성하기
이후 데이터뷰에 종속되는 필드를 생성할 수 있는데, Data Views 목록에서 접속하여 추가할 수도 있지만
추가 후 바로 시각적인 데이터를 보기 위해 다른 메뉴에 접속하여 추가해줄 것이다.
1. Discover 메뉴에 접속 후 Data View 선택
메뉴 중 Discover 탭 선택
Discover 을 클릭했다면, 아래와 같은 화면에서 왼쪽의 드롭다운 메뉴를 클릭해준다.
이후 생성했던 Data View 를 클릭해주면 참조되어있는 데이터 목록이 변경된다.
2. 필드 추가 클릭
이후 Data View 에 포함되어있는 필드 목록이 왼쪽에 표시되는데, 맨 아래 Add a field 버튼을 클릭해준다.
그럼 아래와 같이 필드 생성 화면이 표시된다.
필드명은 자유롭게 입력해주면 되고, 여기서 Script를 설정해줘야 원하는 데이터를 자유자재로 설정할 수 있다.
Type은 추출하려는 데이터에 따라 설정하면 되는데, Message는 메모리 사용량이 높기 때문에 Keyword로만 제공된다고 한다.
따라서 Script에서도 사용이 불가하다.
(별도 설정 방법을 통해 Message type을 사용 가능하게 변경할 수 있다고 하나, 권장하지 않으니 변경하진 않았다.)
3. 필드 스크립트 작성
Set value 옵션을 키면 스크립트를 작성할 수 있는 칸을 보여준다.
이 칸에 자유롭게 설정하고 싶은 필터 등을 기입해주면 된다.
(필자의 경우 return으로 값을 반환하는게 아니라, emit 메소드로 데이터 전달 후 void return 해줘야 값이 정상적으로 출력됐다.)
💡 TIPS!
필드 정렬 순서 변경하기
자주 사용할 필드를 위에 올려두고 싶은 경우에 인기도를 지정할 수 있다.
Data Views 메뉴에 들어간 후 원하는 데이터뷰를 선택해준다.
수정할 필드를 선택해 준 뒤 아래로 내려보면 Show advanced settings 라는 버튼이 보인다.
이 버튼을 클릭해주면 아래와 같은 화면이 출력되는데, 숫자가 높을수록 위에 표시된다.
수정 후 필드를 꼭 저장해줘야 한다!
(아니면 인기도 열심히 설정해도 다 날아감!)
저장한 후 Discover를 확인해보면 이렇게 Popular fields에서 인기도 설정한 필드들을 순서대로 확인할 수 있다.
데이터 출력 테스트해보기
아무리 스크립트를 설정해도 오류가 발생하거나, 아무 데이터도 출력되지 않는 경우가 있다.
로그를 찍어볼 수도 없는 환경이라 어느 부분에 문제가 있는 것인지 알기 어렵다.
이럴 경우 임의로 데이터를 받아보는 방법이 있다.
왼쪽 메뉴 중 Dev Tools를 클릭해준다.
스크립트 테스트
스크립트 내용 중간에 return 메서드를 통해 출력 테스트를 진행하면 된다.
GET 인덱스명/_search
{
"script_fields": {
"출력할 변수명": {
"script": {
"lang": "painless",
"source": """
스크립트 내용
return 받고싶은값;
"""
}
}
},
"size": 10 // 가져올 문서 수
}
특정 필드 값 받아보기
GET 인덱스명/_search
{
"query": {
"match_all": {}
},
"_source": ["필드명"],
"size": 10 // 가져올 문서 수
}
데이터뷰에 존재하는 필드명과 타입 확인
GET 인덱스명/_mapping
'💡 백엔드 > ELK' 카테고리의 다른 글
[ELK] 탬플릿 생성하기 (message.keyword 필드가 비어있다면?) (0) | 2024.11.15 |
---|---|
[ELK] Log를 불러올 때 타임스탬프를 커스텀 필드로 정의하기 (0) | 2024.11.13 |
[ELK] 다른 서버에 구축되어 있는 ELK와 연결하기 (0) | 2024.11.12 |
[ELK] Docker를 통해 구축한 ELK 의 데이터를 스냅샷으로 저장하기 (0) | 2024.11.06 |
[ELK] Docker로 ELK 스택 구축 시 실행 때마다 자동으로 사용자 설정하기 (0) | 2024.11.04 |