jenkins log를 logstash로 보낸 후, csv로 저장한다.
logstash를 다운받아서 실행한다.
다운 받는 방법:
https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update && sudo apt-get install logstash
config 설정 방법:
cd /etc/logstash/conf.d/
input은 TCP
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html
input {
tcp {
port => 12345
codec => json
}
}
output은 file로 작성한다.
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-csv.html
output {
file {
path => "/home/ubuntu/hello.log"
}
}
완성된 hello.conf 파일:
input {
tcp {
port => 12345
}
}
output {
file {
path => "/home/ubuntu/hello.log"
}
}
실행방법:
https://www.elastic.co/guide/en/logstash/8.2/running-logstash.html
sudo systemctl start logstash.service
실행한 이후 logstash 프로세스가 tcp port를 listen하고 있는지 확인한다.
sudo lsof -i TCP:12345
// sudo로 확인할 것!
잘 듣고 있다.
권한이 없어서 쓰기에 실패할 수도 있다.
{:pipeline_id=>"main", :error=>"(EACCES) Permission denied..
쓰려고 하는 파일에 쓸 수 있도록, 권한 설정을 해주자.
(파일을 chomd 777로 바꾸거나 등등..)
telnet에 접속해서 12345 port에 아무 내용이나 적는다.
~/hello.log에 log가 찍히는 걸 확인할 수 있다!
이제 젠킨스 로그를 보내보자.
jenkins를 다운 받는다.
https://www.jenkins.io/doc/pipeline/tour/getting-started/
Download Jenkins Generic Java package (.war)
Open up a terminal in the download directory
Run java -jar jenkins.war --httpPort=8080
Browse to http://localhost:8080
Follow the instructions to complete the installation
위와 같이 jenkins로 실행하니, 재실행할때 이전 젠킨스 설정이 휘발했다.
docker로 실행한다.
docker pull jenkins/jenkins
docker run -p 8080:8080 --name=jenkins-master -d jenkins/jenkins
jenkins에 접속한다.
logstash 플러그인을 다운받는다.
간단한 프로젝트를 만든다.
프로젝트를 실행하기 전에 logstash 서버가 어디인지 jenkins 설정에 기록해야 한다.
시스템 설정으로 들어간다.
설정에 있는 빈칸을 채워주자.
방금 만든 프로젝트를 빌드했다.
logstash가 write하는 hello.log를 확인한다.
jenkins의 log가 쌓이는 것을 확인했다!
로그 한 줄당 들어가는 부가 정보가 상당히 크다.
이 정보들이 다 필요한 건가? 필요한 내용만 필터해야할 것 같다.
로그 한 줄을 보기 좋게 정렬하면 다음과 같다.
{
"data": {
"id": "1",
"result": "SUCCESS",
"projectName": "logstash-test",
"fullProjectName": "logstash-test",
"displayName": "#1",
"fullDisplayName": "logstash-test #1",
"url": "job/logstash-test/1/",
"buildHost": "Jenkins",
"buildLabel": "master",
"buildNum": 1,
"buildDuration": 5,
"rootProjectName": "logstash-test",
"rootFullProjectName": "logstash-test",
"rootProjectDisplayName": "#1",
"rootBuildNum": 1,
"buildVariables": {
"PATH": "/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"COPY_REFERENCE_FILE_LOG": "/var/jenkins_home/copy_reference_file.log",
"RUN_DISPLAY_URL": "http://3.39.21.225:8080/job/logstash-test/1/display/redirect",
"HUDSON_HOME": "/var/jenkins_home",
"RUN_CHANGES_DISPLAY_URL": "http://3.39.21.225:8080/job/logstash-test/1/display/redirect?page=changes",
"JOB_URL": "http://3.39.21.225:8080/job/logstash-test/",
"JAVA_HOME": "/opt/java/openjdk",
"BUILD_ID": "1",
"JENKINS_VERSION": "2.347",
"LANG": "C.UTF-8",
"JOB_NAME": "logstash-test",
"NODE_LABELS": "built-in",
"HUDSON_URL": "http://3.39.21.225:8080/",
"JENKINS_SERVER_COOKIE": "28e75736e36461f5",
"JENKINS_SLAVE_AGENT_PORT": "50000",
"PWD": "/",
"RUN_TESTS_DISPLAY_URL": "http://3.39.21.225:8080/job/logstash-test/1/display/redirect?page=tests",
"JENKINS_URL": "http://3.39.21.225:8080/",
"BUILD_TAG": "jenkins-logstash-test-1",
"CI": "true",
"EXECUTOR_NUMBER": "1",
"HUDSON_SERVER_COOKIE": "28e75736e36461f5",
"JENKINS_UC": "https://updates.jenkins.io",
"JOB_BASE_NAME": "logstash-test",
"CLASSPATH": "",
"JENKINS_HOME": "/var/jenkins_home",
"JENKINS_INCREMENTALS_REPO_MIRROR": "https://repo.jenkins-ci.org/incrementals",
"REF": "/usr/share/jenkins/ref",
"BUILD_NUMBER": "1",
"NODE_NAME": "built-in",
"BUILD_DISPLAY_NAME": "#1",
"BUILD_URL": "http://3.39.21.225:8080/job/logstash-test/1/",
"HOSTNAME": "7ca3759494a7",
"RUN_ARTIFACTS_DISPLAY_URL": "http://3.39.21.225:8080/job/logstash-test/1/display/redirect?page=artifacts",
"JOB_DISPLAY_URL": "http://3.39.21.225:8080/job/logstash-test/display/redirect",
"JENKINS_UC_EXPERIMENTAL": "https://updates.jenkins.io/experimental",
"HOME": "/var/jenkins_home",
"SHLVL": "0"
},
"sensitiveBuildVariables": []
},
"message": [
"Finished: SUCCESS"
],
"source": "jenkins",
"source_host": "http://3.39.21.225:8080/",
"@buildTimestamp": "2022-05-14T02:57:18.982+0000",
"@timestamp": "2022-05-14T02:57:19.271+0000",
"@version": 1
}