Setting Up NGINX and NGINX Plus as a Web Server and Reverse Proxy in AWS

Setting Up NGINX and NGINX Plus as a Web Server and Reverse Proxy in AWS Хостинг
Содержание
  1. Binary Releases¶
  2. Prebuilt Packages for Linux and BSD¶
  3. Official Red Hat/CentOS packages¶
  4. Official Debian/Ubuntu packages¶
  5. Ubuntu PPA¶
  6. Official Win32 Binaries¶
  7. Source Releases¶
  8. Stable¶
  9. Mainline¶
  10. Building NGINX From Source¶
  11. After Installing¶
  12. Accessing a Terminal
  13. Accessing a Terminal on MacOS
  14. Accessing a Terminal on Windows
  15. Installing NGINX Software
  16. Installing NGINX Open Source
  17. Installing NGINX Plus
  18. Opening Your Web Page
  19. Setting Up Sample Files
  20. Serving Pages and Images
  21. Setting Up a Proxy Server
  22. Conclusion
  23. Pre-canned Configurations¶
  24. Шаг 1. Подготовка к установке
  25. Шаг 2. Загрузка необходимых компонентов
  26. Шаг 3. Установка компонентов
  27. Шаг 4. Создание скриптов запуска и остановки
  28. Шаг 6. Настройка php и безопасность
  29. Шаг 7. Обработка нескольких PHP-файлов одновременно
  30. Шаг 8. Тестирование и заключение
  31. Шаг 9. Готовые примеры файлов конфигурации
  32. Введение
  33. Установка сервера
  34. Настройка сервера
  35. Автоматический запуск сервера
  36. Настройка клиентов
  37. Контроль доступа
  38. Prerequisites:
  39. Nginx installation on Windows Server
  40. Test the installation
  41. Useful information
  42. Next steps
  43. Nginx
  44. Настройка
  45. Виртуальный хост
  46. PHP
  47. MariaDB
  48. Запуск, остановка и перезапуск сервера
  49. bat-файлы для управления сервером
  50. Источник:
  51. Zabbix
  52. Prometheus
  53. Observium
  54. LibreNMS
  55. Netdata
  56. Newrelic
  57. Veliam
  58. Nagios
  59. Icinga
  60. Monika
  61. The Dude

Binary Releases¶

Prebuilt Packages for Linux and BSD

Most Linux distributions and BSD variants have NGINX in the usual package repositories and they can be installed via whatever method is normally used to install software ( on Debian, on Gentoo, on FreeBSD, etc).

Be aware that these packages are often somewhat out-of-date.
If you want the latest features and bugfixes, it’s recommended to build from source or use packages directly from nginx.org.

Official Red Hat/CentOS packages¶

To add NGINX yum repository, create a file named and paste one of the configurations below:

 
 

Due to differences between how CentOS, RHEL, and Scientific Linux populate the variable, it is necessary to manually replace with either (for 5.x) or (for 6.x), depending upon your OS version.

Official Debian/Ubuntu packages¶

The available NGINX Ubuntu release support is listed at this distribution page. For a mapping of Ubuntu versions to release names, please visit the Official Ubuntu Releases page.

Append the appropriate stanza to . If there is concern about persistence of repository additions (i.e. DigitalOcean Droplets), the appropriate stanza may instead be added to a different list file under , such as .

## Replace $release with your corresponding Ubuntu release.deb https://nginx.org/packages/ubuntu/ nginx
deb-src https://nginx.org/packages/ubuntu/ nginx

e.g. Ubuntu 20.04 (Focal Fossa):

deb https://nginx.org/packages/ubuntu/ focal nginx
deb-src https://nginx.org/packages/ubuntu/ focal nginx

To install the packages, execute in your shell:

sudo apt update
sudo apt install nginx
## Replace $key with the corresponding $key from your GPG error.sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
sudo apt update
sudo apt install nginx

You have now nginx installed on your server but not ready to serve web pages. you have to start the nginx.
You can do this by using this command:

sudo systemctl start nginx

Append the appropriate stanza to .

deb https://nginx.org/packages/debian/ squeeze nginx
deb-src https://nginx.org/packages/debian/ squeeze nginx

Ubuntu PPA

This PPA is maintained by volunteers and is not distributed by nginx.org. It has some additional compiled-in modules and may be more fitting for your environment.

For Ubuntu 20.04 and newer:

sudo -s
stable # use nginx=development for latest development versionadd-apt-repository ppa:nginx/
apt update
apt install nginx

If you get an error about add-apt-repository not existing, you will want to install .
For other Debian/Ubuntu based distributions, you can try the lucid variant of the PPA which is the most likely to work on older package sets:

sudo -s
stable # use nginx=development for latest development version /ubuntu lucid main" > /etc/apt/sources.list.d/nginx--lucid.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
apt update
apt install nginx

Official Win32 Binaries¶

As of NGINX 0.8.50, NGINX is now available as an official Windows binary.

 c:
unzip nginx-1.2.3.zip
ren nginx-1.2.3 nginx nginx
start nginx
nginx -s stop quit reopen reload 

For problems look in c:nginxlogserror.log or in EventLog.

In addition, Kevin Worthington maintains earlier Windows builds of the development branch.

Source Releases¶

There are currently two versions of NGINX available: , .
The mainline branch gets new features and bugfixes sooner but might introduce new bugs as well.
Critical bugfixes are backported to the stable branch.

In general, the stable release is recommended, but the mainline release is typically quite stable as well.
See the .

Stable

Mainline

Source code repository is at hg.nginx.org/nginx.

Older versions can be found here.

Building NGINX From Source

After extracting the source, run these commands from a terminal:

./configure
make
sudo make install

By default, NGINX will be installed in . You may change this and other options with the Installation and Compile-Time Options.

You might also want to peruse the 3rd party modules, since these must be built at compile-time.

After Installing¶

There are many different example configurations that can be found in Getting Started section. Also the Pitfalls and Common Mistakes page will help keep you from making mistakes that so many users before you did.

This blog post guides you in getting NGINX up and running on Ubuntu 20.04 on Amazon Web Services (AWS) in an setup that doesn’t affect the settings on your personal computer. It covers both NGINX and NGINX Plus, the commercially supported version with additional enterprise‑grade features.

The tutorial includes instructions for these tasks:

Accessing a Terminal

Accessing a Terminal on MacOS

On Macs, you can use the built‑in terminal tool to do everything in this tutorial.

  1. Click the magnifying glass icon at the right end of the top bar on the screen.

  2. Type terminal in the pop‑up box and press Enter. A separate terminal window opens.

Accessing a Terminal on Windows

Windows doesn’t come with a built‑in terminal, so you need to download one from the Internet. Along with AWS, we recommend PuTTY, an ssh client used throughout the world.

In this tutorial we assume that you have an Amazon Virtual Private Cloud (VPC) and can simply use the default VPC configuration that is created with most accounts. In this section, you set up your AWS deployment by creating an EC2 instance and connecting to it.

Installing NGINX Software

Now that your AWS environment is set up, it’s time to install either NGINX Open Source or NGINX Plus, which you can try free for 30 days. Both options work in the context of this tutorial, but if you want to further explore the advanced features in NGINX Plus, please request a free trial.

Installing NGINX Open Source

Most Linux distributions and BSD variants make NGINX Open Source available in their standard package repositories, but it’s usually not the latest version. We recommend downloading NGINX Open Source directly from nginx.org. There are just a few extra steps for adding the NGINX repository to the Ubuntu package manager (apt).

  1. Access your terminal.

  2. Download the NGINX signing key:

    $ sudo wget http://nginx.org/keys/nginx_signing.key
  3. Add the key:

    $ sudo apt-key add nginx_signing.key
  4. Change directory to /etc/apt.

    $ cd /etc/apt
  5. Edit the sources.list file, appending this text at the end:

    deb http://nginx.org/packages/ubuntu focal nginx
    deb-src http://nginx.org/packages/ubuntu focal nginx

    Note: The focal keyword in each of these lines corresponds to Ubuntu 20.04. If you are using a different version of Ubuntu, substitute the first word of its release code name (for example, bionic for Ubuntu 18.04).

  6. Update the NGINX software:

    $ sudo apt-get update
  7. $ sudo apt-get install nginx
  8. Type Y when prompted.

  9. $ sudo systemctl start nginx.service
  10. Check its status:

    $ sudo systemctl status nginx.service
  11. Continue to Opening Your Web Page.

Installing NGINX Plus

  1. If you don’t already have NGINX Plus, sign up for a 30‑day free trial.

  2. When installation is complete and NGINX Plus is running, continue to Opening Your Web Page.

Opening Your Web Page

  1. Navigate to the Instances tab on the EC2 Dashboard if you are not there already. (One way is to click in the top Console navigation bar, in the section, and Instances in the left‑hand navigation column.)

  2. Scroll right in the table until you can see the instance’s public IP address in the Public IPv4 address column (in the screenshot, it’s 3.22.51.xxx). Select the address and copy it into the paste buffer.

    Screenshot of Amazon EC2 'Instances' page showing 'Public IPv4 address' field for an instance

  3. Open a new browser tab and paste the address into the address bar. The default Welcome to nginx! page appears, indicating that NGINX is installed and running but not yet configured.

    The welcome page confirms that your NGINX reverse proxy and web server is up and running

Setting Up Sample Files

With a working version of NGINX or NGINX Plus installed, it’s time to put it to good use! Begin by setting up some files and directories.

  1. Create a directory called public_html and change into it.

  2. In the public_html directory, create a file called index.html and a directory called application1.

  3. In the application1 directory, create a file called app1.html with some text in it.

  4. Change back to your home directory.

  5. Create a directory called data.

  6. In the data directory, create a directory called images.

Serving Pages and Images

  1. Change directory to /etc/nginx/conf.d.

  2. Rename default.conf to default.conf.bak to prevent NGINX or NGINX Plus from using it as the default configuration file.

  3. Create a file called server1.conf with this configuration in it:

    server { root /home/ubuntu/public_html; location /application1 { } location /images { root /home/ubuntu/data; }
    }

    Directive documentation: location, root, server

  4. Change directory to ~/data/images.

  5. $ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  6. Reload NGINX or NGINX Plus:

    $ sudo nginx -s reload
  7. In a web browser request the image at this URL, where is the public IP address of your EC2 instance:

  8. Also access the application and observe what you get:

Setting Up a Proxy Server

  1. In the ~/data directory, create a directory called server2.

  2. In the server2 directory, create a directory called sampleApp.

  3. In the sampleApp directory, create a file named index.html with some text in it.

  4. Change directory to /etc/nginx/conf.d.

  5. Create a file called server2.conf with this configuration in it:

    server { listen 8080; root /home/ubuntu/data/server2;
    }

    Directive documentation: listen, root, server

  6. server { root /home/ubuntu/public_html; location /application1 { proxy_pass http://localhost:8080/sampleApp; } location /images { root /home/ubuntu/data; }
    }

    Directive documentation: location, proxy_pass, root, server

  7. Reload NGINX or NGINX Plus:

    $ sudo nginx -s reload

So that’s it! You now have a working Ubuntu instance running NGINX, which is ready to run as a proxy server.

For instructions on deploying NGINX and NGINX Plus on AWS for additional use cases, see our deployment guides.

Читайте также:  Предлагаю - CW-SERV.RU | Сообщество администраторов игровых серверов

Conclusion


Hero image

Free O’Reilly eBook: The Complete NGINX Cookbook

Updated for 2022 – Your Guide to Everything NGINX

Additionally there are examples and tutorials below to help you get up to speed with configuring NGINX the way you want it.

Pre-canned Configurations¶

As you learned in the tutorials, most NGINX configuration files are very
similar. You can apply the same logic to most web applications and achieve the
desired result. There are some applications that have weird little quirks that
tend to throw a wrench in things.

If the web applications with the configuration don’t work, please check
whether the simplest web application works. For example, if PHP based web
applications such as mediawiki don’t work, please check if PHP FastCGI
(refer to PHP FastCGI Example) works.

Из данного HOWTO Вы узнаете как установить и настроить связку nginx + php (в режиме FastCGI) + СУБД MySQL для работы под операционной Microsoft Windows.

Мы подробно рассмотрим вопросы установки, базовой и расширенной настройки, а также безопасности.

В статье приводятся примеры скриптов запуска и остановки, а также примеры файлов конфигурации nginx и php.

Подробности смотрите под катом.

Шаг 1. Подготовка к установке

Для начала рекомендуем в корне системного диска создать каталог nginx (например, c:\nginx\), а в нём подкаталоги public_html, php и mysql. Лучше всего связка работает, когда все основные компоненты находятся в одном каталоге. В каталог php мы будем устанавливать интерпретатор PHP5, в mysql соответственно данную СУБД, а в public_html — файлы главного сайта.

Разместив все компоненты таким образом, Вы сделаете пакет перемещаемым (Portable) и готовым к работе с любого компьютера.

Шаг 2. Загрузка необходимых компонентов

Нам потребуются следующие компоненты:

  1. PHPhttp://windows.php.net/download/. Вам необходимо скачать версию с инсталлятором (*.msi) в варианте Thread Safe;
  2. MySQLhttp://dev.mysql.com/downloads/mysql/. Также скачайте версию с msi-инсталлятором;
  3. nginxhttp://nginx.org/ru/download.html. Скачайте последнюю версию;
  4. RunHiddenConsolehttp://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip.

Шаг 3. Установка компонентов

По окончании скачивания приступайте к установке компонентов согласно данному алгоритму:

  1. распакуйте архив с nginx в созданный на шаге 1 каталог в корне (например, c:\nginx\). Далее в данном HOWTO будет использоваться именно этот каталог, поэтому если Вы изменили путь, сделайте соответствующие правки;
  2. установите PHP в каталог c:\nginx\php\:
    1. на этапе выбора типа установки (Web Server Setup) обязательно выберите вариант «Other CGI«, иначе модули, необходимые для работы PHP в режиме FastCGI не будут установлены;
      PHP - Web Server Setup
      PHP — Web Server Setup
    2. на этапе выбора необходимых модулей (Choose Items to Install) обязательно выберите MySQL, MySQLi и OpenSSL (если хотите далее настроить SSL). Также рекомендуется выбрать модули, необходимые для большинства CMS: bzip2, Curl, Exif, GD2, Gettext, XML. Если Вы забыли что-то нужное и оно Вам потребуется, Вы всегда сможете доустановить/удалить эти компоненты, снова запустив программу установки PHP и выбрав пункт Change.
      PHP - выбор компонентов
      PHP — выбор компонентов
  3. установите СУБД MySQL в каталог c:\nginx\mysql\. Здесь нет ничего сложного. В мастере конфигурации выберите стандартную конфигурацию и обязательно задайте пароль администратора (пароль встроенной учётной записи суперпользователя root);
  4. распакуйте архив RunHiddenConsole.zip в каталог c:\nginx\.

Шаг 4. Создание скриптов запуска и остановки

Для быстрого запуска набора Вам потребуется создать в каталоге c:\nginx\ 3 файла: start.cmd, shutdown.cmd и restart.cmd, предназначенные соответственно для запуска, остановки и перезапуска серверов.

Листинг файла start.cmd (запуск сервера):

@echo off
echo Starting servers...
set PHP_FCGI_MAX_REQUESTS=0
set SRVPATH=C:\nginx
net start MySQL
start /D%SRVPATH% nginx.exe
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini

Листинг файла shutdown.cmd (остановка сервера):

@echo off
echo Shutting down servers...
taskkill /IM nginx.exe /F
taskkill /IM php-cgi.exe /F
net stop MySQL

Листинг файла restart.cmd (перезапуск сервера):

@echo off
echo Shutting down servers...
taskkill /IM nginx.exe /F
taskkill /IM php-cgi.exe /F
net stop MySQL
echo Starting servers...
set PHP_FCGI_MAX_REQUESTS=0
set SRVPATH=C:\nginx
net start MySQL
start /D%SRVPATH% nginx.exe
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini

Если Вы изменили путь со стандартного C:\nginx\, на что-то другое, внесите соответствующие правки в скрипты.

Если требуется запускать сервер nginx+php+mysql при загрузке системы, то добавьте задание на автозапуск скрипта start.cmd с помощью оснастки Назначенные задания Windows.

Откройте файл c:\nginx\conf\nginx.conf в любом текстовом редакторе (я рекомендую Notepad++).

1. Измените строку:

worker_processes  1;

Здесь вместо 1 укажите количество рабочих процессов nginx. Рекомендуется указывать число, равное количеству ядер процессора.

2. Уберите символ комментария (решётку) у строки:

error_log  logs/error.log;

Это позволит включить запись логов ошибок в файл error.log, который Вы всегда найдёте в каталоге c:\nginx\logs\.

server { listen 80 default; server_name localhost; server_tokens off; #charset koi8-r; #access_log logs/access.log  main; location / { root c:/nginx/public_html; index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
}

Если Вы хотите использовать SSL, Вам потребуется совсем иной конфиг:

server { listen 443 default; server_name localhost; server_tokens off; ssl on; ssl_certificate C:/nginx/private/ssl_cert_domain.pem; ssl_certificate_key C:/nginx/private/ssl_cert_domain.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/access.log  main; location / { root c:/nginx/public_html; index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTPS on; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ /\.ht { deny all; }
}

Здесь C:/nginx/private/ssl_cert_domain.pem — файл сертификата SSL, а C:/nginx/private/ssl_cert_domain.key — закрытый ключ для него. Внимание! При старте сервера у Вас запросят пароль для расшифровки закрытого ключа, поэтому чтобы не вводить его постоянно, во время создания (получения) сертификата оставьте поле ввода пароля пустым (это конечно небезопасно, но экономит время во время запуска сервера). В новых версиях возможно появится функция указания пароля в конфиге (как у Apache).

Вы можете включить ведение логов доступа (access.log), убрав символ комментария у строки #access_log  logs/access.log  main;.

Вы также можете переопределить страницы ошибок 404, 500, 502, 503, 504 и 403 путём указания в директиве error_page кода ошибки и имени файла, который будет отображаться при её возникновении.

Шаг 6. Настройка php и безопасность

Откройте текстовый файл C:\nginx\php\php.ini в любом текстовом редакторе. Из соображений безопасности рекомендуем изменить строку

safe_mode = Off
safe_mode = On

Также найдите в файле строку

disable_functions =

и замените её на следующую:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Эти действия включат безопасный режим для PHP (Safe Mode), при котором запрещены большинство небезопасных функций и исполнение файлов, а также отключит ряд потенциально уязвимых функций. Внимание! Если Ваша CMS не работает при включённом режиме PHP Safe Mode, отключите его, либо поставьте правильную CMS ;-).

Если Вы являетесь разработчиком и хотите видеть ошибки и сообщения PHP, то найдите строку

display_errors = Off

и замените её на

display_errors = On

Для исправления опасной уязвимости в PHP, позволяющей выполнять PHP-код из загружаемых файлов, найдите в php.ini строку

;cgi.fix_pathinfo=1

уберите символ комментария (;) около неё и замените на следующую:

cgi.fix_pathinfo = 0

Дальнейшие настройки файла изменять не требуется — всё уже настроено оптимально для большинства применений программой установки PHP.

Шаг 7. Обработка нескольких PHP-файлов одновременно

К сожалению, PHP в Windows не умеет создавать копии своих экземпляров, поэтому придётся заранее запускать несколько копий и описать их использование в конфиге nginx.

В файле start.cmd пропишите запуск php-cgi.exe на разные номера портов:

%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9001 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9002 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9003 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9004 -c %SRVPATH%/php/php.ini

Запустите столько процессов, сколько вам потребуется (обычно достаточно 5-20). В нашем примере используется 5 экземпляров с номерами портов 9000 — 9004.

upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}

Теперь откройте файл fastcgi_params и в самом начале пропишите следующее:

fastcgi_connect_timeout 1;
fastcgi_next_upstream timeout;
fastcgi_pass backend;

Обязательно уберите fastcgi_pass 127.0.0.1:9000; во всех директивах location.

Пример готового конфига nginx.conf:

worker_processes 4;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}
server {
listen 80 default;
server_name localhost;
server_tokens off;
location / {
root C:/nginx/public_html;
index index.html index.htm index.php;
location ~ \.php$ {
include fastcgi_params;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ /\.ht {
deny all;
}
}
}

Пример конфига, использующего SSL:

worker_processes 4;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}
server {
listen 443 default;
server_name localhost;
server_tokens off;
ssl on;
ssl_certificate C:/nginx/private/ssl_cert_domain.pem;
ssl_certificate_key C:/nginx/private/ssl_cert_domain.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root C:/nginx/public_html;
index index.html index.htm index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param HTTPS on;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ /\.ht {
deny all;
}
}
}

Пример файла fastcgi_params:

fastcgi_connect_timeout 1;
fastcgi_next_upstream timeout;
fastcgi_pass backend;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
fastcgi_index  index.php;

Шаг 8. Тестирование и заключение

Запустите серверы и создайте в каталоге C:\nginx\public_html\ файл test.php со следующим содержанием:

<?php
phpinfo();
?>

Откройте этот файл в браузере по адресу http://localhost/test.php и если Вы увидели информацию об установленном сервере, значит всё работает корректно и Вы можете приступать к использованию сервера.

Шаг 9. Готовые примеры файлов конфигурации

По многочисленным просьбам мы решили выложить примеры всех файлов конфигурации nginx в Git-репозитории. В данный момент доступно три разных готовых конфига:

  • nginx_simple.conf — простейший конфиг для запуска одного сайта без поддержки SSL;
  • nginx_ssl.conf — конфиг для запуска одного сайта с поддержкой SSL;
  • nginx_vhosts.conf — специально настроенный конфиг с относительными путями, поддержкой SSL, виртуальных хостов (позволяет держать несколько сайтов на одном сервере) и отдельных логов.

Там же вы найдете готовые скрипты запуска и остановки сервера, а также файл конфигурации PHP.

В данном HOWTO мы рассмотрим как на примере nginx установить и настроить простой и быстрый прокси сервер для Windows.

Введение

Если вы хотите установить прокси-сервер, но не хотите изучать сотни страниц документации squid, а затем заниматься отладкой его конфигурации, то можете поднять простой прокси-сервер на nginx.

Установка сервера

Nginx не требует установки. Просто распакуйте загруженный дистрибутивный Zip архив в любой каталог (желательно без пробелов и русских букв в пути), например, в C:/nginx/.

Для быстрого запуска и остановки сервера рекомендуется создать пакетные файлы start.cmd и stop.cmd в каталоге установки (рядом с файлом nginx.exe).

Пример файла start.cmd:

@echo off
start /D%cd% nginx.exe

Пример файла stop.cmd:

@echo off
start /D%cd% nginx.exe -s quit

На этом установка завершена. Перейдём к настройке.

Читайте также:  Оптимизация доступа к Gitlab: трюки с консолью для авторизации

Настройка сервера

Настройку nginx для Windows я уже описывал в одном из предыдущих HOWTO, поэтому здесь мы сразу рассмотрим настройку nginx как proxy-сервера.

Перейдите в каталог C:/nginx/conf/ (здесь C:/nginx/ — каталог установки сервера) и откройте файл nginx.conf в любом текстовом редакторе (рекомендуется Notepad++).

Замените содержимое файла на такое (ссылка на GitHub):

worker_processes 1;
error_log logs/error.log;
events { worker_connections 1024;
}
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; server { listen 8080 default; access_log logs/proxy.log; server_tokens off; location / { resolver 8.8.8.8; proxy_pass http://$host; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
}

Nginx будет прослушивать все интерфейсы на порту 8080 (стандартный для прокси-серверов). Если нужен другой — внесите правку в директиву listen.

Для резолвинга хостов будет использоваться DNS сервер Google — 8.8.8.8 (директива resolver). Вы можете заменить его на IP адрес DNS сервера вашего Интернет-провайдера. Это незначительно ускорит работу.

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Автоматический запуск сервера

Если необходимо настроить автоматический запуск сервера, добавьте в планировщик Windows задания на запуск созданного пакетного файла start.cmd от нужного пользователя при загрузке системы.

Убедитесь в наличии прав на чтение и запись в каталог C:/nginx/logs/, иначе сервер не сможет запуститься.

Вы также можете с помощью утилит третьих сторон настроить запуск nginx как службы Windows.

Настройка клиентов

Зайдите в настройки своего Интернет-браузера и укажите IP-адрес и порт, на котором работает настроенный сервер. Включите использование прокси только для протокола HTTP.

Контроль доступа

Если вы хотите ограничить доступ к своему прокси-серверу, то можете использовать директивы allow и deny, например:

allow 1.2.3.4;
deny all;

В данном примере к вашему серверу сможет получить доступ только клиент с IP адресом 1.2.3.4, а все остальные получат ошибку 403 — Доступ запрещён.

Authored by:  John Garcia


Prerequisites:

You need a server running a version of the Windows® Server® operating system.

Nginx installation on Windows Server

Nginx comes pre-compiled direct from their website, which makes installation as simple as downloading and extracting a file.

  1. Download the latest mainline release from https://nginx.org/en/download.html.

  2. Extract the file to the location where you want to install Nginx, such as C:\nginx.

    Note: We recommend creating a new directory for Nginx.

Test the installation

 C:\nginx\nginx.exe

Note: Replace *C:\nginx* with the directory location where you installed Nginix.

You should be able to navigate to https://localhost/ in the server’s web browser and see the Nginx default web page.
If you see “Welcome to Nginx,” everything is working as intended.

Useful information

The Nginx project considers the Windows release to be in beta. Functionally, this release is similar to Unix releases, but
some features are missing. For further information, see nginx for Windows.

Next steps

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Setting Up NGINX and NGINX Plus as a Web Server and Reverse Proxy in AWS

See license specifics and DISCLAIMER

d:\server\ — директория для хранения ПО и данных сервера
d:\server\bin\ — программное обеспечение
d:\server\bin\nginx
d:\server\bin\php
d:\server\bin\mariadb
d:\server\data\ — хранение данных (например логов)

Nginx

Скачиваем последнюю версию Nginx и размещаем в директории d:\server\bin\nginx.

Настройка

В файле конфигурации D:\server\bin\nginx\conf\nginx.conf нужно добавить строку внутри блока http

include vhosts/*.conf;

и создать директорию D:\server\bin\nginx\conf\vhosts

Виртуальный хост

Для теста можно создать хост для фреймворка Laravel. Для этого нужно разместить в директории D:\server\bin\nginx\conf\vhosts файл laravel.conf

server {	listen 80;	server_name laravel.test;	root D:/projects/php/laravel.test/public;	add_header X-Frame-Options "SAMEORIGIN";	add_header X-XSS-Protection "1; mode=block";	add_header X-Content-Type-Options "nosniff";	index index.php;	charset utf-8;	location / {	try_files $uri $uri/ /index.php?$query_string;	}	location = /favicon.ico { access_log off; log_not_found off; }	location = /robots.txt { access_log off; log_not_found off; }	error_page 404 /index.php;	location ~ \.php$ {	fastcgi_pass 127.0.0.1:9000;	fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;	include fastcgi_params;	}	location ~ /\.(?!well-known).* {	deny all;	}
}

После этого добавляем строку

127.0.0.1 localhost laravel.test

в файл C:\Windows\System32\drivers\etc\hosts

PHP

Скачиваем PHP (Non Thread Safe) и размещаем в директории d:\server\bin\php. Также нужно установить компонент Visual C++ Redistributable for Visual Studio. Ссылку на эту программу можно найти в левой боковой колонке страницы

Setting Up NGINX and NGINX Plus as a Web Server and Reverse Proxy in AWS

И подключаем необходимые модули расскоментируя строки extension=имя_модуля в файле D:\server\bin\php\php.ini

MariaDB

Скачиваем последнюю версию MariaDB. Я обычно выбираю MSI-пакет и устанавливаю в директорию d:\server\bin\mariadb. Впрочем эту программу можно разместить где угодно.

Запуск, остановка и перезапуск сервера

bat-файлы для управления сервером

pushd d:\server\bin\nginx
start nginx.exe
popd
d:\server\bin\RunHiddenConsole.exe "d:\server\bin\php\php-cgi.exe" -b 127.0.0.1:9000 -c "d:\server\bin\php\php.ini"
taskkill /IM nginx.exe /F
taskkill /IM php-cgi.exe /F
call stop.bat
call start.bat
EXIT /b

Источник:

Существует большое количество бесплатных современных систем мониторинга. В своём Telegram канале я написал небольшие обзоры на 20 наиболее известных и популярных в настоящее время систем мониторинга. Какие-то из них полностью бесплатные, а какие-то имеют как бесплатную версию, так и коммерческую. Я организовал список ТОП-20 систем мониторинга, который поможет вам сделать выбор и определиться, что имеет смысл внедрить у себя.

Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.

Zabbix

Лидером рейтинга я поставил популярную в настоящее время систему мониторинга Zabbix. Это полностью бесплатный Open Source проект. По моему мнению ключевой особенностью Zabbix является безграничная возможность сбора метрик. Эта система мониторинга имеет огромное количество интеграций и готовых шаблонов для мониторинга всего, что только может прийти в голову. А если какого-то готового решения нет, его можно сделать самостоятельно. У меня отдельный раздел с подобными решениями, которые я реализовал сам.

Zabbix Server состоит из серверной части, управление которой происходит через веб интерфейс, написанный на php. Так что потребуется классический веб сервер. В качестве базы данных используется PostgreSQL или MySQL. Это является слабым местом данной системы мониторинга. Так как всё хранится в полноценной SQL базе, она первая станет узким местом при росте нагрузки на систему мониторинга. Метрики могут собираться как самим сервером, так и с помощью агентов, которые устанавливаются на наблюдаемые системы.

Основная критика Zabbix — отсутствие поддержки современных принципов управления инфраструктурой — Iac (Infrastructure-as-Code). Мониторинг Zabbix — классический монолит из прошлого. Но стоит отдать ему должное — он движется в направлении поддержки современных динамических сред. Есть готовые шаблоны с автообнаружением объектов для Kubernetes и Docker.

Zabbix

Prometheus

Prometheus относительно новый продукт, который завоевал свою популярность вместе с развитием подхода Iac (Infrastructure-as-Code). Он стал фактически промышленным стандартом для мониторинга динамических систем, таких как Kubernetes или аналогов. Это тоже полностью бесплатный Open Source продукт. Основное преимущество — способность автоматически обнаруживать и мониторить огромное количество метрик и также способность быстро их показывать. В основе лежит база данных временных рядов TSDB. Она обеспечивает несравненно более высокие скорости обработки данных, по сравнению с SQL базами.

Вот ещё преимущества Prometheus:

  1. Prometheus query language. Это свой язык запросов, очень крутая штука, аналогов которой вроде и нет нигде. С его помощью очень удобно и быстро можно построить запрос на выборку данных.
  2. Service discovery. Прометеус отлично подходит для динамических систем, например Kubernetes. Он автоматически находит необходимые таргеты и ставит на мониторинг.
  3. Exporters. Формат данных Prometheus поддерживает огромное количество софта. Они сразу из коробки выдают все метрики для Prometheus. Вам остается их только направить в него.

Если вам интересно узнать, чем Prometheus отличается от Zabbix, читайте мою статью на эту тему — Сравнение Zabbix vs Prometheus. В качестве инструмента для визуализации собранных данных Prometheus использует Grafana.

Prometheus

Observium

Знакомлю вас с очередной системой мониторинга, которую пробовал лично. Речь пойдет про Observium. Смотрел на нее, когда еще не плотно сидел на Zabbix. Она показалась более простой в установке и настройке. На деле это так и получилось, но я в итоге заставил себя учить Zabbix. Он мне видится более перспективным и функциональным. Но если вы не специализируетесь на мониторинге, то вам могут подойти любые другие продукты попроще.

Основа сбора метрик в observium — snmp. У него есть огромное количество готовых шаблонов под все популярные и известные устройства. Основной упор идет на сеть. Вообще, эта система мониторинга изначально позиционировалась для сети, хотя сейчас можно мониторить и другие устройства, системы (ставится агент, есть даже под Windows), приложения (есть шаблоны под Apache, BIND, DRBD, Memcached, MySQL, NFS и др.). Полный список можно посмотреть на сайте — http://observium.org/supported_devices/

Простота настройки заключается вот в чем: Full autodiscovery of supported devices and metrics. Это цитата с сайта. То есть все автоматом находится, подцепляется и мониторится. Не надо вручную метрики добавлять.

Есть несколько редакций: Community, Professional, Enterprise. Продается годовыми подписками. К сожалению, очень много полезного функционала только в платных версиях. Например, подсчет трафика, доступ через api и др. Посмотреть своими глазами на observium можно в демо — https://demo.observium.org. Учетка demo / demo.

Observium

LibreNMS

У Observium есть бесплатный форк — LibreNMS, который реализует некоторый функционал родной системы, доступный только за деньги. Так что если у вас появился интерес к бесплатной версии Observium, лучше сразу использовать LibreNMS. Репозиторий системы — https://github.com/librenms/librenms.

Пару слов, что это такое и зачем надо. LibreNMS — многофункциональная система мониторинга с автообнаружением. Заточена в первую очередь на мониторинг сетей по snmp. Из коробки имеет поддержку практически всех популярных сетевых устройств. Помимо сетевых устройств умеет мониторить и сервера на Windows, Linux, Freebsd. Для этого использует агенты. Работает на базе php + mysql. Все типовые метрики подхватывает сама, напильником пилить не надо. То есть это не аналог Zabbix с безграничной кастомизацией.

  • автоматически обнаруживает всю сеть, используя следующие протоколы: CDP, FDP, LLDP, OSPF, BGP, SNMP и ARP.
  • использует свой агент для операционных систем
  • поддерживает различные системы оповещения, отправляет уведомления по электронной почте, IRC, Slack и т.д.
  • есть api для управления и доступа к данным
  • имеет встроенную систему биллинга трафика
  • есть приложения для Android и iOS
  • поддерживает разные методы аутентификации, в том числе LDAP, Radius и Active Directory.

Демку можно посмотреть тут — https://demo.librenms.org. Учётная запись: demo / demo.

Librenms

Netdata

Рассказываю про очередной очень простой и функциональный мониторинг — Netdata. Он может быть установлен на одиночный сервер и следить только за ним. Также есть возможность подключить несколько своих серверов с установленным мониторингом к публичному сервису и наблюдать за всеми своими серверами через него в браузере.

Ставится Netdata не просто, а очень просто. Идем в консоль и запускаем скрипт:

# bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Я про себя назвал его вежливым скриптом. Это первый установочный скрипт, который не сделал ничего в системе без моего разрешения. Он спросил разрешение на подключение сторонних реп и установки дополнительных пакетов. Спрашивал обо всем, самостоятельно ничего не сделал. В конце собрал сам себя из исходников.

Читайте также:  Домен верхнего уровня. Что это такое и как выбрать

После установки, можно сразу идти в браузер по локальному ip и смотреть мониторинг. Порт — 19999, авторизации нет. По умолчанию доступны привычные базовые метрики — cpu, память, диск, сеть и т.д. Но на самом деле функционал этого мониторинг очень сильно расширяется дополнительными collectors. Они есть для массы популярного софта. Не буду все это перечислять, можете сами посмотреть — https://learn.netdata.cloud/docs/agent/collectors/collectors.

# netdata-claim.sh -token=SIm3ctYjBA6ehxlY1HKTKYo9HE-hPijoMWZxy-YGquOX17K9Zrv-ipsLaJhml2CPaZ1VI3YEC3Ss429a6l2zZAsUxzU9-pNzdIDbFUGKFXlsK-gVaQXxVMUPIBwz_ANF0vsznGI -rooms=22fd6509-c18a-4731-91c7-c4745922f999 -url=https://app.netdata.cloud

Все, больше ничего делать не надо. Все метрики и сам сервер появится в дашборде через несколько секунд. Мониторинг будет доступен отовсюду через браузер.

Так как в Netdata есть поддержка всяких докеров, кубернетисов и прочего современного софта, да еще и ставится практически все автоматически, можно после установки почувствовать себя настоящим девопсом. Не упустите такой возможности.

Netdata

Newrelic

Существует очень крутой мониторинг Newrelic. Я знаю его давно. Раньше у них был бесплатный тарифный план, позволяющий мониторить, если не ошибаюсь, до 10-ти хостов. Потом в какой-то момент они убрали бесплатный тариф, и я прекратил им пользоваться.

Это полностью готовый мониторинг, работающий по принципу saas. Вам достаточно установить агент на сервер, указать свой уникальный ключ и всё. Дальше агент всё сделает сам, а вам останется только зайти в веб интерфейс и смотреть метрики.

Функционал мониторинга очень крутой. Пользоваться удобно. Я мониторил только инфраструктуру с его помощью, то есть сами сервера. Но он умеет гораздо больше — логи, приложения, тесты через браузер и т.д. Даже при мониторинге сервера он автоматом наблюдает за каждым процессом, автоматом находит все docker контейнеры и следит за ними.

Сейчас я узнал, что у него снова появился бесплатный тариф. Я толком не нашел подробностей, но судя по его странице pricing, не тарифицируются данные, объёмом менее 100G в месяц. Это очень много, и если это реально бесплатно, то круто. Я пока добавил туда один сервер для теста. Все работает, денег не просит.

Рекомендую попробовать. Настроить очень просто. Буквально зарегистрируетесь и сразу же при первом входе попадете на очень подробное руководство, где вам расскажут, как поставить агента на сервер.

Newrelic

Veliam

Ранее я уже писал про систему мониторинга и управления IT инфраструктурой Veliam. Посмотреть статьи можно в соответствующем разделе сайта. Я не только тестировал систему, но и внедрил ее в небольшой организации. В целом, она закрывает базовые потребности типового офиса, где нет больших функциональных требований к инфраструктуре.

Veliam закрывает 3 основных направления:

  1. Мониторинг.
  2. HelpDesk система.
  3. Удаленный доступ сотрудников.

Есть оригинальные и уникальные наработки. В общем и целом, продукт самобытный и лично мне понравился. В этот раз у меня заказали обзор коробочной версии системы, которую можно развернуть на своих серверах. До этого она работала по модели SaaS на мощностях разработчиков.

Помимо выхода боксовой версии, расширился и функционал. Добавились метрики, получаемые с помощью внешних скриптов. Также можно стало писать свои шаблоны мониторинга на базе SNMP запросов. Программа развивается и расширяет функционал. Но в базе так и осталась простота и скорость разворачивания и запуска в работу.

Сам сервис ставится на Windows и не требует специальных знаний по настройке и внедрению. Можно сразу брать и настраивать. Все получится. Моих статей будет достаточно. Ограничения бесплатной версии очень лояльные, многим может хватить и их.

Veliam

Nagios

Я достаточно много времени уделяю мониторингу. В основном это Zabbix, хотя иногда использовал и другие системы. Одна из них Nagios. Сам я ее не разворачивал, но пару раз эта система доставалась мне в наследство от предыдущих админов. Некоторое время я ее использовал, что-то донастраивал, менял и плавно переходил на Zabbix 😁.

Было это всё достаточно давно и моя информация может быть не актуальной, но все же поделюсь. Мне сильно не нравилось в Nagios то, что там фокус смещен на состояние и статусы, а не на графики и тренды. Раньше там графиков вообще не было.

Из плюсов более простая установка и настройка по сравнению с Zabbix. Много готовых плагинов (расширений?) для мониторинга всего и вся. Плюс хорошее быстродействие, нет такой нагрузки на БД, как в Zabbix. Нравилась концепция уведомлений, когда они долбили постоянно, пока не исправлена проблема. Не знаю, дефолтное ли это поведение, или админы так настраивали. Zabbix по дефолту шлёт только одно уведомление в момент срабатывания триггера и всё. Если забыл сразу решить вопрос, можно забыть про него. Другое поведение надо настраивать отдельно, перед этим разобравшись с системой оповещений.

Так же нравилось дефолтное отображение статусов и состояний хостов, сервисов. Не нужно было это допиливать до удобного и информационного состояния, как в Zabbix, где первым делом после установки перенастраиваешь дефолтный дашборд, чтобы стало удобно. Хотя это очень субъективно.

Посмотрел сейчас сайт Nagios и вижу, что это уже не только система мониторинга, но и многое другое — Log Server, Network Analyzer, Fusion (объединение всех продуктов в единый дашборд). Поделитесь информацией о продуктах, если реально пользуетесь ими. Интересно узнать, насколько всё это функционально и удобно по сравнению с аналогами. Из бесплатных программ вижу только Nagios Core со скринами от 2014 года. Они что, его больше не развивают и остались только платные продукты?

В целом, Nagios интересная и удобная система. Если у вас нет фокуса на мониторинге и нет желание как-то активно развиваться в этой области, то в качестве мониторинга для инфраструктуры, которую вы обслуживаете, можно использовать Nagios. Разобраться и всё настроить будет немного проще, чем в Zabbix. Опять же, это субъективно. Я то неплохо все эти системы знаю и мне в целом легко настроить любую из них.

Nagios

Icinga

Icinga — это весьма зрелая и качественная система мониторинга, на которую стоит обратить внимание, если выбираете, на чём остановиться и еще не решили, что вам нужен Zabbix или Prometheus. Изначально это был форк Nagios. Но со временем их пути сильно разошлись, так что можно считать Icinga самостоятельным продуктом. Причем качественным и полностью бесплатным:

Icinga полноценная система мониторинга, которая включает в себя:

  • Автоматизацию мониторинга инфраструктуры, в том числе сетевой, в том числе с использованием иерархической распределенной структуры.
  • Сбор метрик и логов.
  • Аналитику.
  • Оповещения.
  • Отчёты.
  • Визуализацию, в том числе с помощью дополнительных модулей для дашбордов.

В общем, там есть всё, что надо, для полноценного мониторинга. Данные может собирать как с помощью агентов, так и без них. Бэкенд написан на C++, веб интерфейс на php. В качестве БД поддерживает MySQL, Oracle Database, PostgreSQL.

Когда тестировал, очень понравился красивый, лаконичный, отзывчивый и шустрый веб интерфейс. Прям приятно по нему потыкать, все быстро открывается, логично распределено. Попробовать проще всего, развернув всё через docker-compose. Есть репозиторий — https://github.com/lippserd/docker-compose-icinga. Там готовый compose файл, но есть ошибки в Dockerfile в /env/icingaweb2/. Рабочая версия файла будет такая:

FROM alpine/git
WORKDIR /
COPY icingadb-load-monitoring.patch .
RUN git clone https://github.com/Icinga/icingadb-web.git icingadb && \
cd icingadb && \
git checkout e6e5bb30d37eacaf5498f96412b4b5f400cc9309 && \
cd .. && \
git apply --directory icingadb icingadb-load-monitoring.patch
FROM icinga/icingaweb2:2.9
USER root
RUN rm -rf /usr/share/icingaweb2/modules/icingadb/*
USER www-data
COPY --from=0 /icingadb /usr/share/icingaweb2/modules/icingadb

Icinga

Monika

Познакомился с любопытной утилитой для мониторинга — Monika. Такое душевное название 😄 Автор объясняет, что это от индонезийского «Monitoring Berkala», что переводится как «periodic monitoring». Странное у него представление о сокращениях. Нам, потомкам советский людей, такое трудно понять.

Автор не поленился и расписал, зачем он придумал еще одну утилиту для мониторинга. На сайте подробно описано в разделах Motivation и Not just another tool.

В целом, мне суть и концепция понравились. Это утилита, которая способна выполнять различные сценарии веб проверок (не только пинги и коды ответа) и отправлять оповещения различными способами. А все настройки хранятся в одном json файле. Получается хорошее решение для автоматизации, когда надо что-то собрать, протестировать и отправить результат.

Monika написана под node.js, так что без проблем запускается либо через ноду, либо в докере, примерно так:

# docker run -v ${PWD}/monika.json:/config/monika.json hyperjump/monika:latest

Конфиг тоже очень простой и наглядный. Пример проверки с отправкой оповещения по smtp.

 { "notifications": [ { "id": "unique-id-smtp", "type": "smtp", "data": { "recipients": ["YOUR_EMAIL_ADDRESS_HERE"], "hostname": "smtp.gmail.com", "port": 587, "username": "YOUR_GMAIL_ACCOUNT", "password": "YOUR_GMAIL_PASSWORD_OR_APP_PASSWORD" } } ], "probes": [ { "id": "1", "name": "Monika Landing Page", "description": "Landing page of awesome Monika", "interval": 10, "requests": [ { "url": "https://hyperjumptech.github.io/monika", "timeout": 7000 } ], "alerts": ["status-not-2xx"] } ] }

Оповещения поддерживаются во все популярные направления — smtp, slack, telegram, webhook, whatsapp, discord и т.д. У утилиты полноценная и понятная документация. Выглядит добротным и качественным проектом.

Monika

The Dude

Много писал про мониторинг и всегда обходил стороной такой популярный продукт как The Dude. Надо это исправить. Авторами The Dude является всем известная компания Mikrotik. Основное её отличие — простота настройки и неприхотливость в плане ресурсов . Её очень легко установить и запустить в работу. Не нужны специальные знания и время на изучение продукта. Базовая настройка проста и интуитивна.

Сервер The Dude можно установить только на RouterOS. Так что вам нужно либо устройство Mikrotik, либо виртуальная машина с CHR (Cloud Hosted Router). Если будете ставить на роутер, имейте ввиду, что свою базу данных мониторинг будет хранить тоже локально, а значит будет постоянно что-то писать на устройство хранения. Для этого лучше сразу выделить sd карту или usb накопитель, чтобы не исчерпать ресурс записи встроенной памяти. Идеально поставить на CHR. У меня есть одна лицензия для различных тестов конфигураций микротов. Удобно это делать на виртуалке.

The Dude умеет автоматически сканировать сеть и добавлять в мониторинг все найденные устройства. Далее вы сможете их сами расположить на карте сети. Отдельно отмечу, что The Dude умеет мониторить и находить не только устройства Mikrotik, а и всё остальное, что доступно по сети. Например, для Windows у него есть свой агент, который можно установить для сбора метрик. А в общем случае он собирает метрики по snmp, в том числе и с Linux машин.

Писать много не буду, так как продукт достаточно известный. В сети много руководств по его настройке. Если вам нужен простой мониторинг и вы используете у себя Mikrotik, попробуйте The Dude. Он необычен и выделяется на фоне других систем мониторинга. При этом весьма удобен и популярен.

The Dude

Оцените статью
Хостинги