Zabbix API 예제
[ PHP 코드 ]
아래 샘플 코드를 이용해 토큰을 출력해 봅니다.
<?php $curl = curl_init() ; curl_setopt ( $curl , CURLOPT_URL , 'http://sysdocu.tistory.com/api_jsonrpc.php' ) ; curl_setopt ( $curl , CURLOPT_TIMEOUT , 10 ) ; curl_setopt ( $curl , CURLOPT_POST , 1 ) ; curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , 1 ) ; curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , FALSE ) ; curl_setopt ( $curl , CURLOPT_HTTPHEADER , array ( 'Content-Type: application/json' ) ) ; curl_setopt ( $curl , CURLOPT_POSTFIELDS , '{"jsonrpc":"2.0" , "method":"user.login" , "params":{"user":"Admin", "password":"12345678"} , "auth":null, "id":1}' ) ; $result = curl_exec ( $curl ) ; $err = curl_error ( $curl ) ; curl_close ( $curl ) ; if ( $err ) echo 'Error :' . $err ; else echo $result; $data = json_decode($result, true); $token = $data['result']; echo $token ?> |
[ BASH 코드 ]
#!/bin/bash TOKEN=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{ "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "12345678" }, "id":1 }' 'http://sysdocu.tistory.com/api_jsonrpc.php' |sed -e "s/.*\"result\":\"//;s/\".*//"` echo -e "TOKEN : $TOKEN\n" |
[ API 종류 ]
더 자세한 API 종류 및 설명은 zabbix 공식 사이트를 참고해주세요.
아래는 curl 명령을 기준으로 작성하였습니다.
PHP 코드는 아래 코드와 맨 위 PHP 예제 파일을 참고해서 작성하면 됩니다.
1) 토큰 생성
Admin 계정으로 토큰을 생성해야 생성된 토큰으로 계정 추가, 삭제가 가능합니다.
(명령)
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "12345678"
},
"id":1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php'
(결과)
{
"jsonrpc":"2.0",
"result":"c436f84f928956be8db12704db759376",
"id":1
}
2) 계정 생성
'${TOKEN}' 부분에 위에서 생성한 토큰이 들어갑니다.
usrgrpid 값 16은 임의로 만든 값입니다.
(명령)
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "user.create",
"params": {
"alias": "CDH",
"passwd": "1234",
"roleid": "1",
"usrgrps": [
{
"usrgrpid": "16"
}
],
"medias": [
{
"mediatypeid": "16",
"sendto": [
"123456789"
],
"active": 0,
"severity": 63,
"period": "1-7,00:00-24:00"
}
]
},
"auth": "'${TOKEN}'",
"id": 2
}' 'http://sysdocu.tistory.com/api_jsonrpc.php'
(결과)
{
"jsonrpc": "2.0",
"result": {
"userids": [
"20"
]
},
"id": 2
}
3) 계정 삭제
생성시 부여되었던 userids 값을 사용합니다.
(명령)
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "user.delete",
"params": [
"20"
],
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php'
(결과)
{
"jsonrpc": "2.0",
"result": {
"userids": [
"20"
]
},
"id": 1
}
4) 유저 리스트
(명령)
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "user.get",
"params": {
"output": "extend"
},
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php'
5) 그룹 리스트
(명령)
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "usergroup.get",
"params": {
"output": "extend",
"status": 0
},
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php'
아래는 쉘스크립트 코드 입니다. curl 형식은 동일합니다.
# 호스트 그룹 추가
HOSTGROUP_ADD=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "hostgroup.create",
"params": {
"name": "sysdocu"
},
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php' | jq '.'`
echo -e "호스트 그룹 생성 결과\n${HOSTGROUP_ADD}"
# 호스트 그룹 리스트 출력
HOSTGROUP_GET=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend"
},
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php' | jq '.'`
echo -e "호스트 그룹 리스트 출력 결과\n${HOSTGROUP_GET}"
# 유저 그룹 추가
GROUP_ADD=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "usergroup.create",
"params": {
"name": "sysdocu",
"rights": {
"id": "37", // 호스트 그룹 id
"permission": 3 // 권한 (RW)
}
},
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php' | jq '.'`
echo -e "그룹 생성 결과\n${GROUP_ADD}"
# 유저 그룹 삭제
GROUP_DEL=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "usergroup.delete",
"params": [ "18" ],
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php' | jq '.'`
echo -e "그룹 삭제 결과\n${GROUP_DEL}"
# 호스트 그룹 삭제
HOSTGROUP_DEL=`curl -s -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "hostgroup.delete",
"params": [ "32" ],
"auth": "'${TOKEN}'",
"id": 1
}' 'http://sysdocu.tistory.com/api_jsonrpc.php' | jq '.'`
echo -e "호스트 그룹 삭제 결과\n${HOSTGROUP_DEL}"
* 참고
roleid
1 : User role
2 : Admin role
3 : Super role
4 : Guest role
mediatypeid
1 : email
2 : x
3 : sms
4 : email
5 : Mattermost
6 : Opsgenie
7 : PagerDuty
8 : Pushover
9 : Slack
10 : discord
11 : SIGNL4
12 : Jira
13 : Jira with CustomFields
14 : MS Teams
15 : Redmine
16 : Telegram
'리눅스 > OS 일반' 카테고리의 다른 글
[에러] Too many open files 조치하는 방법 (ulimit 명령어) (0) | 2022.09.14 |
---|---|
GCC 원하는 버전으로 업그레이드 하기 (CentOS 7, GCC 10.3.0) (0) | 2022.06.17 |
[PHP] 여러개의 파일 읽기 (fopen multiple files in php) (0) | 2022.04.19 |
오류: repo 'appstream'의 메타 데이터를 다운로드하지 못했습니다: Cannot prepare internal mirrorlist: No URLs in mirrorlist (0) | 2022.04.12 |
리눅스 PC (Ubuntu 24.04) 보안 설정 (0) | 2022.04.04 |