Uploaded image for project: 'ZABBIX BUGS AND ISSUES'
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-19641

Webhook timeout MS Teams

XMLWordPrintable

    • Icon: Problem report Problem report
    • Resolution: Unresolved
    • Icon: Trivial Trivial
    • None
    • 5.0.12
    • Frontend (F)
    • None
    • RHEL 7.9

      i from my zabbix server i can resolve MSteams webhook URL, i've tried with nslookup and resolve correctly.
      My zabbix server use a proxy for internet access and the rule is open.

      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;
      

       

        1. 1.PNG
          1.PNG
          36 kB
        2. error import.JPG
          error import.JPG
          40 kB
        3. media_msteams_5.xml
          15 kB
        4. media_msteams.xml
          202 kB

            agavrilovs Aleksandrs Petrovs-Gavrilovs
            propusgemini Fabrizio
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: