Logstash가 파일을 재분석하도록 강제하는 방법은 무엇입니까?
Logstash를 설치하여 아파치 파일을 구문 분석했습니다. 설정을보고 데 꽤 시간이 걸렸고 항상 실제 로그를 시도했습니다. 나는 logstash가 파일의 어디에 있었는지 "기억"이라는 것을 (문서에서 말하는 것처럼) 알아 냈다. 이제 내 설정은 Ok이며 Logstash가 "잊어 버리기"를 원합니다. 그래도이 나보다 더 어려워 보인다. 나는 이미 다음을 수행했습니다.
익숙한 :
start_position => "beginning"
elastissearch에서 전체 "데이터"폴더를 삭제하고 중지했습니다.
logstash에 의해 열린 파일을보고
lsof -p PID
유망한 모든 것을 삭제했습니다 (내 경우/tmp/jffi*.tmp
)
여전히 Logstash는 로그가있는 폴더에있는 "신선한"파일 만 잊지 않고 구문 분석합니다.
어떤 아이디어?
기본적으로 logstash는 일반적으로 상주하는 로그 파일에 마지막 위치를 기록합니다 $HOME/.sincedb
. Logstash 지정하여 로그가 파일을 구문 분석하지 믿기로 바보짓을 할 수 있습니다 /dev/null
로 sincedb_path
.
여기 문서 입력 파일 의 일부입니다 .
(모니터링 된 로그 파일의 현재 위치를 추적 함). 부케은 환경 변수 "$ SINCEDB_PATH"또는 "$ HOME / .sincedb"입니다.
구성 예
input {
file {
path => "/tmp/logfile_to_analyse"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
sincedb 파일에있는 "tailing"의 파일에있는 "tailing"의 파일 저장 내역, 정보 : $ HOME / .sincedb * 아래, http://logstash.net/docs/1.3.3/inputs/file#sincedb_path 참조
db 파일에는 다음과 같은 줄이 포함되어 있습니다.
[inode] [major device number] [minor device number] [byte offset]
따라서 전체 파일을 다시 구문 분석하여 다음을 수행해야합니다.
- sindedb 파일 삭제
- 또는 sincedb 파일에서 해당 줄만 삭제하고 파일 앞의 inode 번호를 확인하십시오 (
ls -i yourFile | awk '{print $1}'
). - 그리고 Logstash를 다시 시작하십시오.
키를 사용하여 start_position => "beginning"
Logstash는 모든 파일을 분석합니다.
sincedb 파일의 예 :
- name :
.sincedb_7a7413a84171aa550d5318c17fd756e9
: 이름에는 키 경로 ( http://logstash.net/docs/1.3.3/inputs/file#path )에 있는 모든 디렉토리의 sincedb_ 및 MD5 (Digest :: MD5.hexdigest)가 포함 됩니다. 파일 파일 코드 참조 : https://github.com/logstash/logstash/blob/master/lib/logstash/inputs/file.rb#L105
Logstash는 기록을 $HOME/.sincedb_*
. 모든 .sincedb
파일을 삭제하고 logstash를 다시 시작할 수 있습니다 . Logstash는 파일을 재분석합니다.
모든 답변을 결합하여 이것이 파일을 구문 분석하는 가장 좋은 방법이라고 생각하십시오. 나는 내 테스트를 위해 똑같이했다.
input {
file {
path => "/tmp/access_log"
start_position => beginning
sincedb_path => "/dev/null"
ignore_older => 0
}
}
테스트를 위해 빠른 대신 파일의 타임 스탬프를 변경할 ignore_older
수도 touch /tmp/access_log
있습니다.
logstash-forwarder를 사용하는 경우 .logstash-forwarder
대신 집에서 파일을 확인하십시오 .
{
"/var/log/messages": {
"source": "/var/log/messages",
"offset": 43715,
"inode": 12967,
"device": 51776
}
}
삭제 $HOME/.sincedb_*
후에도 여전히 데이터를 수집하지 않습니다.
여러 가지를 시도한 후 주 .conf
파일을 사용하는 모든 파일을 제거 /etc/logstash/conf.d
하고 Logstash를 다시 시작하고 모든 것이 작동했습니다. .conf
logstash가 조용히 매달린 파일 중 하나에 많은 가정 할 수 있습니다 .
파일에 대용량 데이터가있는 경우 실제로 매번 다시 구문 분석하는 데 비용이 많이 듭니다. 따라서이 작업을 수행하기 전에주의해야합니다. 다시 분석해야하는 강제 입력 블록 유전자 변수를 설정하십시오.
sincedb_path => "/dev/null"
이 옵션은 .sincedb 파일을 저장하지 않으며 logstash는 매번 재분석합니다. 그러나 매번 재분석하지 않으려면 파일을 구문 분석 할 때 생성되는 .sinceDb 경로를 수동으로 삭제하면됩니다. 일반적으로 루트 사용자가 아닌 경우에는 홈 디렉토리에 숨겨진 파일로, 그렇지 않으면 루트 디렉토리에 있습니다. 이 파일을 쉽게 추적하기 위해 sincedb_path를 다른 위치로 설정할 수도 있습니다.
sincedb_path => "/home/shubham/sinceDB/productsSince.db"
logstash 옵션을 엉망으로 만들고 싶지 않다면 기존 로그 파일의 이름을 바꾸거나 제거 하고 이전 파일 내용에서 새 파일을 생성하면 logstash를 재 인덱싱하도록 속이는 것으로 나타났습니다.
내 홈 디렉토리에서 찾았지만 삭제 후 logstash는 기존 로그 파일을 다시 선택하는 것을 거부했습니다. 내가 작동하게 한 방법은
sincedb_path => "/opt/elk/sincedb/"
내 파일 플러그인에. 매번 재설정을 생각하고 sincedb_path의 경로를 변경하십시오.
tar.gz install filebeat를 사용하는 경우이 파일을 삭제 $FilebeatPath/data/registry/filebeat/data.json
하고 filebeat를 다시 실행할 수 있습니다.
logstash 버전 5 새 디렉토리가 있습니다.
<path.data>/plugins/inputs/file
path.data 정의는 logstash.yml에 있습니다.
참고 URL : https://stackoverflow.com/questions/19546900/how-to-force-logstash-to-reparse-a-file
'IT' 카테고리의 다른 글
SVG에서 변환 원점을 설정하는 방법 (0) | 2020.09.09 |
---|---|
여러 도메인을 폴더 액세스 제어 허용 출처 (0) | 2020.09.09 |
생성자가 @JsonCreator로 주석을 달았을 때 그 인수에 @JsonProperty로 주석을 달아야하는 이유는 무엇입니까? (0) | 2020.09.09 |
내 탐색 모음에서 목록 항목의 전체 영역을 링크로 클릭 할 수 있습니까? (0) | 2020.09.09 |
지도에 삽입하는 데 선호되는 / 관용적 인 방법은 무엇입니까? (0) | 2020.09.09 |