[ZBX-19641] Webhook timeout MS Teams Created: 2021 Jul 06 Updated: 2021 Jul 09 |
|
Status: | Need info |
Project: | ZABBIX BUGS AND ISSUES |
Component/s: | Frontend (F) |
Affects Version/s: | 5.0.12 |
Fix Version/s: | None |
Type: | Problem report | Priority: | Trivial |
Reporter: | Fabrizio | Assignee: | Aleksandrs Petrovs-Gavrilovs |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
RHEL 7.9 |
Attachments: |
![]() ![]() ![]() ![]() |
Description |
i from my zabbix server i can resolve MSteams webhook URL, i've tried with nslookup and resolve correctly. but the error is: 1755:20210706:100902.800 [ MS Teams Webhook ] ERROR: Error: cannot get URL: Timeout was reached. Any ideas? i'm using the standard script Zabbix MSteams whook
var SEVERITY_COLORS = [ '#97AAB3', // Not classified. '#7499FF', // Information. '#FFC859', // Warning. '#FFA059', // Average. '#E97659', // High. '#E45959', // Disaster. '#009900', // Resolved. '#000000' // Default. ]; try { var params = JSON.parse(value); if (typeof params.teams_endpoint !== 'string' || params.teams_endpoint.trim() === '') { throw 'Cannot get teams_endpoint'; } else if (!params.teams_endpoint.startsWith('http')) { throw 'Invalid MS Teams webhook URL: ' + params.teams_endpoint; } params.zabbix_url = (params.zabbix_url.endsWith('/')) ? params.zabbix_url.slice(0, -1) : params.zabbix_url; if ([0, 1, 2, 3].indexOf(parseInt(params.event_source)) === -1) { throw 'Incorrect "event_source" parameter given: "' + params.event_source + '".\nMust be 0-3.'; } // Set "use_default_message" to true for non trigger-based events. if (params.event_source !== '0') { params.use_default_message = 'true'; } // Check {EVENT.VALUE} for trigger-based and internal events. if (params.event_value !== '0' && params.event_value !== '1' && (params.event_source === '0' || params.event_source === '3')) { throw 'Incorrect "event_value" parameter given: "' + params.event_value + '".\nMust be 0 or 1.'; } // Check {EVENT.UPDATE.STATUS} only for trigger-based events. if (params.event_update_status !== '0' && params.event_update_status !== '1' && params.event_source === '0') { throw 'Incorrect "event_update_status" parameter given: "' + params.event_update_status + '".\nMust be 0 or 1.'; } if (params.event_value == 0) { params.event_nseverity = '6'; } if (!SEVERITY_COLORS[params.event_nseverity]) { params.event_nseverity = '7'; } var request = new CurlHttpRequest(), facts = [], body = { themeColor: SEVERITY_COLORS[params.event_nseverity].replace('#', ''), summary: 'Zabbix', sections: [ { markdown: 'false', activityTitle: params.alert_subject, activitySubtitle: 'On ' + params.host_name + ' [' + params.host_ip + ']', text: (params.use_default_message.toLowerCase() == 'true') ? params.alert_message : params.trigger_description } ], potentialAction: [ { '@type': 'OpenUri', name: (params.event_source === '0') ? 'Event Info' : 'Zabbix Home', targets: [ { os: 'default', uri: (params.event_source === '0') ? params.zabbix_url + '/tr_events.php?triggerid=' + params.trigger_id + '&eventid=' + params.event_id : params.zabbix_url } ] } ] }; if (params.use_default_message.toLowerCase() !== 'true') { // Problem message. if (params.event_value === '1' && params.event_update_status === '0') { facts.push({ name: 'Event time', value: params.event_time + ' ' + params.event_date }); } // Update message. else if (params.event_update_status === '1') { body.sections[0].text = params.event_update_user + ' ' + params.event_update_action + '.'; if (params.event_update_message) { body.sections[0].text += '<br>Message:<br>' + params.event_update_message; } facts.push({ name: 'Event update time', value: params.event_update_time + ' ' + params.event_update_date }); } // Resolved message. else { facts.push({ name: 'Recovery time', value: params.event_recovery_time + ' ' + params.event_recovery_date }); } if (params.event_severity && params.event_severity !== '{EVENT.SEVERITY}') { facts.push({ name: 'Severity', value: params.event_severity }); } if (params.event_opdata && params.event_opdata !== '{EVENT.OPDATA}') { facts.push({ name: 'Operational data', value: params.event_opdata }); } if (params.event_tags && params.event_tags !== '{EVENT.TAGS}') { facts.push({ name: 'Event tags', value: params.event_tags }); } Object.keys(params) .forEach(function (key) { if (key.startsWith('fact') && params[key] !== '') {_ facts.push({ name: key.substring(5), value: params[key] }); } else if (key.startsWith('openUri') && params[key] !== '' && !params[key].startsWith('{')) {_ body.potentialAction.push({ '@type': 'OpenUri', name: key.substring(8), targets: [ { os: 'default', uri: params[key] } ] }); } }); body.sections[0].facts = facts; } body.sections[0].text = body.sections[0].text.replace(/(?:\r\n|\r|\n)/g, '<br>'); request.AddHeader('Content-Type: application/json'); if (typeof params.HTTPProxy === 'string' && params.HTTPProxy !== '') { request.SetProxy(params.HTTPProxy); } Zabbix.Log(4, '[ MS Teams Webhook ] JSON: ' + JSON.stringify(body)); var response = request.Post(params.teams_endpoint, JSON.stringify(body)); Zabbix.Log(4, '[ MS Teams Webhook ] Response: ' + response); if (response === '1') { return 'OK'; } else { Zabbix.Log(4, '[ MS Teams Webhook ] FAILED with response: ' + response); throw response; } } catch (error) { Zabbix.Log(3, '[ MS Teams Webhook ] ERROR: ' + error); throw 'Sending failed: ' + error;
|
Comments |
Comment by Dmitry Krupornitsky [ 2021 Jul 06 ] |
Hello, Please try curl for testing if you can get the access to URL: curl -H "Content-Type: application/json" -d "{\"text\": \"Hello World\"}" <WEBHOOK URL> If the POST succeeds, you must see a simple 1 output by curl. Please double-check the webhook setup: https://www.zabbix.com/ru/integrations/msteams and https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL Possibly proxy issue. Is it possible to check URL without proxy? |
Comment by Fabrizio [ 2021 Jul 06 ] |
Thanks Dmitry it's workd i've received the message on MS Teams! command launch from my zabbix server. Very strange it's not work from my frontend. I've added macros {$ZABBIX.URL} = http://localhost/zabbix There is a link for download this media type so i can try to re-import in my zabbix?
|
Comment by Dmitry Krupornitsky [ 2021 Jul 06 ] |
Yep, here is: https://github.com/zabbix/zabbix/tree/release/5.0/templates/media/msteams |
Comment by Fabrizio [ 2021 Jul 06 ] |
Ouch error during import |
Comment by Aleksandrs Petrovs-Gavrilovs [ 2021 Jul 08 ] |
Hello, Could you please try this file: Best Regards, |