저는 syslog 서버를 기준으로 구축을 한다고 밝혔습니다.

그래서 ap에서 받은 syslog를 기준으로 설명을 진행하겠습니다.

 

rsyslog의 설정을 제가 한 대로 따라하셨다면, 해당 폴더에 syslog 를 수신한 폴더와 내부에 파일이 보일 겁니다.

[root@tmplogsvr rsyslog]# pwd

/var/log/rsyslog

[root@tmplogsvr rsyslog]# ls -al

합계 4

drwx------.  7 root root  106  2월 15 14:45 .

drwxr-xr-x. 17 root root 4096  2월 19 00:00 ..

drwx------.  2 root root  138  2월 20 00:12 192.168.0.54

drwx------.  2 root root  138  2월 20 00:00 192.168.10.2

drwx------.  2 root root  138  2월 20 08:23 192.168.10.3

drwx------.  2 root root  138  2월 20 08:31 192.168.10.4

drwx------.  2 root root  138  2월 20 01:39 192.168.10.5

[root@tmplogsvr rsyslog]#

해당 폴더에 들어가면 수신날자.log 형태의 파일을 확인할 수 있습니다.

[root@tmplogsvr 192.168.10.2]# ls -al

합계 3072

drwx------. 2 root root     138  2월 20 00:00 .

drwx------. 7 root root     106  2월 15 14:45 ..

-rw-------. 1 root root  703219  2월 15 23:57 2023-02-15.log

-rw-------. 1 root root 1129390  2월 16 18:29 2023-02-16.log

-rw-------. 1 root root  176330  2월 17 21:12 2023-02-17.log

-rw-------. 1 root root  504511  2월 18 23:59 2023-02-18.log

-rw-------. 1 root root  542715  2월 19 22:26 2023-02-19.log

-rw-------. 1 root root   71405  2월 20 11:17 2023-02-20.log

[root@tmplogsvr 192.168.10.2]#

 

kibana에서 보고 싶은 파일의 위치를 확인 하신 후 logstash의 설정을 합니다.

우선 먼저 어떻게 파일이 수신되는지 확인을 합니다.

 

저는 logstash의 로그 파싱 설정을 /etc/logstash/conf.d 폴더에 logstash.conf 로 작성하였습니다.

[root@tmplogsvr 192.168.10.2]# cat /etc/logstash/conf.d/logstash.conf
input { # logstash에서 파일을 받아들이겠다는 선언
        file { # 어떤 형태의 입력 type을 받겠다는 선언
                path => "/var/log/rsyslog/192.168.10.2/*.log" # 받아 들일 로그의 위치 선언
                start_position => "beginning" # 파일을 읽는 방식으로 차후 자세한 설명
                tags => ["ap1"] # 해당 경로의 파일인 경우 tag에 "ap1"을 표시
        }
}

output { #logstash에서 파일을 내보내겠다는 선언
        if "ap1" in [tags] { # 로그 중 tags에 "ap1"이 표시되어 있다면
                elasticsearch { # 로그를 elasticsearch에 보내겠다는 선언
                        hosts => ["http://192.168.0.17:9200"] # elasticsearch url 정보
                        index => "logstash-ap1-index-%{+YYYY.MM.dd}" # elasticsearch의 index 입력 방식
                }
        }
}

위의 설정대로 하신 후 logstash를 재시작 합니다.

 

이제 kibana에 접속을 합니다.

 

정상적으로 출력이 됐다면, logstash.conf 파일을 아래와 같이 수정

input {
  file {
    path => "/var/log/rsyslog/192.168.10.2/*.log"
    start_position => "beginning"
    tags => ["ap1"]
  }
}

filter {
  if "ap1" in [tags] { # tags에 "ap1"이 있다면
    grok { # grok 적용해라
      patterns_dir => ["/etc/logstash/patterns.d"] # grok 적용 전 패턴 등록
      match => { "message" => [ "%{SYSLOGTIMESTAMP:access_time} %{IPORHOST:ip} %{IPORHOST:process}\[%{BASE10NUM:process_id}\]\: %{GREEDYDATA:sub_message}" ] }
    }
    mutate { remove_field => [ "message" ] } # message 필드 삭제
  }
}

output {
        if "ap1" in [tags] {
                elasticsearch {
                        hosts => ["http://192.168.0.17:9200"]
                        index => "logstash-ap1-index-%{+YYYY.MM.dd}"
                }
        }
}

수정 후 logstash 재시작 수행

이 후 kibana에서 로그 확인 시 아래와 같이 변경된 것을 볼 수 있습니다.

 

'기술 노트 > logstash' 카테고리의 다른 글

logstash.conf_230306  (0) 2023.03.06
logstash.conf_23.02.20  (0) 2023.02.20
logstash 설정  (0) 2023.02.20
grok pattern  (0) 2023.02.17
logstash 설치  (0) 2023.02.16

+ Recent posts