├── HOW-TO-USE-HTTPPROXY-RU.md ├── HOW-TO-USE-HTTPPROXY.md ├── README.md ├── README.ru.md ├── patch └── ZBXNEXT-5554.patch ├── zbx_export_mediatypes.xml └── zbx_export_mediatypes_v5.xml /HOW-TO-USE-HTTPPROXY-RU.md: -------------------------------------------------------------------------------- 1 | # Отправка уведомлений из Zabbix 4.4 в Telegram через Webhook использую HTTP прокси 2 | 3 | Использование HTTP прокси в Webhook станет возможным только в Zabbix v5.0, но я бэкпортировал патч (ZBXNEXT-5554) для версии 4.4 4 | 5 | Если Вы опытный пользователь, то сможете пересобрать Zabbix из исходников и применить данный патч. 6 | 7 | Сcылка на сам патч [здесь](https://github.com/CHERTS/zabbix_telegram_webhook/tree/master/patch) 8 | 9 | Ниже инструкции по пересборке Zabbix v4.4 из исходного кода под разные ОС. 10 | 11 | [Сборка на Oracle Linux 7 с поддержкой MySQL (MariaDB)](#oracle-linux-7) 12 | 13 | [Сборка на Red Hat Enterprise Linux 8 с поддержкой MySQL (MariaDB)](#red-hat-enterprise-linux-8) 14 | 15 | [Сборка на Ubuntu 18.04 LTS (Bionic Beaver) с поддержкой MySQL (MariaDB)](#ubuntu) 16 | 17 | # Oracle Linux 7 18 | ## Сборка на Oracle Linux 7 с поддержкой MySQL (MariaDB) 19 | 20 | ### 1. Для подготовки к сборки на Oracle Linux 7 нужно установить дополнительные пакеты: 21 | 22 | ~~~~ 23 | yum group install "Development Tools" 24 | yum-config-manager --enable ol7_optional_latest 25 | yum-config-manager --enable ol7_developer 26 | yum install -y wget unzip gettext java-1.8.0-openjdk libxml2-devel openssl-devel libcurl-devel net-snmp-devel libevent-devel sqlite-devel pcre-devel libssh2-devel OpenIPMI-devel unixODBC-devel openldap-devel 27 | yum install -y MariaDB-client MariaDB-devel MariaDB-shared 28 | ~~~~ 29 | 30 | ### 2. Скачать и распаковать свежую версию исходного кода и применить патч ZBXNEXT-5554: 31 | 32 | ~~~~ 33 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 34 | tar -zxf zabbix-4.4.8.tar.gz 35 | cd zabbix-4.4.8 36 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 37 | patch -p0 < ZBXNEXT-5554.patch 38 | ~~~~ 39 | 40 | ### 3. Сборка всех компонентов Zabbix с поддержкой (MariaDB) MySQL: 41 | 42 | ~~~~ 43 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 44 | make 45 | ~~~~ 46 | 47 | ### 4. После успешной сборки на шаге 3 можно использовать бинарный файл zabbix_server, скопируем его в текущий каталог: 48 | 49 | ~~~~ 50 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 51 | ~~~~ 52 | 53 | Проверим наличие бинарных файлов: 54 | 55 | ~~~~ 56 | # ls -l | grep 'zabbix_' 57 | -rwxr-xr-x 1 root root 9768704 Jan 14 08:46 zabbix_server_mysql_v444 58 | ~~~~ 59 | 60 | Теперь Вы можете остановить свои zabbix-server и заменить его данной сборкой. 61 | 62 | Так же Вам нужно заменить 1 файл в web-frontend: 63 | ~~~~ 64 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 65 | ~~~~ 66 | 67 | # Red Hat Enterprise Linux 8 68 | ## Сборка на Red Hat Enterprise Linux 8 с поддержкой MySQL (MariaDB) 69 | 70 | ### 1. Для подготовки к сборки на Red Hat Enterprise Linux 8 нужно установить дополнительные пакеты: 71 | 72 | ~~~~ 73 | dnf group install "Development Tools" 74 | dnf install -y wget unzip gettext java-1.8.0-openjdk java-1.8.0-openjdk-devel libxml2-devel openssl-devel libcurl-devel net-snmp-devel libevent-devel sqlite-devel pcre-devel unixODBC-devel openldap-devel 75 | dnf install -y mariadb-devel 76 | subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms 77 | yum module enable -y virt-devel 78 | dnf install -y libssh2-devel OpenIPMI-devel 79 | ~~~~ 80 | 81 | ### 2. Скачать и распаковать свежую версию исходного кода: 82 | 83 | ~~~~ 84 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 85 | tar -zxf zabbix-4.4.8.tar.gz 86 | cd zabbix-4.4.8 87 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 88 | patch -p0 < ZBXNEXT-5554.patch 89 | ~~~~ 90 | 91 | ### 3. Сборка всех компонентов Zabbix с поддержкой (MariaDB) MySQL: 92 | 93 | ~~~~ 94 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 95 | make 96 | ~~~~ 97 | 98 | ### 4. После успешной сборки на шаге 3 можно использовать бинарные файлы zabbix, скопируем их в текущий каталог: 99 | 100 | ~~~~ 101 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 102 | ~~~~ 103 | 104 | Проверим наличие бинарных файлов: 105 | 106 | ~~~~ 107 | # ls -l | grep 'zabbix_' 108 | -rwxr-xr-x 1 root root 9768704 Jan 14 08:46 zabbix_server_mysql_v444 109 | ~~~~ 110 | 111 | Теперь Вы можете остановить свои zabbix-server и заменить его данной сборкой. 112 | 113 | Так же Вам нужно заменить 1 файл в web-frontend: 114 | ~~~~ 115 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 116 | ~~~~ 117 | 118 | # Ubuntu 119 | ## Сборка на Ubuntu 18.04 LTS (Bionic Beaver) с поддержкой MariaDB 120 | 121 | ### 1. Для подготовки к сборки на Ubuntu 18.04 нужно установить дополнительные пакеты: 122 | 123 | ~~~~ 124 | sudo apt-get update 125 | sudo apt-get install -y autoconf automake gcc make wget unzip gettext default-jdk libxml2-dev libssl-dev libcurl4-openssl-dev libsnmp-dev libevent-dev libsqlite3-dev libpcre2-dev libssh2-1-dev libmariadbclient-dev-compat libopenipmi-dev unixodbc-dev libldap2-dev 126 | ~~~~ 127 | 128 | ### 2. Скачать и распаковать свежую версию исходного кода: 129 | 130 | ~~~~ 131 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 132 | tar -zxf zabbix-4.4.8.tar.gz 133 | cd zabbix-4.4.8 134 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 135 | patch -p0 < ZBXNEXT-5554.patch 136 | ~~~~ 137 | 138 | ### 3. Сборка всех компонентов Zabbix с поддержкой (MariaDB) MySQL: 139 | 140 | ~~~~ 141 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-jabber --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 142 | make 143 | make gettext 144 | ~~~~ 145 | 146 | ### 4. После успешной сборки на шаге 3 можно использовать бинарные файлы zabbix, скопируем их в текущий каталог: 147 | 148 | ~~~~ 149 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 150 | ~~~~ 151 | 152 | Проверим наличие бинарных файлов: 153 | 154 | ~~~~ 155 | # ls -l | grep 'zabbix_' 156 | -rwxr-xr-x 1 root root 9768704 Jan 14 08:46 zabbix_server_mysql_v444 157 | ~~~~ 158 | 159 | Теперь Вы можете остановить свои zabbix-server и заменить его данной сборкой. 160 | 161 | Так же Вам нужно заменить 1 файл в web-frontend: 162 | ~~~~ 163 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 164 | ~~~~ 165 | -------------------------------------------------------------------------------- /HOW-TO-USE-HTTPPROXY.md: -------------------------------------------------------------------------------- 1 | # Sending notifications from Zabbix 4.4 to Telegram via Webhook using HTTP proxies 2 | 3 | Using HTTP proxies in Webhook will be possible only in Zabbix v5.0, but I backported the patch (ZBXNEXT-5554) for version 4.4 4 | 5 | If you are an experienced user, you can rebuild Zabbix from the source and apply this patch. 6 | 7 | Link to the patch [itself](https://github.com/CHERTS/zabbix_telegram_webhook/tree/master/patch) 8 | 9 | Below are instructions for rebuilding Zabbix v4.4 from source code for different OS. 10 | 11 | [Build on Oracle Linux 7 with MySQL (MariaDB) support](#oracle-linux-7) 12 | 13 | [Build on Red Hat Enterprise Linux 8 with MySQL (MariaDB) support](#red-hat-enterprise-linux-8) 14 | 15 | [Build on Ubuntu 18.04 LTS (Bionic Beaver) with MySQL (MariaDB) support](#ubuntu) 16 | 17 | # Oracle Linux 7 18 | ## Build on Oracle Linux 7 with MySQL (MariaDB) support 19 | 20 | ### 1. To prepare for build on Oracle Linux 7, you need to install additional packages: 21 | 22 | ~~~~ 23 | yum group install "Development Tools" 24 | yum-config-manager --enable ol7_optional_latest 25 | yum-config-manager --enable ol7_developer 26 | yum install -y wget unzip gettext java-1.8.0-openjdk libxml2-devel openssl-devel libcurl-devel net-snmp-devel libevent-devel sqlite-devel pcre-devel libssh2-devel OpenIPMI-devel unixODBC-devel openldap-devel 27 | yum install -y MariaDB-client MariaDB-devel MariaDB-shared 28 | ~~~~ 29 | 30 | ### 2. Download and unzip the latest version of the source code: 31 | 32 | ~~~~ 33 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 34 | tar -zxf zabbix-4.4.8.tar.gz 35 | cd zabbix-4.4.8 36 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 37 | patch -p0 < ZBXNEXT-5554.patch 38 | ~~~~ 39 | 40 | ### 3. Build all Zabbix components with MySQL (MariaDB) support: 41 | 42 | ~~~~ 43 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-jabber --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 44 | make 45 | ~~~~ 46 | 47 | ### 4. After successful build, in step 3 you can use zabbix binaries, copy them to the current directory: 48 | 49 | ~~~~ 50 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 51 | ~~~~ 52 | 53 | Check for the presence of binary files: 54 | 55 | ~~~~ 56 | # ls -l | grep 'zabbix_' 57 | -rwxr-xr-x 1 root root 6405704 Oct 9 21:28 zabbix_server_mysql_v444 58 | ~~~~ 59 | 60 | Congratulations! Now you can stop your zabbix-server and replace it with this assembly. 61 | 62 | You also need to replace 1 file in the web-frontend: 63 | ~~~~ 64 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 65 | ~~~~ 66 | 67 | # Red Hat Enterprise Linux 8 68 | ## Build on Red Hat Enterprise Linux 8 with MySQL (MariaDB) support 69 | 70 | ### 1. To prepare for build on Red Hat Enterprise Linux 8, you need to install additional packages: 71 | 72 | ~~~~ 73 | dnf group install "Development Tools" 74 | dnf install -y wget unzip gettext java-1.8.0-openjdk java-1.8.0-openjdk-devel libxml2-devel openssl-devel libcurl-devel net-snmp-devel libevent-devel sqlite-devel pcre-devel unixODBC-devel openldap-devel 75 | dnf install -y mariadb-devel 76 | subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms 77 | yum module enable -y virt-devel 78 | dnf install -y libssh2-devel OpenIPMI-devel 79 | ~~~~ 80 | 81 | ### 2. Download and unzip the latest version of the source code: 82 | 83 | ~~~~ 84 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 85 | tar -zxf zabbix-4.4.8.tar.gz 86 | cd zabbix-4.4.8 87 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 88 | patch -p0 < ZBXNEXT-5554.patch 89 | ~~~~ 90 | 91 | ### 3. Build all Zabbix components with MySQL (MariaDB) support: 92 | 93 | ~~~~ 94 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 95 | make 96 | ~~~~ 97 | 98 | ### 4. After successful build, in step 3 you can use zabbix binaries, copy them to the current directory: 99 | 100 | ~~~~ 101 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 102 | ~~~~ 103 | 104 | Check for the presence of binary files: 105 | 106 | ~~~~ 107 | # ls -l | grep 'zabbix_' 108 | -rwxr-xr-x. 1 root root 7140712 Oct 14 23:37 zabbix_server_mysql_v444 109 | ~~~~ 110 | 111 | Congratulations! Now you can stop your zabbix-server and replace it with this assembly. 112 | 113 | You also need to replace 1 file in the web-frontend: 114 | ~~~~ 115 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 116 | ~~~~ 117 | 118 | # Ubuntu 119 | ## Build on Ubuntu 18.04 LTS (Bionic Beaver) with MySQL (MariaDB) support 120 | 121 | ### 1. To prepare for build on Ubuntu 18.04, you need to install additional packages: 122 | 123 | ~~~~ 124 | sudo apt-get update 125 | sudo apt-get install -y autoconf automake gcc make wget unzip gettext default-jdk libxml2-dev libssl-dev libcurl4-openssl-dev libsnmp-dev libevent-dev libsqlite3-dev libpcre2-dev libssh2-1-dev libmariadbclient-dev-compat libopenipmi-dev unixodbc-dev libldap2-dev 126 | ~~~~ 127 | 128 | ### 2. Download and unzip the latest version of the source code: 129 | 130 | ~~~~ 131 | wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz 132 | tar -zxf zabbix-4.4.8.tar.gz 133 | cd zabbix-4.4.8 134 | wget https://raw.githubusercontent.com/CHERTS/zabbix_telegram_webhook/master/patch/ZBXNEXT-5554.patch 135 | patch -p0 < ZBXNEXT-5554.patch 136 | ~~~~ 137 | 138 | ### 3. Build all Zabbix components with MySQL (MariaDB) support: 139 | 140 | ~~~~ 141 | ./configure --with-libpthread --with-libpcre --with-libcurl --with-libxml2 --with-net-snmp --with-openssl --enable-ipv6 --with-ssh2 --with-jabber --with-openipmi --with-unixodbc --with-ldap --enable-server --sysconfdir=/etc/zabbix --with-mysql 142 | make 143 | ~~~~ 144 | 145 | ### 4. After successful build, in step 3 you can use zabbix binaries, copy them to the current directory: 146 | 147 | ~~~~ 148 | cp src/zabbix_server/zabbix_server zabbix_server_mysql_v444 149 | ~~~~ 150 | 151 | Check for the presence of binary files: 152 | 153 | ~~~~ 154 | # ls -l | grep 'zabbix_' 155 | -rwxr-xr-x 1 root root 6405704 Oct 9 21:28 zabbix_server_mysql_v444 156 | ~~~~ 157 | 158 | Congratulations! Now you can stop your zabbix-server and replace it with this assembly. 159 | 160 | You also need to replace 1 file in the web-frontend: 161 | ~~~~ 162 | # cp frontends/php/app/controllers/CControllerMediatypeEdit.php /your-web-frontend-root-directory/app/controllers 163 | ~~~~ 164 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sending notifications from Zabbix 4.4/5.0 to Telegram via Webhook 2 | 3 | [По-русски / In Russian](README.ru.md) 4 | 5 | [My blog article with a detailed description of the settings](https://translate.google.com/translate?sl=ru&tl=en&u=https%3A%2F%2Fblog.programs74.ru%2Fhow-to-send-message-from-zabbix-to-telegram-via-webhook%2F) 6 | 7 | [Using HTTP proxies for Webhook](HOW-TO-USE-HTTPPROXY.md) -------------------------------------------------------------------------------- /README.ru.md: -------------------------------------------------------------------------------- 1 | # Отправка уведомлений из Zabbix 4.4/5.0 в Telegram через Webhook 2 | 3 | [In English / По-английски](README.md) 4 | 5 | [Статья в моем блоге с детальным описанием настройки](https://blog.programs74.ru/how-to-send-message-from-zabbix-to-telegram-via-webhook/) 6 | 7 | [Использование HTTP прокси для Webhook](HOW-TO-USE-HTTPPROXY-RU.md) 8 | -------------------------------------------------------------------------------- /patch/ZBXNEXT-5554.patch: -------------------------------------------------------------------------------- 1 | [ZBXNEXT-5554] added webhook through proxy 2 | --- src/libs/zbxembed/httprequest.c.orig 2020-01-13 20:39:28.047863616 +0300 3 | +++ src/libs/zbxembed/httprequest.c 2020-01-13 20:40:28.373326654 +0300 4 | @@ -299,6 +299,26 @@ 5 | 6 | /****************************************************************************** 7 | * * 8 | + * Function: es_httprequest_set_proxy * 9 | + * * 10 | + * Purpose: CurlHttpRequest.SetProxy method * 11 | + * * 12 | + ******************************************************************************/ 13 | +static duk_ret_t es_httprequest_set_proxy(duk_context *ctx) 14 | +{ 15 | + zbx_es_httprequest_t *request; 16 | + CURLcode err; 17 | + 18 | + if (NULL == (request = es_httprequest(ctx))) 19 | + return duk_error(ctx, DUK_RET_TYPE_ERROR, "internal scripting error: null object"); 20 | + 21 | + ZBX_CURL_SETOPT(ctx, request->handle, CURLOPT_PROXY, duk_to_string(ctx, 0), err); 22 | + 23 | + return 1; 24 | +} 25 | + 26 | +/****************************************************************************** 27 | + * * 28 | * Function: es_httprequest_status * 29 | * * 30 | * Purpose: CurlHttpRequest.Status method * 31 | @@ -329,6 +349,7 @@ 32 | {"Post", es_httprequest_post, 2}, 33 | {"Delete", es_httprequest_delete, 2}, 34 | {"Status", es_httprequest_status, 0}, 35 | + {"SetProxy", es_httprequest_set_proxy, 1}, 36 | {NULL, NULL, 0} 37 | }; 38 | 39 | --- frontends/php/app/controllers/CControllerMediatypeEdit.php.orig 2020-01-13 20:38:39.133299030 +0300 40 | +++ frontends/php/app/controllers/CControllerMediatypeEdit.php 2020-01-13 20:39:18.036952727 +0300 41 | @@ -141,6 +141,7 @@ 42 | 'event_menu_name' => $db_defaults['event_menu_name'], 43 | 'parameters' => [ 44 | ['name' => 'URL', 'value'=> ''], 45 | + ['name' => 'HTTPProxy', 'value'=> ''], 46 | ['name' => 'To', 'value' => '{ALERT.SENDTO}'], 47 | ['name' => 'Subject', 'value' => '{ALERT.SUBJECT}'], 48 | ['name' => 'Message', 'value' => '{ALERT.MESSAGE}'] 49 | -------------------------------------------------------------------------------- /zbx_export_mediatypes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.4 4 | 2020-03-26T06:25:17Z 5 | 6 | 7 | Telegram via Webhook 8 | WEBHOOK 9 | 10 | 11 | chat_id 12 | {ALERT.SENDTO} 13 | 14 | 15 | disable_notification 16 | false 17 | 18 | 19 | disable_web_page_preview 20 | true 21 | 22 | 23 | HTTPProxy 24 | 25 | 26 | 27 | message 28 | {ALERT.MESSAGE} 29 | 30 | 31 | parse_mode 32 | HTML 33 | 34 | 35 | subj 36 | {ALERT.SUBJECT} 37 | 38 | 39 | token 40 | XXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 41 | 42 | 43 | 116 | 5s 117 | YES 118 | YES 119 | {EVENT.TAGS.tg_message_url} 120 | View alert in Telegram 121 | Blog: https://blog.programs74.ru/ 122 | Email: sleuthhound[at]programs74.ru 123 | Telegram: @CHERTS 124 | Version: 1.5 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /zbx_export_mediatypes_v5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5.0 4 | 2020-10-15T04:51:07Z 5 | 6 | 7 | Telegram via Webhook 8 | WEBHOOK 9 | 10 | 11 | chat_id 12 | {ALERT.SENDTO} 13 | 14 | 15 | disable_notification 16 | false 17 | 18 | 19 | disable_web_page_preview 20 | true 21 | 22 | 23 | HTTPProxy 24 | 25 | 26 | 27 | message 28 | {ALERT.MESSAGE} 29 | 30 | 31 | parse_mode 32 | HTML 33 | 34 | 35 | subj 36 | {ALERT.SUBJECT} 37 | 38 | 39 | token 40 | XXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 41 | 42 | 43 | 116 | 5s 117 | YES 118 | YES 119 | {EVENT.TAGS.tg_message_url} 120 | View alert in Telegram 121 | Blog: https://blog.programs74.ru/ 122 | Email: sleuthhound[at]programs74.ru 123 | Telegram: @CHERTS 124 | Version: 1.5 125 | 126 | 127 | 128 | --------------------------------------------------------------------------------