반응형

 

회사 인터넷망 위에서 Python 프로그램을 개발 중인데

Selenium 또는 Selenium-Wire 모듈을 사용하면 반드시 googlechromelabs.github.io  사이트에 접속되어야만 합니다.

하지만 제가 다니는 회사는 프록시 서버를 지나지 않는 이상 Github 사이트에 접속이 불가능하다는 사실...

방화벽 신청까지 해봤지만 결과는 반려 처리ㅜㅜ 어쩔 수 없이 프록시로...

 

제 코드는 3가지 모듈 (selenium-wire, selenium, request)을 사용합니다.

이 경우 Proxy 설정 방법에 관해 공유드리겠습니다.

import certifi
import json
import requests
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service


# Selenium 또는 Selnium-Wire를 사용하는 경우
def driver_load():
    # webdriver 로드 #
    chromedriver = ".\\chromedriver.exe"
    service = Service(executable_path=chromedriver)

    seleniumwire_options = {
        "proxy": {
            "http": "<Proxy Server>:<Proxy Port>",
            "https": "<Proxy Server>:<Proxy Port>"
        }
    }

    # Set Options
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=<Proxy Server>:<Proxy Port>')

    # Set up the Chrome WebDriver
    driver = webdriver.Chrome(service=service, seleniumwire_options=seleniumwire_options, options=options)

    return driver


# Requests를 사용하는 경우
def request_post(post_url, params, headers):
    proxies = {
        "http": "<Proxy Server>:<Proxy Port>",
        "https": "<Proxy Server>:<Proxy Port>",
        "no_proxy": "localhost,127.0.0.1 "
    }

    params_json = json.dumps(params)
    response = requests.post(post_url, data=params_json, headers=headers, proxies=proxies, verify=certifi.where())

    return response

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

 

ElasticSearch를 설치 후 Logstash를 설치하기위해

공식 홈페이지에 나온 명령어를 그대로 따라하면 오류가 납니다...

Logstash 공식 홈페이지

https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

 

Installing Logstash | Logstash Reference [8.15] | Elastic

Use the echo method described above to add the Logstash repository. Do not use add-apt-repository as it will add a deb-src entry as well, but we do not provide a source package. If you have added the deb-src entry, you will see an error like the following:

www.elastic.co

 

Elasticsearch를 설치 후 logstash를 apt로 설치하시는 분들은 무조건 아래와 같은 오류를 만나게 됩니다.

 

[오류 내용]

E: Conflicting values set for option Signed-By regarding source https://artifacts.elastic.co/packages/8.x/apt/ stable: /usr/share/keyrings/elasticsearch-keyring.gpg != /usr/share/keyrings/elastic-keyring.gpg

 

오류가 나는 원인은 Elasticsearch & Kibana 설치와 Logstatsh 설치는

서로 다른 GPG Key 파일을 사용하기 때문에 GPG Key 파일이 충돌되기 때문입니다.

/etc/apt/sources.list.d/ 하위에 elastic-8.x.list 파일을 확인해보면 아래와 같이 두 줄이 확인됩니다.

 

이 중에서 아래와 같이 elastic-keyring.gpg 내용만 남기고 나머지는 삭제해야 합니다.

 

이후 다시 Logstash를 설치하게 되면 설치를 완료할 수 있습니다.

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

엘라스틱서치를 설치하고 이제 로그인 하려는데 암호를 몰라 접속을 못하신다구요?

여기에 나오는 방법대로만 하면 해결할 수 있습니다.

 

엘라스틱서치 로그인 패스워드는 설치하자마자 출력되는 Command Prompt로 확인할 수 있지만

따로 저장해 놓지 않으면 로그인 할 수 없습니다ㅠㅠ

 

엘라스틱서치의 기본 로그인 패스워드를 변경(reset)하는 방법 공유드리겠습니다.

 

1. 패스워드 변경을 위해선 먼저 elasticsearch-reset-password를 찾아야 합니다.

아래와 같은 명령어로 경로를 찾아줍니다.

참고로 저는 깔끔한 스샷을 찍기 위해 경로명에 /usr/share을 써넣었지만 설치 경로를 모르시는분은 아래 명령어와 같이 루트 경로(/)로 넣으시면 됩니다.

$ sudo find / -name "*reset-password"

 

elasticsearch-reset-password 프로그램 찾기

 

저의 경우 찾고자 하는 프로그램은 /usr/share/elasticsearch/bin/elasticsearch-reset-password에 프로그램이 위치해 있습니다.

프로그램을 찾았으니 elastic 사용자를 지정하여 패스워드를 초기화 해줍니다.

 

$  /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

 

저의 패스워드는 모자이크 처리 하였지만 이것을 따라하시면 초기화된 패스워드를 확인할 수 있습니다.

 

추가) 패스워드 분실 방지 방법

운영 환경이 서버라면 Elastic Search docs 페이지에도 나와있지만 패스워드 분실을 방지하기 위해선

접속 패스워드를 환경변수로 추가하거나 Desktop의 경우 profile 또는 .bashrc에 등록해 두시면 분실을 방지할 수 있습니다.

 

$ export ELASTIC_PASSWORD="접속패스워드"

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Elastic Search를 설치하고 netstat로 확인까지 하지 9200 포트가 열려있는 것을 확인했습니다.

하지만 막상 접속을 하려니 다음과 같이 접속이 불가능했습니다.

정상이라면 Elastic Search의 로그인 창이 떠야하는데...

 

해결책

위 문제는 주소창에 엉뚱한 프로토콜을 입력했기 때문이였습니다ㅠㅠ

엘라스틱서치 최신 버전은 주소를 입력할 때 http가 아닌 https를 입력해야 합니다.

저는 최신버전 8.15버전을 설치하다보니 TLS가 적용되어 있다는 영어 문구를 놓쳤더라구요.. 이놈의 영어 실력

올바른 주소 입력

 

 

위 문제의 경우 때문에 TCPdump로 네트워크 트래픽을 확인해보신 분들은 다음과 같은 특징을 발견하셨을 겁니다.

처음에  Syn, Syn+Ack, Ack 으로 3-way 핸드쉐이킹을 잘 맺자마자

곧바로 Fin Fin+Ack과 같이 연결이 끊어지는 특징이 있습니다.

 

 

 

결론적으로 이후 https를 입력하면 로그인 팝업창이 뜨는데

엘라스틱서치를 설치하게 되면 처음에 나오는 비밀번호를 잘 저장해놨다가 입력하시면 됩니다^^

 

 

기본 디폴트 id인 elastic과 설치 시 출력된 비밀번호를 입력하게 되면 아래 사진과 같이

최신버전도 잘 접속이 되는 것을 확인할 수 있습니다.

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Linux Debian 계열인 우분투 시스템 위에 ELK 스택(Elastic search + Logstash + Kinbana) 설치 방법을 공유드리겠습니다.

 

1. ELK 스택 설치 전 Ubuntu 시스템에서 사전 세팅

# 1) APT 업데이트

$ sudo apt update

 

# 2) Java SDK 설치

$ sudo apt install default-jdk

 

 

2. Elastic Search 설치

1.1) <최신 버전 설치 시> : google에서 elastic download 검색 후 "DEB x86_64" 다운로드

1.2) <특정 버전 설치 시> : google에서 elastic <버전> download 검색 후 "DEB x86_64" 다운로드

2) $ cd Downloads

3) $ sudo dpkg -i <elastic file>

4) $ sudo systemctl start elasticsearch

5) 서비스 확인 : 인터넷 브라우저 > http://localhost:9200/

설치 완료 후 화면

 

3. Kibana 설치

1.1) <최신 버전 설치 시> : google에서 kibana download 검색 후 "DEB x86_64" 다운로드

1.2) <특정 버전 설치 시> : google에서 kibana <버전> download 검색 후 "DEB x86_64" 다운로드

2) $ cd Downloads

3) $ sudo dpkg -i <kibana file>

4) $ sudo systemctl start kibana

5) 서비스 확인 : 인터넷 브라우저 > http://localhost:5601/

설치 완료 후 화면

 

 

반응형
반응형

Selenium wire 모듈을 사용하다보면 가끔 POST 요청으로 백그라운드에서 XHR 요청이 발생하는 경우 있습니다.

 

하지만 문제는 POST 요청에 대한 파라미터를 변경한 값을 결과 값으로 가져오고 싶은데 그게 어렵다는 문제입니다ㅠㅠ

 

이런 경우 아래와 같은 코드를 사용하면 Selenium wire 모듈을 통해서도 얼마든지 세션을 유지하면서 Post 요청을 사용할 수 있습니다.

 

  해결책 - Python 코드

from seleniumwire import webdriver
import requests

# WebDriver 설정
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(seleniumwire_options={}, options=options)

# Selenium 모듈로 홈페이지 요청
url = 'https://example.com'
driver.get(url)

# POST 요청을 하는 특정 페이지 요청 값을 수정하여 requests 모듈로 재요청
for idx, request in enumerate(driver.requests):
	if '</api와 같은 홈페이지 uri 값>' in request.url and request.method == 'POST':
		post_url = request.url
		headers = request.headers
		params = {
			'key1': 'val1',
			'key2': 'val2'
		params_json = json.dumps(params)
		response = requests.post(post_url, data=params_json, headers=headers)
		print(response.text)
		break

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Python으로 Selenium 모듈을 사용하다가 요청 트래픽과 응답 트래픽을 보기 위해 위해 Selenium Wire를 알게되어

Selenium Wire 모듈을 사용했는데 사용하자마자 역시나 다음과 같은 문제가 이어졌다.

 

Selenium Wire 모듈을 사용하며 특정 사이트에 접속했을 때 아래와 같이 "주의 요함" 또는 "Not Sure" 메시지가 뜬다면...

 

 

 

해결책

1. Selenium wire 홈페이지(https://pypi.org/project/selenium-wire/) 접속

 

 

2. here 클릭하여 ca.crt 파일 다운로드

 

3. 브라우저에 다운받은 인증서 추가

(Chrome 브라우져의 경우) : 설정 > 개인 정보 보호 및 보안 > 보안 > 인증서 관리 > 신뢰할 수 있는 루트 인증 기관 > 가져오기 > 인증서 가져오기 마법사 시작 > 다음 > 파일 경로에 다운 받았던 ca.crt 경로 추가 > 다음

 

 

4. Selenium Wire 재실행 및 확인

인증서를 넣으면! 아래 사진과 같이 "주의 요함" 또는 "Not Sure"메시지가 사라지게 됩니다

 

 

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

syslog 설정하고 Log파일 이름을 원하는 경로에 원하는 파일명으로 설정하는 방법에 대하여 공유드리겠습니다.

해당 명령어 실행은 CentOS 7.9 버전에서 수행되었습니다.

가장 우선적으로 yum 패키지 업데이트 이후 syslog 패키지를 다운로드하여 설치합니다.

1
2
3
#=== 패키지 설치 ===#
sudo yum update
sudo yum install -y rsyslog
cs

 

설치가 모두 완료되었으면 Log를 저장 할 위치를 선정하고 폴더를 생성하여 줍니다.

저는 /data/log/remote 경로에 저장하겠습니다.

1
2
#=== 폴더 생성 ===#
sudo mkdir -/data/log/remote
cs

 

syslog를 원하는 파일명으로 저장하기 위해 아래 $ModLoad부터 ~ 514 까지 2줄의 주석 제거하고

$template 부터 시작하는 아래 2줄을 추가해 줍니다.

UDP/514만 저장하기 원하는 경우 위에 2줄만 주석 제거하고

TCP/514만 저장하기 원하는 경우 아래 2줄만 주석 제거해줍니다.

저의 경우 UDP/514, TCP/514 모두를 파일로 저장하기 위해 아래와 같이 총 4줄을 주석제거 했습니다.

Log 파일 이름 포맷을 변경하실 분은 %로 시작하는 Format의 순서를 변경하시면 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#=== 주석 삭제 및 라인 추가1 ===#
sudo vi /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
 
$template FILENAME, "/data/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%_%fromhost-ip%.log"
*.* ?FILENAME
 
 
#=== 주석 삭제 및 라인 추가2 ===#
$ModLoad imtcp
$InputTCPServerRun 514
 
$template FILENAME, "/data/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%_%fromhost-ip%.log"
*.* ?FILENAME
cs

 

설정파일을 저장하였으면 syslog 서비스를 시작하여 줍니다.

1
2
#=== 서비스 시작 ===#
sudo systemctl start rsyslog
cs

 

서비스가 잘 시작되었는지 netstat 명령어로 포트 리스닝을 확인합니다.

1
2
#=== 포트 오픈 확인 ===#
sudo netstat -anp
cs

 

netstat 명령어로 확인해보니 TCP, UDP 모두 정상적으로 514 포트를 리스닝하고 있습니다.

 

syslog client에서 syslog를 전송하게 되면 아래 경로에 다음과 같이 IP 이름으로 폴더가 생성됩니다.

 

폴더에 들어가보면 <%날짜%>_<%IP주소%>.log 형태의 로그가 저장됩니다.

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

 

반응형
반응형

AWS 자격증을 준비하면서 개념 파악을 위해 AWS Fargate와 ECS를 사용해 보고자 AWS Docs를 보면서 따라하던 중

ECR 레포지토리를 생성하고 인증 부분에서 아래와 같은 에러를 만났습니다.

 

  에러메시지 내용

error during connect: this error may indicate that the docker daemon is not running: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/auth": open //./pipe/docker_engine: The system cannot find the file specified.

 

  원인

Windows Docker Desktop이 정상적으로 실행되지 않아서 그렇습니다.

제 경우는 Hyper-V 관련 에러 메시지가 출력되면서 Docker Desktop이 정상적으로 동작하지 않고 있었습니다.

 

혹시 Windows Docker Desktop이 실행될 때 Hyper-V 관련 에러가 나온다면 아래 URL을 참고하면 바로 해결 가능합니다.

Powershell을 통해 명령어 한 줄 넣으니 바로 해결 되었습니다.

https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

 

Enable Hyper-V on Windows 10

Install Hyper-V on Windows 10

learn.microsoft.com

 

  해결책

Windows Docker Desktop이 아래 사진과 같이 정상적으로 실행되면 에러 원인도 해결됩니다.

[인증 성공!]

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

Part 3에서는 Kibana와 Elastic을 연동하고 Dev Tool을 통해 Index를 생성하는 내용에 대해 다루겠습니다.

Ubuntu에 XRDP로 접속하여 kibana (5601/tcp)에 접근하니 아래와 같은 화면이 뜹니다.

 

  Step1. Enrollment Token 생성 및 입력

 

우선적으로 Enroolment Token을 발행해야 합니다. Ubuntu(Linux) 명령어로 아래와 같이 입력합니다.

*실행 경로가 다르신 분은 find 명령어로 elasticsearch-create-enrollment-token 프로그램의 위치를 찾으면 됩니다.

1
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana --url "https://<내부IP>:9200"
cs

 

그러면 긴 문자열의 Token이 발행되는데 그것을 위 화면에 붙여넣고 Confiture Elastic을 클릭합니다.

 

 

  Step2. Verification required 생성 및 입력

 

아래와 같이 인증코드 6자리를 입력하라는 화면이 나오면 아래 명령어를 입력합니다.

1
sudo /usr/share/kibana/bin/kibana-verification-code
cs

인증번호가 출력되면 인증번호를 입력합니다.

 

 

  Step3. ElasitcSearch 로그인

 

드디어 마지막 단계입니다.

ElasticSearch 계정으로 로그인을 하면됩니다. 혹시 PW가 기억나지 않으시는분들은 password reset이 필요합니다.

그 방법은 https://betterinvesting.tistory.com/315 링크를 참고하시면 됩니다.

 

  Step4. Index 생성

 

로그인까지 완료했으면 DashBoard가 보이실텐데 그곳에서 Management > Dev Tools로 들어가줍니다.

 

가장 첫줄로 GET /_cat/indices?v 를 입력하여 모든 Index를 출력해줍니다.

ElasticSearch에서 Index는 Database에서 DB이름과 같은 개념입니다.

이번에는 customer 이름의 index를 생성해보도록 하겠습니다. 명령어는 아랫줄과 같습니다.

PUT /customer

이후 다시 GET /_cat/indices?v 명령어로 모든 Index를 출력하여 보면 customer index가 생성되었음을 확인 가능합니다.

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형

'IT > ELK' 카테고리의 다른 글

[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 2)  (1229) 2023.05.14
[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 1)  (1235) 2023.05.12

+ Recent posts