Mattermostред рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг (рднрд╛рдЧ 2)

рд╣рдо рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рдкрдЯрд╛рддреЗ рд░рд╣реЗрдВрдЧреЗред


рднрд╛рдЧ рджреЛ Zabbix рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг


рдЦрд╝рдмрд░ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдиреА рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЬрд╝рд╛рдмрд┐рдХреНрд╕ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдиреЗрдЯ рдкрд░ рдЦреЛрдЬреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ред рдХреЛрдб рдкрд░реНрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдореЛрддреА-рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреЛрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ (рдореВрд▓ рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдкрд╣рд▓реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░реЗрдВрдЧреЗред


Mattermost


рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ "рд╣реБрдХ" рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ "рдПрдХреАрдХрд░рдг" -> "рдЗрдирдХрдорд┐рдВрдЧ рд╡реЗрдмрд╣реВрдХ" рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдЦрд╛рдВрдХрд┐рдд рд▓рд┐рдВрдХ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред


рдЫрд╡рд┐


Zabbix


"рдкреНрд░рд╢рд╛рд╕рди" -> "рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрджреНрдзрддрд┐" рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдПрдХ рдирдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:


рдЫрд╡рд┐


рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


  1. {} ALERT.SENDTO
  2. рд╕рдШрди рд╡реЗрдмрд╣реБрдХ рд╕реЗ рд▓рд┐рдВрдХ (рдЬреЛ рдкрд╣рд▓реЗ рдХреЙрдкреА рдХреА рдЧрдИ рдереА)
  3. рд╕рдВрджреЗрд╢ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдЖрдПрдВрдЧреЗ
  4. рдЕрд╡рддрд╛рд░ рд╕реЗ рд▓рд┐рдВрдХ (рдлрд╝рд╛рдЗрд▓ http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)
  5. {} ALERT.MESSAGE

рдлрд┐рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдПрдХ рдирдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:


рдЫрд╡рд┐


рдЬрд╣рд╛рдБ рдлрд╝реАрд▓реНрдб рдореЗрдВ "рднреЗрдЬреЗрдВ" рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪреИрдирд▓ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдБ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ "рдпрд╣" рд╣реИ (рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЪреИрдирд▓ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпрд╣ рдорд╛рди рдореИрдХреНрд░реЛ {ALERT.SENDTO} рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдирдП рдмрдирд╛рдП рдЧрдП рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред {ALERT.MESSAGE} - рдпрд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрджреЗрд╢ рд╣реА рд╣реЛрдЧрд╛ред


рдореВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрджреЗрд╢ рдХреЛ рдЬрд╕рди рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ (рд╢рд╛рдпрдж рдпрд╣ рдХрд╣реАрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ред рдХреЛрдб рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╣рд╛рдБ Zabbix рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ /usr/lib/zabbix/alertscripts/zabbixMatterBot.pl (рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдмрд┐рдпрди рдФрд░ zabbix рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ) рдмрдирд╛рдПрдБ:


#!/usr/bin/perl # https://github.com/drewbeer/zabbix-mattermost-alertscript DrewBeer # passes data in and curls it out via json to mattermost webhooks as attachments. # you can use this as you wish, free as in beer, life is that way. # minify your json before you set it in zabbix, it will make your life easier use warnings; use strict; use JSON; use Data::Dumper; #   , /tmp/zabbix-mattermost.log my $debug = 0; my $logFH; my $zabbixData = (); # debug log the incoming data if ($debug) { open($logFH, '>>', '/var/log/zabbix/zabbix-mattermost.log'); my $dump = Dumper(@ARGV); print $logFH "args:\n$dump\n"; } #    zabbix #  -  ,   mattermost,  , #   ,   my ($channel, $hook, $botName, $iconUrl, $body) = @ARGV; $zabbixData = $body; #   my $payload; $payload = processInternal($zabbixData); #  if ($debug) { print $logFH "final payload: $payload\n"; } #   if ($payload) { sendPayload($payload); } exit; #    #  curl sub sendPayload { my($payload) = @_; my $cmd = qq( curl -s -i -X POST --data-urlencode '$payload' $hook > /dev/null); if ($debug) { $cmd = qq( curl -i -X POST --data-urlencode '$payload' $hook ); } my $cmdOutput = `$cmd`; # final debug if ($debug) { print $logFH "curl:\n$cmd \n$cmdOutput\n"; } } #    zabbix #   json- sub processInternal { my $data = shift; my $attach = (); #    $attach->{'channel'} = $channel; $attach->{'username'} = $botName; $attach->{'icon_url'} = $iconUrl; $attach->{'response_type'} = 'comment'; $attach->{'text'} = $data; if ($debug) { my $body = Dumper $attach; print $logFH "object:\n$body\n"; } my $jsonBody = encode_json $attach; #    my $jsonPayload = qq(payload=$jsonBody); #    return $jsonPayload; } 

рдЕрдм рдпрд╛ рддреЛ рд╣рдо рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдо zabbix рдореЗрдВ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ


рдЫрд╡рд┐


рд╡рд╣ рд╕рдм рдПрдХреАрдХрд░рдг рд╣реИред

Source: https://habr.com/ru/post/hi442404/


All Articles