Script for getting statistics from Nginx Web server for Zabbix external check
Go
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README.md
main.go
zbx_nginx_template.xml

README.md

Nginx stat getter for Zabbix monitoring

ENG

Script for getting statistics from Nginx Web server for Zabbix external check. Implementation of this script - https://github.com/vicendominguez/nginx-zabbix-template on Golang.

Setting up

Nginx

To enable statistics in Nginx, create virtual host, like so

server {
  listen 4040; # unusual port for monitoring
  server_name _; # doesn't care about server name
  keepalive_timeout 0;
  allow 192.168.0.40; # allow requests only from our monitoring server
  deny all; # deny all others
  location =/nginx_status/ {
    stub_status on; # properly enabling of statistics
  }
  access_log off; # don't write logs
}

And reload/restart the nginx service.

Zabbix

We need to compile binary for that platform where zabbix is running. Use this command:

env GOOS={OS} GOARCH={ARCH} go build -v github.com/tonymadbrain/nginx_stat_getter

Where:

{OS} - OS type:

  • Mac os - darwin
  • Windows - windows
  • Linux - linux
  • FreeBSD - freebsd

{ARCH} - arhitecture:

  • x86_64 - amd64
  • x86 - 386
  • ARM - arm (linux only)

Example for Linux x86_64:

$ env GOOS=linux GOARCH=amd64 go build -v github.com/tonymadbrain/nginx_stat_getter

Then, copy the binary to Zabbix server into /usr/lib/zabbix/externalscripts folder, make him executable with chmod +x nginx_stat_getter, set zabbix owner with chown zabbix:zabbix nginx_stat_getter. Next, import template zbx_nginx_template.xml in Zabbix frontend and attach him to server(s).

Done! Wait for data.

RUS

Скрипт для получения статистики из Nginx, который можно использовать в Zabbix. Реализация на Go вот этого скрипта - https://github.com/vicendominguez/nginx-zabbix-template.

Настройка

Nginx

Чтобы включить статистику в Nginx, нужно создать vhost, следующего содержания:

server {
  listen 4040; # нестандартный порт для мониторинга статистики
  server_name _; # нам пофиг на server name
  keepalive_timeout 0;
  allow 192.168.0.40; # разрешаем запросы только для ip адреса нашего сервера мониторинга
  deny all; # все остальные идут лесом
  location =/nginx_status/ {
    stub_status on; # собственно включение статистики
  }
  access_log off; # не пишем логи
}

И сделать reload/restart сервера.

Zabbix

Нужно скомпилировать бинарник под ту платформу, на которой запущен Zabbix сервер, для этого нужно использовать команду:

env GOOS={OS} GOARCH={ARCH} go build -v github.com/tonymadbrain/nginx_stat_getter

{OS} - тип операционной системы, может быть:

  • Mac os - darwin
  • Windows - windows
  • Linux - linux
  • FreeBSD - freebsd

{ARCH} - архитектура, может быть:

  • x86_64 - amd64
  • x86 - 386
  • ARM - arm (linux only)

Закинуть бинарник на сервер Zabbix в каталог /usr/lib/zabbix/externalscripts, сделать его исполняемым - chmod +x nginx_stat_getter, сделать владельцем файла Zabbix - chown zabbix:zabbix nginx_stat_getter. Затем нужно импортировать шаблон zbx_nginx_template.xml в Zabbix фронтенде и прикрепить его к нужному серверу.

Ждать данных.