Geekflare API를 사용하여 사이트가 다운될 때 알림을 받는 방법은 무엇입니까?
게시 됨: 2021-08-22사용자가 귀하의 사이트에 액세스하려고 합니다. 무슨 일이 일어났는지 아십니까? 표시되지 않습니다. 이전에 파악하지 못한 몇 가지 오류가 있습니다. 사용자는 좌절하고 사이트를 떠납니다. 그래서 충성도가 높은 사용자를 잃었습니다.
이 문제를 해결하는 방법은 무엇입니까? 사용자가 사이트를 찾기 전에 다운된 사이트에 대해 어떻게 알 수 있습니까?
두 가지 가능한 방법이 있습니다.
몇 달러를 지출해도 괜찮다면 StatusCake 또는 여기에 언급된 다른 솔루션과 같은 모니터링 솔루션으로 이동할 수 있습니다. 그러나 개발자이거나 월간 지출할 준비가 되지 않은 경우 Geekflare API – Is Site Up?
사이트가 가동 중입니까? API는 사이트가 다른 위치에서 작동 중인지 작동 중지되었는지 확인합니다.
Gmail을 통해 사이트가 다운될 때 즉시 알려주는 Python 코드를 보여드리겠습니다.
Is Site Up? 부터 살펴보겠습니다 . API.
사이트가 가동 중입니까? API
API를 확인하기 전에 Python에서 API와 함께 작동 하도록 요청 이라는 패키지를 설치해야 합니다. 그러나 반드시 Python만 사용할 필요는 없습니다. 선호하는 언어를 사용할 수 있습니다. 단, API 요청 시 필요한 사항은 반드시 설정해 주세요.
따라서 Python을 사용하는 사람들은 pip install requests 명령을 사용하여 requests 패키지를 pip install requests
다른 언어에 대한 설정을 완료하고(Python 이외를 선택한 경우) 다음 단계를 계속합니다.
이제 Geekflare API 페이지로 이동합니다.

Is Site Up?을 포함하여 다양한 유형의 API를 찾을 수 있습니다 . 이 기사에서 우리가 관심을 갖고 있는 API입니다. Geekflare API를 사용하려면 RapidAPI를 통해 얻을 수 있는 API 키가 필요합니다.
API 키 가져 오기 버튼을 클릭하여 RapidAPI로 이동합니다.

RapidAPI는 다음과 같이 새 탭에서 열립니다.

API 키를 얻으려면 계정을 만들어야 합니다. 계정이 없는 경우 RapidAPI에서 계정을 만듭니다. 계정을 만든 후 계정에 로그인합니다.

Is Site Up을 찾을 수 있습니까? 우리가 찾고 있는 모든 Geekflare API의 최상위에 있는 API. 활성화되어 있지 않으면 사용 가능한 검색을 사용하여 찾아 클릭하십시오.
오른쪽에 API 사용법이 표시됩니다. 오른쪽의 코드 조각 섹션에서 요청이 있는 Python을 선택합니다.

Python을 사용하지 않는 경우 해당 패키지에서 원하는 언어를 선택하십시오.
Is Site Up? 을 호출하는 코드가 표시됩니다 . API. 나중에 더 많은 코드를 쉽게 추가할 수 있도록 약간 수정해 보겠습니다. Python에서 수정된 코드를 살펴보십시오.
import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data)위 코드에서 API_KEY 를 RapidAPI의 고유한 API 키로 대체하십시오. 사용자마다 다를 것입니다. 다음과 같이 헤더 매개변수 섹션의 RapidAPI에서 찾을 수 있습니다.

아래와 같이 샘플 코드에서 동일한 API 키를 찾을 수 있습니다.

키를 복사하여 위의 코드에 추가하십시오.
다중 위치
위의 코드는 사이트가 단일 위치(뉴욕, 미국)에서 시작되었는지 여부를 확인합니다. 그러나 요청 본문의 위치를 사용하여 다른 위치에서 테스트할 수 있습니다.
다른 사용 가능한 위치는 영국(런던)과 싱가포르입니다. 다음과 같이 사이트 URL과 함께 위치 데이터를 전달할 수 있습니다.
{ "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" }목록에서 선호하는 위치를 전달할 수 있습니다.
사이트의 가동 여부에 관계없이 데이터를 가져오는 API 요청을 만드는 코드를 완성했습니다. 이제 사이트가 다운되었을 때 메일을 보내는 코드를 더 작성할 때입니다. 가자.
사이트 다운 시 이메일 수신
당신은 파이썬에서 Gmail을 통해 이메일을 보내거나 특별히 Gmail에 메일을 보내도록 설계된 패키지라는 yagmail를 사용하는 다음 코드를 사용하는 방법에 대한 자세한 튜토리얼을 찾을 수 있습니다.

Gmail 계정을 통해 메일을 보내기 전에 보안 수준이 낮은 앱 허용 옵션을 켜야 합니다. 여기에서 켤 수 있습니다.
코드를 봅시다.
def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, )여기에서 yagmail의 전체 튜토리얼을 찾을 수 있습니다.
이제 API 요청 및 메일 전송을 위한 코드가 있습니다. 다음 단계는 API 요청에서 잘못된 상태를 수신할 때마다 send_mail 을 호출하는 것입니다.
그렇다면 우리 사이트가 다운 또는 업되었는지 어떻게 알 수 있습니까? Is Site Up을 요청할 때 API는 다음과 같이 일부 데이터로 응답합니다.
{'timestamp': 1629556759685, 'apiStatus': 'success', 'apiCode': 201, 'message': 'Site is up.', 'meta': {'url': 'https://www.geekflare.com', 'followRedirect': False, 'test': {'id': 'eu0frmah05mids55elkjgevkzd8ur3vk'}}, 'data': [{'country': 'United States', 'city': 'New York', 'description': 'Site is up.', 'statusCode': 301, 'reasonPhrase': 'Moved Permanently'}]}그 안에 메시지 라는 키가 있습니다. 키 메시지 의 값은 사이트가 작동 중인지 작동 중지 상태인지 알려줍니다. 따라서 다음과 같이 두 가지 유형의 메시지가 될 수 있습니다.
- 사이트가 올라왔습니다.
- 사이트가 다운되었습니다.
이제 알 것 같아요. 따라서 " 사이트가 다운되었습니다."라는 메시지를 받으면 메일을 보냅니다 . 최종 코드는 다음과 같습니다.
import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below.\n\n" for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']}\n" mail_content += "\nCheck the error and resolve them as soon as possible." send_mail(mail_content)원하는 대로 메일 내용을 업데이트할 수 있습니다. 사이트가 다운될 때마다 메일 발송을 완료했습니다. 위의 코드를 통해 수신된 샘플 메일을 참조하십시오.

그러나 여전히 문제가 있습니다.
코드를 실행하여 사이트가 작동 중인지 작동 중지 상태인지 확인해야 합니다. 얼마나 자주 실행합니까? 네, 취향에 따라 다릅니다. 1시간마다 확인해야 한다고 가정해 보겠습니다.
터미널이나 명령줄을 열고 매시간 코드를 실행할 수 있습니다. 하지만, 반복되는 과정이고 지루한 과정입니다. 그리고 때때로 우리는 그것을 확인하는 것을 잊을 수 있습니다. 따라서 매시간 자동으로 코드를 실행해야 합니다.
여기에서 cron을 사용하여 매시간 코드를 자동으로 실행할 수 있습니다. 설정하는 방법을 알아보겠습니다.
크론 설정
UNIX 기반 운영 체제에서 cron을 설정하는 단계를 살펴보겠습니다.
- 터미널을 엽니다.
- 터미널에서 crontab 파일을 여는
crontab -e명령을 실행합니다. - 키
i를 눌러 INSERT 모드로 들어갑니다. - 이제 cron 패턴, Python 디렉토리 및 코드 파일 디렉토리를 추가하십시오. 아래의 예를 참조하십시오.
0 * * * * /usr/bin/python3 /home/sample.py

매시간 코드를 실행하도록 패턴을 설정했습니다. 그러나 요구 사항에 따라 1분마다 설정해야 할 수도 있습니다. 따라서 Crontab Guru 또는 기타 cron 도구를 사용하여 일정에 대한 cron 패턴을 생성할 수 있습니다.
그게 다야 사이트가 다운될 때 알림을 받을 수 있도록 설정을 완료했습니다.
결론
cron을 사용하여 사이트가 다운될 때 이메일을 통해 알림을 받기 위해 연중무휴로 실행되는 클라우드 서버에서 스크립트가 주기적으로 실행되도록 예약하십시오. 자동화는 많은 시간을 절약하고 우리에게 효과적입니다. 따라서이 기사에서 사용한 것처럼 사용하십시오.
해피 모니터링
