[2021.05.28] 인턴 +88 Detect 사용법(MySQL 설치(Linux), DB에 있는 mulit_table 값 넣기, conf파일(python))
* Machine Learning(Abnormal) /Detect 를 사용하기 위해선 라이센스 30일을 등록해야한다.
* 등록방법: Machine Learning -> Start trial 클릭
-> Start trial 클릭
-> Start trial 클릭
-> Start my trial 클릭
-> 라이센스 30일이 등록된 모습이다.
-----------------------------------------------------------------------------------------------------------------------------
<detections를 쓰기 위해 elasticsearch.yml 과 kibana.yml을 수정>
https://www.elastic.co/guide/en/security/7.13/detections-permissions-section.html
<elasticsearch.yml>
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
xpack.security.enabled: true
/etc/kibana/kibana.yml 과, /usr/share/kibana/config/kibana.yml을 수정해줘야 한다.
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana"
elasticsearch.password: "r3c3MuYlTKhliL3zW2nd"
xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'
-------------------------------------------------------------------------------------------------------------------------------
<apache log 3gb 파일을 넣어보자.>
0. jdbc plugin install(Linux에서 MySQL 설치)
wget dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.23-1ubuntu18.04_all.deb
sudo dpkg -i mysql-connector-java_8.0.23-1ubuntu18.04_all.deb
1. AWS에서 데이터베이스로 접근하기 위해선,
1-1. 해당 AWS의 .pem 파일을 통해, Git Bash로 접근 후,
2-1. AWSLink와, DB에서 가져올 데이터베이스명(스키마명), 각 테이블이름 들을 알아야한다.
* AWS에 접근하지 않고, Azure에서 AWS에 접근하여 DB를 가져오는 것은 불가능함.(그렇기 때문에 AWS에 .pem으로 접근하여, DB이름, 가져올 DB의 테이블 명을 따와야함)
2. python 코드로 짜여진 conf 파일을 만든다.(multitable insert)
https://injekim97.tistory.com/235
-> XPACK 기능을 사용해씨 때문에 elasticsearch에 user, password를 적어 값을 부여해줘야함
<또한, python을 이용한 output(빨간색으로 표시한 부분)을 AWS에 맞게 수정해 줘야함>
jdbc_connection_string => "jdbc:mysql://AWSLINK:3306/db_name?useSSL=false&user=root&password=1234"
jdbc_user => "root"
jdbc_password => "1234"
3. 그런다음에, 해당 output 값을 모두 복사하여, /usr/share/logstash/bin 에 sudo vi test.conf , 복붙 후 저장
<logstash 실행을 위한 권한 설정>
sudo chown -R azureuser:azureuser /usr/share/logstash/data/
/usr/share/logstash/bin$ sudo chown -R azureuser:azureuser /var/lib/logstash/
/usr/share/logstash/bin$ sudo chown -R azureuser:azureuser /usr/share/logstash/logstash-core/lib/logstash/settings.rb
sudo chown -R azureuser:azureuser /var/log/logstash/
4. logstash 실행
4-1. azureuser@ELK-Xpack:/usr/share/logstash/bin 경로로 이동후 아래 명령어 수행
./logstash -f apache_log.conf --path.settings /etc/logstash/
--------------------------------------------------------------------------------------------------------------------
에러문제들은 위에서 순차적으로 권한을 부여하면 발생하지 X
아래와 같은 Error 발생시
/var/log/logstash/logstash-plain.log java.io.IOException: Permission denied
* 해결방법 (권한 부여)
sudo chown -R azureuser:azureuser /var/log/logstash/
----------------------------------------------------------------------------------------------------------------------
* 해당 에러가 발생할 때 해결방법
[FATAL] 2021-05-21 07:17:18.402 [main] runner - An unexpected error occurred! {:error=>#<ArgumentError: Path "/usr/share/logstash/data/queue" must be a writable directory. It is not writable.>, :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/settings.rb:530:in `validate'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:290:in `validate_value'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:201:in `block in validate_all'", "org/jruby/RubyHash.java:1415:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:200:in `validate_all'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:326:in `execute'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:274:in `run'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "/usr/share/logstash/lib/bootstrap/environment.rb:88:in `<main>'"]}
error=>#<ArgumentError: Path "/usr/share/logstash/data/queue" must be a writable directory. It is not writable.
-> 해당 디렉토리(/usr/share/logstash/data/queue)에 쓰기 권한이 없어서 오류가 발생
-> 해결 하기 위해 아래와 같은 명령어를 붙여 넣기 하면 된다.
sudo mkdir /usr/share/logstash/data/queue
sudo chown -R azureuser:azureuser /usr/share/logstash/data/queue
------------------------------------------------------------------------------------------------------------------------
+@ Linux에서 MySQL 설치
https://injekim97.tistory.com/184
wget dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
-> bind-address = 0.0.0.0 # 외부 접속 허용
댓글