[ Zabbix - 카카오톡 알림 설정 ] part 5-1

안녕하세요 이번 글에선 카카오톡 알림 설정을 진행해보겠습니다.

에러 발생시 카카오에서 제공하는 rest api를 이용하여 zabbix에 등록한 파이썬 스크립트를 돌려 자신의 카카오톡으로 알람이 오도록 구성을 하였는데 해당 파이썬 스크립트를 짜는것이 저같은 새내기한텐 어려워서..회사 선배의 도움을 받았습니다ㅎㅎ

 

 

 

 

Kakao api 설정

 

카카오 developers : https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

 

■ kakao developers 회원가입

상단의 내애플리케이션 클릭

 

 

 

 애플리케이션 추가

 

 

 

 앱 키 저장

 

 

 

 활성화 설정

 

 

 

 동의 설정

내 애플리케이션 -> 동의항목 -> 카카오스토리 프로필 URL 필수동의/ 카카오톡 메시지 전송 선택 동의

 

 

 

 Redirect URL 등록

나중에 수정 가능(처음 테스트로는  https://example.com/oauth 로 진행)

 

 

 

 상단의 문서 -> REST API 클릭

 

 

 

 

 스크롤 내리다보면 Request 부분에 URL 코드 확인가능

 

GET /oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code HTTP/1.1 

Host: kauth.kakao.com

 

 

=> https://kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code 이러한 주소가 됩니다.

{REST_API_KEY}에 4번에서 저장한 REST API 키를 붙여 넣기

{REDIRECT_URI}에 5번의 Redirect URI를 넣어주기 (https://example.com/oauth)

 

완성된 주소를 인터넷 주소창에 입력

 

=> https://kauth.kakao.com/oauth/authorize?client_id=216bbebb1f7dd0755bfac177d321d8c8&redirect_uri=https://example.com/oauth&response_type=code

 

 

 

 

 정상 화면

 example.com/oauth?code=~~~~에서 '=' 이후의 코드만 따로 저장해 주세요. (빨간 네모 박스만 저장)
https://example.com/oauth?code=glVI29snV5wsw-mZgSlfp_WvDAmpKYI0oX7Jxel_SwvzYWRzOD72QWXKsoLbGkoMhjvZNAopcFEAAAF9-qEpGg

 

 

 

파이썬 설치 (zabbix server)

[root@localhost Zabbix-in-Telegram]# yum -y install python3

 

 

 

 토큰 입력

import requests
url = 'https://kauth.kakao.com/oauth/token'
rest_api_key = '자신의 REST API 키'
redirect_uri = 'https://example.com/oauth'
authorize_code = '-7sSp7Xxqw2QAew7-rctWJtZT4ycERTzQM_nylg8bX0OxFcgGegkA9jaVvPLEVOX_FrkxQo9dRoAAAF2qFCIsA 코드 입력'

data = {
    'grant_type':'authorization_code',
    'client_id':rest_api_key,
    'redirect_uri':redirect_uri,
    'code': authorize_code,
    }
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

# json 저장
import json
#1.
with open(r"C:\Users\user\Desktop\PythonWorkspace\kakao_test\kakao_code.json","w") as fp:     
## find / -name kakao_code.json 으로 해당 경로 찾아서 입력
    json.dump(tokens, fp)
#2.with open("kakao_code.json","w") as fp:    
    json.dump(tokens, fp)

 
 
 
 

위 코드 마지막 with 부분에서 디렉토리 경로에 익숙하신 분은 #1. 에서 자신의 디렉토리 경로를 입력해주시고 디렉토리 경로가 익숙하지 않으신 분은 #2. 를 입력해 주세요.

반드시 #1. 과 #2. 둘 중 하나만 입력!

[root@localhost ~]# vi jh.py

import requests

url = 'https://kauth.kakao.com/oauth/token'
rest_api_key = '216bbebb1f7dd0755bfac177d321d8c8'
redirect_uri = 'https://example.com/oauth'
authorize_code = 'glVI29snV5wsw-mZgSlfp_WvDAmpKYI0oX7Jxel_SwvzYWRzOD72QWXKsoLbGkoMhjvZNAopcFEAAAF9-qEpGg'

data = {
    'grant_type':'authorization_code',
    'client_id':rest_api_key,
    'redirect_uri':redirect_uri,
    'code': authorize_code,
    }

response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

# json 저장
import json

with open(r"/root/kakao_code.json","w") as fp:
    json.dump(tokens, fp)



## 해당 파이썬 파일을 돌리려면 requests 라는 모듈이 필요하다. 설치진행 
[root@localhost ~]# pip3 install requests



## 해당 파일 돌리면 access_token, token_type, refresh_token등 입력 된다.
[root@localhost ~]# python3 jh.py
{'access_token': 'lL6-A45-VIGM8VAGIb8N5dFsxlMM0r0ot1UPawo9dGkAAAF9-sim7A', 'token_type': 'bearer', 'refresh_token': 'OgOdeIvu68LsGpiC2XlyODnTbN9-ScojkacPuQo9dGkAAAF9-sim6w', 'expires_in': 21599, 'refresh_token_expires_in': 5183999}
 
 
 
 
 

 저장한 json 파일 읽어 오기

#import requests

#url = 'https://kauth.kakao.com/oauth/token'
#rest_api_key = '216bbebb1f7dd0755bfac177d321d8c8'
#redirect_uri = 'https://example.com/oauth'
#authorize_code = '6lMU31XpHhca5dgEuxieFGJlBTeAQYUtOMtA5ptOrmJkv7DQttWkSynSsQaVH_H8hS7kcwo9c-sAAAF9-se-tA'

#data = {
#    'grant_type':'authorization_code',
#    'client_id':rest_api_key,
#    'redirect_uri':redirect_uri,
#    'code': authorize_code,
#    }

#response = requests.post(url, data=data)
#tokens = response.json()
#print(tokens)

# json 저장
import json

with open(r"/root/kakao_code.json","r") as fp:
    ts = json.load(fp)
print(ts)
print(ts["access_token"])




[root@localhost ~]# python3 jh.py
{'access_token': 'lL6-A45-VIGM8VAGIb8N5dFsxlMM0r0ot1UPawo9dGkAAAF9-sim7A', 'token_type': 'bearer', 'refresh_token': 'OgOdeIvu68LsGpiC2XlyODnTbN9-ScojkacPuQo9dGkAAAF9-sim6w', 'expires_in': 21599, 'refresh_token_expires_in': 5183999}
lL6-A45-VIGM8VAGIb8N5dFsxlMM0r0ot1UPawo9dGkAAAF9-sim7A
 
 
 
 
 
 

카카오톡 메시지 보내기

 
 

■ 문서 -> REST API 클릭

 
 
 

 

 

 스크롤 내리다보면 URL이란 항목에 아래와 같은 코드 확인 가능

POST/v2/api/talk/memo/default/send HTTP/1.1

Host: kapi.kakao.com
Authorization: Bearer {ACCESS_TOKEN}

=> https://kapi.kakao.com/v2/api/talk/memo/default/send 이러한 주소가 됩니다.

 

 

 

 

 카카오톡으로 전송하는 파이썬 파일 작성

[root@localhost ~]# vi jh2.py

import requests
import json

with open(r"/root/kakao_code.json","r") as fp:
    tokens = json.load(fp)


url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data={
    "template_object": json.dumps({
        "object_type":"text",
        "text":"성공적! GoodGood!!!",
        "link":{
            "web_url":"www.naver.com"
        }
    })
}

response = requests.post(url, headers=headers, data=data)
response.status_code



## 실행
[root@localhost ~]# python3 jh2.py
 
 
 
 

 실행 화면

 

 

 

 

 

참고

 

https://nirsa.tistory.com/269

 

[Zabbix 5.0] 자빅스 텔레그램 연동 (zabbix telegram)

자빅스 텔레그램 연동 (zabbix telegram) 자빅스에서 텔레그램을 연동하는 방법 입니다. 기존에 자빅스가 설치 되어 있어야 하고 자빅스의 버전에는 크게 영향을 받지 않아 보이네요. 테스트 환경은

nirsa.tistory.com

https://puffinknight.tistory.com/148

 

Zabbix 에서 알람 설정 -- SMS 연동 및 라인(line)연동

zabbix 에서 sms 및 line 연동 아래와 같이 미디어 타입에서 타입을 생성한다. 스크립트 이름은 생성할 파일의 이름이다. zabbix가 설치된 경로에서 해당 파일을 생성한다. AlertScriptsPath 설정경로는 zabb

puffinknight.tistory.com