🌈 파이프라인이란?
하나 이상의 스트림에 연결해서 스트림에 들어오는 메시지를 변환하고 처리할 수 있는 기능으로,
현재 메시지를 수신하고 (잠재적으로) 값을 반환할 수 있다.
🌈 Grok Patterns과의 우선 순위
System > Configurations에서 Grok Pattern과 파이프라인 간에 우선순위를 정할 수 있다.
(Message Filter Chain = Grok Pattern)
내가 구축한 서버에서는 가상화 장비의 도메인 구분을 위해 Grok Pattern을 우선순위로 두고 있다.
가상화 장비에서 아래와 같은 로그를 보내주는데, 여기서 7은 도메인이다.
Status is green on cluster domain-c7
7을 Grok Pattern으로 파싱 후 파이프라인을 통해 cluster로 매핑한다.
이처럼 내가 구축한 환경에서는 Grok Patterns으로 파싱 후 파이프라인을 타기 때문에 우선 순위를 위와 같이 정했다.
🌈 규칙 설명
rule "cluster rename c7, cluster_1'
when
has_field("cluster") AND contains(to_string($message.cluster), "7")
then
has_field("cluster","cluster_1");
end
rule | 규칙 이름 정의 |
위 룰 같은 경우 rule 이름은 cluster rename c7, cluster_1로, 룰을 검색하거나 파이프라인에 적용할 때 사용되는 이름임. | |
when 절 | 현재 메시지에서 평가되는 부울 식 지정 파이프라인 프로세서의 규칙실행 여부를 집합적으로 결정하는데 사용 일반적인 부울 연산자 AND(&&), OR(||), NOT(!) 및 비교 연산자(<, <=, >, >=, ==, !=) 지원 |
when절에서 조건을 결정할 수 있음. - has_field(“cluster”) : 메시지 내 필드에 cluster가 있는지 확인하는 구문 - contains(to_string($message.cluster), "7") : cluster 필드에 7 있는지 확인하는 구문 |
|
then절 | 작업 목록 - 함수 호출 - 변수 할당 |
when절이 모두 만족한다면 then 절이 실행됨. - set_field("cluster","cluster_1"); : 해당 cluster 필드의 내용을 cluster_1로 바꾸는 구문 |
|
end | 규칙이 끝남을 알림 |
🌈 파이프라인 결과
* 파이프라인 역시 Grok Patterns와 마찬가지로 설정 후부터 적용되므로, 추이를 지켜봐야함
📌 느낀점
그레이로그를 구축하며 Grok Patterns 보다 어려웠던 게 파이프라인 이었다. 하지만 알고 나니 활용 가능성이 무궁무진한 친구이다. 이렇게 장비명 매핑 뿐만 아니라 장비들 중 한국 시간이 아닌 제조사 시간으로 들어오는 장비들이 있는데, 그런 장비들 역시 파이프라인을 통해 매핑하면 해결할 수 있다. (나중에 기회되면 예시 가져와야지 🙂) Grok Patterns으로는 로그들을 파싱하고, 파싱한 부분 부분을 파이프라인으로 매핑하면 가시성이 훨씬 높아진다.
오늘은 파이프라인에 대해 알아봤으니, 다음에는 적용 방법에 대해 들고 오겠습니다-!
'💻 프로젝트 > 01. Graylog' 카테고리의 다른 글
[Graylog] 사용자(USER) 설정 (0) | 2023.12.19 |
---|---|
[Graylog] 파이프라인 설정(적용) (0) | 2023.08.26 |
[Graylog] Grok Patterns 적용하기 (0) | 2023.08.14 |
[Graylog] Grok Patterns이란? (0) | 2023.08.14 |
[Graylog] Sidecar 설치 (feat. Filebeat) (0) | 2023.08.06 |