@@ -59,47 +59,66 @@ Zabbix의 Media를 설정 하겠습니다. 여기서는 클라우드포레에서
5959  ;  ;  ;  ;  ;  ;  ;  ; 클라우드포레는 Zabbix의 기존 Media 유형 중 만족하는 것이 없기 때문에 이를 처리할 스크립트를 만들어야 합니다.
6060
6161``` javascript
62- var params = JSON .parse (value),
63- req = new CurlHttpRequest (),
64- resp;
65- req .AddHeader (' Content-Type: application/json' );
66-
67- var params = JSON .parse (value);
68- payload = {};
69- payload .title = params .title ;
70- payload .message = params .message ;
71- payload .to = params .to ;
72-
73- payload .event = {};
74- payload .event .id = params .eventID ;
75- payload .event .name = params .eventName ;
76- payload .event .date = params .eventDate ;
77- payload .event .time = params .eventTime ;
78- payload .event .status = params .eventStatus ;
79- payload .event .severity = params .eventSeverity ;
80-
81- payload .item = {};
82- payload .item .id = params .itemID ;
83- payload .item .key = params .itemKey ;
84- payload .item .value = params .itemValue ;
85-
86- payload .trigger = {};
87- payload .trigger .id = params .triggerID ;
88- payload .trigger .name = params .triggerName ;
89- payload .trigger .severity = params .triggerSeverity ;
90- payload .trigger .status = params .triggerStatus ;
91-
92- payload .host = {};
93- payload .host .id = params .hostID ;
94- payload .host .connection_info = params .hostConn ;
95- payload .host .name = params .hostname ;
96- payload .host .visible_name = params .hostVisibleName ;
97-
98-
99- resp = req .Post (params .webhookURL ,
100- JSON .stringify (payload)
101- );
102- return resp;
62+ try {
63+ var params = JSON .parse (value);
64+ var req = new HttpRequest ();
65+ var resp;
66+
67+ req .addHeader (' Content-Type: application/json' );
68+ req .addHeader (' User-Agent: Zabbix/6.0 Webhook' );
69+
70+ // SpaceONE webhook 페이로드 구성
71+ var payload = {};
72+ payload .title = params .title ;
73+ payload .message = params .message ;
74+ payload .to = params .to ;
75+
76+ payload .event = {};
77+ payload .event .id = params .eventID ;
78+ payload .event .name = params .eventName ;
79+ payload .event .date = params .eventDate ;
80+ payload .event .time = params .eventTime ;
81+ payload .event .status = params .eventStatus ;
82+ payload .event .severity = params .eventSeverity ;
83+
84+ payload .item = {};
85+ payload .item .id = params .itemID ;
86+ payload .item .key = params .itemKey ;
87+ payload .item .value = params .itemValue ;
88+
89+ payload .trigger = {};
90+ payload .trigger .id = params .triggerID ;
91+ payload .trigger .name = params .triggerName ;
92+ payload .trigger .severity = params .triggerSeverity ;
93+ payload .trigger .status = params .triggerStatus ;
94+
95+ payload .host = {};
96+ payload .host .id = params .hostID ;
97+ payload .host .connection_info = params .hostConn ;
98+ payload .host .name = params .hostname ;
99+ payload .host .visible_name = params .hostVisibleName ;
100+
101+ // 디버깅용 로그
102+ Zabbix .log (4 , ' [ CloudForet webhook ] Sending to URL: ' + params .webhookURL );
103+ Zabbix .log (4 , ' [ CloudForet webhook ] Payload: ' + JSON .stringify (payload));
104+
105+ resp = req .post (params .webhookURL , JSON .stringify (payload));
106+
107+ // 응답 상태 확인
108+ if (req .getStatus () != 200 && req .getStatus () != 201 ) {
109+ throw ' Request failed with status code ' + req .getStatus () + ' : ' + resp;
110+ }
111+
112+ // 성공 로그
113+ Zabbix .log (4 , ' [ CloudForet webhook ] Successfully sent. Response: ' + resp);
114+
115+ return ' OK' ;
116+
117+ } catch (error) {
118+ // 에러 로그
119+ Zabbix .log (3 , ' [ CloudForet webhook ] Failed: ' + error);
120+ throw ' CloudForet webhook failed: ' + error;
121+ }
103122```
104123
105124<img src =" GUIDE-img/zabbix-media-setting(h2)-4.png " width =" 50% " height =" 50% " >
0 commit comments