Apache env variables: различия между версиями
Sirmax (обсуждение | вклад) (Новая страница: «Категория:Linux Категория:Apache Категория:Nginx Категория:Nagios Категория:LMA =Переменн…») |
Sirmax (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 2: | Строка 2: | ||
[[Категория:Apache]] |
[[Категория:Apache]] |
||
[[Категория:Nginx]] |
[[Категория:Nginx]] |
||
| − | [[Категория:Nagios]] |
||
[[Категория:LMA]] |
[[Категория:LMA]] |
||
=Переменные окружения и их применение в апаче и нжинксе= |
=Переменные окружения и их применение в апаче и нжинксе= |
||
| Строка 126: | Строка 125: | ||
RewriteRule ^ - [R=200] |
RewriteRule ^ - [R=200] |
||
| − | <PRE> |
+ | </PRE> |
RewriteRule (.*) $1 [E=arg_plugin_output:%1] - не меняя URLзаписывает значение plugin_output в переменную arg_plugin_output<BR> |
RewriteRule (.*) $1 [E=arg_plugin_output:%1] - не меняя URLзаписывает значение plugin_output в переменную arg_plugin_output<BR> |
||
Запрос сам по себе - как то так: ....cmd.cgi?plugin_output=OK ... |
Запрос сам по себе - как то так: ....cmd.cgi?plugin_output=OK ... |
||
<PRE> |
<PRE> |
||
| − | 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 |
+ | 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 |
</PRE> |
</PRE> |
||
Текущая версия на 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;
}
}