Apache env variables: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
[[Категория:Apache]] |
[[Категория:Apache]] |
||
[[Категория:Nginx]] |
[[Категория:Nginx]] |
||
− | [[Категория:Nagios]] |
||
[[Категория:LMA]] |
[[Категория:LMA]] |
||
=Переменные окружения и их применение в апаче и нжинксе= |
=Переменные окружения и их применение в апаче и нжинксе= |
Текущая версия на 14:32, 4 апреля 2020
Переменные окружения и их применение в апаче и нжинксе
Вводная: есть cmd.cgi который пишет данные в файл для того что бы в нагиос можно было отдавть результаты пассивных проверок.CGI медленный надо сделать быстрым. Так-как все данные прилетают GET то напрашивается решение разбирать его и писать прямо в лог
Примеры:
Apache
<VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost # DocumentRoot /var/www/html #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/default_error.log CustomLog ${APACHE_LOG_DIR}/default_access.log nagios ScriptAlias /cgi-bin/nagios3 /usr/lib/cgi-bin/nagios3 ScriptAlias /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3 Alias /nagios3/stylesheets /etc/nagios3/stylesheets Alias /nagios3 /usr/share/nagios3/htdocs CustomLog /var/lib/nagios3/rw/nagios.cmd nagios LogLevel alert rewrite:trace4 RewriteEngine On RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_host:default_val] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteCond %{QUERY_STRING} host=([^&]*).*$ RewriteRule (.*) $1 [E=arg_host:%1] # RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_service:default_val] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteCond %{QUERY_STRING} service=([^&]*).*$ RewriteRule (.*) $1 [E=arg_service:%1] # RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_plugin:default_val] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteCond %{QUERY_STRING} plugin=([^&]*).*$ RewriteRule (.*) $1 [E=arg_plugin:%1] # RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_plugin_state:default_val] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteCond %{QUERY_STRING} plugin_state=([^&]*).*$ RewriteRule (.*) $1 [E=arg_plugin_state:%1] # RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_plugin_output:default_val] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteCond %{QUERY_STRING} plugin_output=([^&]*).*$ RewriteRule (.*) $1 [E=arg_plugin_output:%1] RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule ^ - [R=200] ### end <DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)> Options FollowSymLinks DirectoryIndex index.php index.html AllowOverride AuthConfig Order Allow,Deny Allow From All AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios3/htpasswd.users # nagios 1.x: #AuthUserFile /etc/nagios/htpasswd.users require valid-user </DirectoryMatch> <Directory /usr/share/nagios3/htdocs> Options FollowSymLinks Options ExecCGI FollowSymLinks </Directory> </VirtualHost>
В этом примере
RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule (.*) $1 [E=arg_plugin_output:default_val]
RewriteCond - только если запрос на cmd.cgi
RewriteRule - инициализирует переменную, это необязательное действие, arg_plugin_output - имя переменной, default_val - значение с которым она инициализируются.
RewriteRule (.*) $1 теоретически - должно "ничего не делать"
RewriteCond %{REQUEST_URI} "cmd.cgi"
RewriteCond %{QUERY_STRING} plugin_output=([^&]*).*$ RewriteRule (.*) $1 [E=arg_plugin_output:%1]
RewriteCond %{REQUEST_URI} "cmd.cgi" RewriteRule ^ - [R=200]
RewriteRule (.*) $1 [E=arg_plugin_output:%1] - не меняя URLзаписывает значение plugin_output в переменную arg_plugin_output
Запрос сам по себе - как то так: ....cmd.cgi?plugin_output=OK ...
LogFormat "[%{%s}t.%{msec_frac}t] PROCESS_SERVICE_CHECK_RESULT;%{arg_host}e;%{arg_service}e;%{arg_plugin_state}e;%{arg_plugin_output}e" nagios
Nginx
Nginx имеет встроенную возможность обращаться к переменным log_format nagios '[$msec] PROCESS_SERVICE_CHECK_RESULT;$arg_host;$arg_service;$arg_plugin_state;$arg_plugin_output'; server { access_log /var/lib/nagios3/rw/nagios.cmd nagios buffer=4k; listen 84 default_server; root /usr/share/nginx/html; index index.html index.htm; location / { return 200; } }