Категории

среда, 30 декабря 2015 г.

Ubuntu add-architecture i386 ia32-libs

В частности при попытке выполнить в командной строке файл, предназначенный для 32-х битной системы, может возникать ошибка вида:
./somefile: Нет такого файла или каталога (No such file or directory)
Чтобы 32-х битные приложения могли запускаться в 64-х битной системе Linux нужно установить соответствующие библиотеки, например для Ubuntu 14.04:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Удаление в обратном порядке:
sudo dpkg --remove-architecture i386
sudo apt-get update
sudo apt-get purge lib32z1 lib32ncurses5 lib32bz2-1.0

1. Multiarch: What happened to the ia32-libs package?

пятница, 18 декабря 2015 г.

Ubuntu prevent open thunderbird mailto links; xdg-open, xdg-mime, xdg-mail

Люблю выделять/копировать пароли/строки текста тройным ли двойным кликом мышки, но есть проблема со словами в которых есть символ @, Ubuntu распознает это как email адрес и запускает мне Thunderbird, что не желательно, недолго погуглив рамблером в яндексе нашел такой хак:
sudo sed -i '2 i exit 0' /usr/bin/xdg-email
Как легально отключить это поведение, через пользовательские настройки пока не нашел и остановился на этом варианте.

суббота, 10 октября 2015 г.

Centos7 LXC

Сборка из исходных кодов стабильной версии lxc для Centos 7 с поддержкой python. Поддержка python необходима, например для работы команды lxc-ls --fancy Установка зависимостей:
yum install -y epel-release
yum install -y gcc git rpm-build automake make python34 python34-devel
yum install -y libcap-devel docbook2X graphviz
Согласно официальному сайту на момент написания статьи доступно 3 версии LXC, я выбрал LTS stable-1.0
Скачивание исходных кодов:
git clone git://github.com/lxc/lxc -b stable-1.0
cd lxc
Почитав немного доку и исходники, получился такой порядок действий:
./autogen.sh

./configure --enable-python PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4m
Как можно заметить, конфигурация происходит с явным указанием версии python3.4, он появился сравнительно недавно в EPEL, его и будем использовать далее.

Т.к. у нас Centos и тут не все как у людей как в других дистрибутивах, изменим в исходниках путь до исполняемого файла Python, но сперва найдем файлы, которые нужно модифицировать:
grep -Rn '^#.*/python3'
В результате у меня получился такой небольшой скрипт:
for f in config/apparmor/lxc-generate-aa-rules.py src/lxc/lxc-device src/lxc/lxc-ls.in src/lxc/lxc-start-ephemeral.in src/lxc/lxc-ls src/lxc/lxc-start-ephemeral src/python-lxc/examples/api_test.py src/python-lxc/examples/pyconsole-vte.py src/python-lxc/examples/pyconsole.py src/python-lxc/setup.py src/python-lxc/setup.py.in; do
    sed -i 's|#!/usr/bin/python3|#!/usr/bin/python3.4|' $f
done

sed -i 's|Requires: python3|Requires: python34|' lxc.spec
sed -i 's|BuildRequires: python3-devel|BuildRequires: python34-devel|' lxc.spec
sed -i 's|/python3.3/site-packages/|/python3.4/site-packages/|' lxc.spec
После изменений проверим результат:
grep -Rn '^#.*/python3'
Теперь соберем rpm пакеты используя Python3.4:
make rpm PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4m
Найти собранные пакеты можно в каталоге cd /root/rpmbuild/RPMS/x86_64, а установить командой:
yum localinstall lxc-libs-1.0.7-1.el7.centos.x86_64.rpm lxc-1.0.7-1.el7.centos.x86_64.rpm
Не будем останавливаться на этом!
Для запуска Centos 7 контейнера необходимо проделать еще несколько манипуляций: В файле /usr/share/lxc/config/centos.common.conf нужно найти опцию lxc.cap.drop, содержащую значения setfcap и setpcap их нужно убрать, например для хоста Ubuntu 14.04 нужно сделать примерно так:
#lxc.cap.drop = mac_admin mac_override setfcap setpcap
lxc.cap.drop = mac_admin mac_override
Не зависимо от дистрибутива нужно в тот же файл еще добавить в конец сроки:
# This lets LXC SUSE containers run on hosts with apparmor.
# It does nothing on hosts which do not have apparmor enabled.
lxc.aa_profile = unconfined

# https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1347020
lxc.kmsg = 0

Ссылки по теме:
1. Bug 1176816 - booting a centos 7 container is extremely slow
2. centos 7 needs setpcap capability
3. systemd does not boot in a container
4. [lxc-devel] [PATCH] Various fixes for Fedora/CentOS/OpenSUSE templates and systemd.
5. big big login delays in CentOS 7 systemd #340
6. Linux Containers: Downloads
7. LXC 1.0: Troubleshooting and debugging [10/10]

вторник, 29 сентября 2015 г.

Zimbra Google Chrome 45 Fix

Возникла проблема с Zimbra Webmail и Chrome v.45.0.2454.85, спустя неделю был опубликован фикс на офф сайте Zimbra, я предлагаю очень похожий вариант, но без перезагрузки zimbra.
Нужно найти в файлах, возможно необходимо будет сделать бекап или скопировать и закомментировать изменяемые строки:
/opt/zimbra/jetty-distribution-7.6.12.v20130726/webapps/zimbra/skins/_base/base2/skin.css
/opt/zimbra/jetty-distribution-7.6.12.v20130726/webapps/zimbra/skins/_base/base3/skin.css
Eсли эти строки отличаются - привести их к этому виду:
#skin_td_sidebar_ad        { width:@SidebarAdWidth@; }
#skin_container_sidebar_ad { @AdStyle@ width:@SidebarAdWidth@; }
Затем нужно найти строку:
#skin_td_main { width:auto; height:100%; }
И привести её к виду:
#skin_td_main > TABLE { table-layout: fixed; }
Напомню, сделать это нужно в обоих файлах base3 и base2
Теперь самое интересное, чтобы не перезапускать zimbra, можно исправить уже имеющие стили в кеше:
cd /opt/zimbra/jetty/work/resource-cache/skinres/latest
sed -i 's/#skin_td_main{width:auto;height:100%;}/#skin_td_main>TABLE{table-layout:fixed;}/g' ./*.css

Ссылки по теме:
1. Anyone else having display problems with Telus Webmail on Chrome v. 45.0.2454.85?
2. Zimbra Web Client in ZCS 8.0.x and Google Chrome 45+
3. Github: Zimbra Google Chrome 45 Fix

четверг, 27 августа 2015 г.

Запуск X приложений на полный экран в X сервере без DM.

Для запуска в X сессии любой X программы можно воспользоваться nodm.
Установка необходимых пакетов:
$ sudo apt-get install nodm
Настройка nodm в файле /etc/default/nodm:
# nodm configuration

# Set NODM_ENABLED to something different than 'false' to enable nodm
NODM_ENABLED=true

# User to autologin for
NODM_USER=metall

# First vt to try when looking for free VTs
NODM_FIRST_VT='7'

### xinit program
###NODM_XINIT=/usr/bin/xinit

# X session
NODM_XSESSION=/etc/X11/Xsession

# Options for the X server
NODM_X_OPTIONS='-nolisten tcp'

# If an X session will run for less than this time in seconds, nodm will wait an
# increasing bit of time before restarting the session.
NODM_MIN_SESSION_TIME=60

Ссылки по теме:
1. forum kodi, XBMC Server

воскресенье, 26 июля 2015 г.

Сборка мощного домашнего сервера

Стало не хватать домашнего сервера на Atom D525 с 4Гб оперативной памяти, вот такой он компактный:
Вон он в боевом положении, чтобы вы оценили насколько он компактный:
Это корпус Mini-ITX Morex T3310, покупался еще в красноярском DNS-shop, когда процессоры Atom еще были в моде. :) Процессор вместе с радиатором распаяны на материнской плате, внутри нет ни одного вентилятора, и 2 HDD от старых ноутбуков, да я собирал его из того, что было под рукой! :) Еще на плате имеется PCI слот, куда вставлена вторая сетевая карточка, да, вы правильно догадались, это был домашний роутер! Внутри есть Mini-PCIe с Wi-Fi адаптером, но как видно на фото (плохо видно, но статья не о нем же), у меня появился Mikrotik RB951G-2HnD и необходимость во 2 карточке отпала, но виртуалки с разными проектами остались, а так же файлопомойка, PXE установщики и много других полезных вещей.

В общем железо сильно устарело и я решил его обновить, получился такой список деталей:
Наименование Модель и описание Цена
Материнская плата ASRock H81TM-ITX, Scket1150, iH81, 2SODIMM DDRIII, 7.1-ch HDA, GLAN, USB 3.0, DVI, HDMI, Thin mini-ITX, Retail 3807
Блок питания HP-A1501A3B1 19V 7.9A 150W 2400
Кулер+доставка Dynatron K199 1U LGA115X 1794+1090
Память DDR3L SODIMM 16Gb (2x8Gb) PC12800 1600MHz CL9 Kingston HyperX Impact Black Series (HX316LS9IBK2/16) 7650
Процессор Intel Core i7-4790S 3200MHz 8Mb TDP-65W S1150 tray Haswell 24050
Процессор Intel Xeon E3-1246v3 3500MHz 8Mb 5GT/s TDP-84W S1150 tray 20675
Жесткий диск Hitachi (HGST) 1Tb HTS721010A9E630 Travelstar 7K1000 2.5" 7200rpm 32Mb SATA3 4275+4275
Корпус Lian Li PC-Q05B Black Mini-ITX 47x284x307 3663
53004 руб.
Сервер старался делать максимально миниатюрным, поэтому кулер выбрал очень специфичный Dynatron K199, т.к. процессор хочется мощный и в то же время, чтобы сервер остался бесшумным и компактным.

Выбранный кулер на момент покупки был доступен только в европейской части мира, аналогов в росии или китае я не нашел, поэтому пришлось заказать в штатах на ebay, тут я изрядно переплатил еще и доставка была платная, но оно того стоит!

Выбранный процессор E3-1246v3 имеет 4 ядра, 8 потоков (Hyper Threading) и встроенное видео, которое пока никак не планируется использоваться, только для входа в BIOS и при возможных неполадках, IPMI решения или PCI-Ex видеокарточки конечно вариант, но по деньгам дороже и в реализации сложнее, проще процессор с видеокарточкой взять, но есть еще одна проблема рассеиваемая мощность 84Вт у кулера запаса хватает (95Вт), а у материнской платы по паспорту написано 65Вт, но думаю должно работать, если нет, то придется менять процессор на E3-1286LV3, стоимостью в 2 раза дороже (примерно $774).
После долгих поисков, сравнений бенчмарков и технических характеристик, пришел к выводу, что наиболее подходящим будет процессор Intel Core i7-4790S c TDP 65W, он вполне производительный и энергоэффективный, судя по бенчмаркам производительность на уровне выбранного ранее E3-1286LV3 с TDP 84W.

С блоком питания тоже не все так просто, в городе небыло таких мощных 150Вт, пришлось заказать в китае на ebay.

С выбором дисков одни разочарования, сперва выбрал то, что хотел Seagate-ST2000NX0243 Жесткий диск емкостью 2 ТБ с интерфейсом SAS/SATA с низким энергопотреблением, но когда узнал, что он стоит 21000 рублей в лучшем случае, начал искать аналоги, но и тут проблема стоят они в 2 раза меньше и в объеме тоже меньше, по скорости хуже, поэтому взял самый простой вариант Hitachi Travelstar 7K1000 HTS721010A9E630, а ведь я планирую RAID1, значит диска нужно два! А если мне вдруг действительно понадобятся быстрые, ёмкие и компактные диски, то я всегда успею их докупить. Тем более у меня на материнской плате еще Mini-PCIe пустой, можно туда купить SSD с интерфейсом M.2 это будет дешевле и быстрее!

Память выбиралась очень просто, материнская плата не умеет ECC, максимальный объем 16Гб, максимальная частота 1600, процессор все это поддерживает, поэтому взял самую простую и дешевую с таймингами поменьше CL9, разница с аналогичной, но с таймингами CL11 была небольшой.

Корпус, самое интересное оставил на десерт, пока планирую уместить все в старый корпус, но еще не все детали из списка куплены, поэтому я еще выбираю корпуса, присматириваюсь, так сказать.
Пригляделся корпус Lian Li PC-Q05B Black:


1. Dynatron K199 Socket LGA1150 & Sandy Bridge LGA1155 & LGA1156.
2. Жесткий диск Enterprise Capacity 2.5 HDD.
3. Интерфейс M.2 Next Generation Form Factor и NGFF.
4. Сравнение процессоров Intel®.
5. CPU Mark by Socket Type: LGA 1150
6. minicase.net: E-W80
7. Intel D525MW mother board Mini PCI express slot not detect our card?

пятница, 24 июля 2015 г.

Ubuntu 14.04: Ускоряем работу Dash

На мой взгляд Unity Dash в Ubuntu перегружен лишним функционалом, например искать файлы удобнее в Nautilus, а приложения, доступные для установки лучше искать в Software Center, и самое важное выполнять онлайн поиск лучше в браузере. А вот установленные приложения вполне удобно искать в Dash.
Скрипт ниже выключает онлайн поиск и все линзы, кроме установленных приложений.
Код скрипта disable_all_scopes_enable_listed.sh:
#!/bin/sh

[ $(id -u) -eq 0 ] && echo 'Please run from NOT root user!' && exit 1

# Delete unwanted packages.
sudo apt-get purge -y unity-lens-shopping unity-lens-friends unity-scope-video-remote unity-lens-music unity-lens-photos unity-webapps-common

# Disable online search.
gsettings set com.canonical.Unity.Lenses remote-content-search none

# Manually remove the link from dash.
sudo rm /usr/share/applications/ubuntu-amazon-default.desktop

get_application() {
 find /usr/share/unity/scopes/ \( \
   -name "*.scope" \
   -not -name 'applications.scope' \
  \) -printf "'%P'," | sed 's/\//-/g;s/,$//'
}

# Disabling the scopes.
gsettings set com.canonical.Unity.Lenses disabled-scopes "[$(get_application)]"
gsettings get com.canonical.Unity.Lenses disabled-scopes

gsettings set com.canonical.Unity.Lenses always-search "['applications.scope']"
gsettings set com.canonical.Unity.Dash scopes "['home.scope', 'applications.scope']"

# Disable available apps.
gsettings set com.canonical.Unity.ApplicationsLens display-available-apps "false"
Посмотреть что еще можно покрутить в Unity на свой вкус можно простой командой:
gsettings list-recursively | grep Unity
Названия опций и их значения вполне интуитивно понятные, можно быстро разобраться что к чему.
Например отключить показ доступных приложений:
gsettings set com.canonical.Unity.ApplicationsLens display-available-apps "false"
Проверить результат можно так:
gsettings get com.canonical.Unity.ApplicationsLens display-available-apps
Сбросить настройки на дефолт можно например так:
gsettings reset-recursively com.canonical.Unity.Dash

1. How can I remove Amazon search results from the dash or disable the feature?
2. Remove unsafe packages from Ubuntu

понедельник, 15 июня 2015 г.

Ubuntu 14.04 Rhythmbox перестал реагировать на кнопки в indicator-sound

Столкнулся с проблемой, перестал работать индикатор звука в Ubuntu 14.04, а именно кнопка Play/Pause в Rhythmbox, поискал в интернете подобные проблемы и кое-что нашел:
$ gdbus call --session --dest org.mpris.MediaPlayer2.rhythmbox --object-path /org/mpris/MediaPlayer2 --method org.freedesktop.DBus.Properties.GetAll 'org.mpris.MediaPlayer2.Player'
Ошибка: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.mpris.MediaPlayer2.rhythmbox was not provided by any .service files
Как оказалось, я копался в плагинах Rhythmbox и отключил Интерфейс MPRIS D-Bus, не зная для чего он, но теперь я узнал зачем он нужен из [ 2 ] и включил, после чего индикатор заработал в штатном режиме.

1. vlc sound menu integration broken 14.04
2. Rhythmbox controls and track info broken

понедельник, 1 июня 2015 г.

Zabbix: TCP connections

Скрипты и файлы конфигурации для мониторинга состояния TCP соединений.

Шаблон для zabbix:


    2.0
    2015-05-31T06:58:27Z
    
        
            Linux servers
        
    
    
        
    
    
        
            {Template UnixTcp:tcp.establ.last(0)}>10000
            Too many ESTABLISHED connections on {HOST.NAME}
            
            0
            3
            
            0
            
        
        
            {Template UnixTcp:tcp.timew.last(0)}>30000
            Too many TIME_WAIT connections on {HOST.NAME}
            
            0
            3
            
            0
            
        
    
    
        
            TCP Connections
            900
            200
            0.0000
            100.0000
            1
            1
            1
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    6
                    1
                    009900
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.establ
                    
                
                
                    3
                    1
                    9999FF
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.closew
                    
                
                
                    0
                    1
                    3333FF
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.timew
                    
                
                
                    5
                    1
                    DDDD00
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.synrecv
                    
                
                
                    1
                    1
                    FFFF66
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.listen
                    
                
                
                    4
                    1
                    BBBB00
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.synsent
                    
                
                
                    2
                    1
                    DDDDDD
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.finw1
                    
                
                
                    1
                    1
                    CCCCCC
                    0
                    2
                    0
                    
                        Template UnixTcp
                        tcp.finw2
                    
                
            
        
    

Для удобства установки различных нестандартных метрик для мониторинга я использую директиву Include=/etc/zabbix/zabbix_agentd.conf.d/ после чего можно добавлять отдельные файлы, в которых будут все опции, необходимые для работы необходимой метрики, в данном случае: /etc/zabbix/zabbix_agentd.conf.d/tcp_status.conf:
UserParameter=tcp.all,/etc/zabbix/scripts/tcp_status.sh
Теперь создадим скрипт, который осуществляет доставку данных в zabbix - /etc/zabbix/scripts/tcp_status.sh:
#!/bin/sh

# WARNING: Correctly setup 'Hostname=' in config is REQUIRED!

/usr/bin/env ss -ant | \
 awk '{
  if (NR>1) {
   state[$1]++;
  }
 }
 END {
  for (i in state) {
   s=i;
   sub(/ESTAB/, "establ", s);
   sub(/LISTEN/, "listen", s);
   sub(/SYN-SENT/, "synsent", s);
   sub(/SYN-RECV/, "synrecv", s);
   sub(/FIN-WAIT-1/, "finw1", s);
   sub(/FIN-WAIT-2/, "finw2", s);
   sub(/CLOSE-WAIT/, "closew", s);
   sub(/TIME-WAIT/, "timew", s);
   print "- tcp."s, state[i]
  }
 }' | /usr/bin/env zabbix_sender \
 --config /etc/zabbix/zabbix_agentd.conf \
 --input-file - >/dev/null 2>&1
echo $?
exit 0
И сразу выставляем правильные права на скрипт:
chmod 755 /etc/zabbix/scripts/tcp_status.sh
chown zabbix:zabbix /etc/zabbix/scripts/tcp_status.sh
Если каталога /etc/zabbix/scripts у вас еще нет, то его нужно создать:
mkdir /etc/zabbix/scripts
chmod 755 /etc/zabbix/scripts
chown zabbix:zabbix /etc/zabbix/scripts
Стоит отметить тот факт, что в скрипте используется ss (из пакета iproute2), вместо netstat, замеры и опыт использования показал, что ss быстрее. Все почти готово, теперь можно зайти в панель zabbix и добавить нужному хосту новый шаблон Template UnixTcp.

воскресенье, 31 мая 2015 г.

zabbix: мониторинг nginx status.

Скрипты и файлы конфигурации для мониторинга состояния nginx.

Шаблон для zabbix 2.2:


    2.0
    2015-11-07T18:31:03Z
    
        
            Templates
        
    
    
        
    
    
        
            {Template App nginx:proc.num[nginx].last(0)}=0
            Nginx is down on {HOST.NAME}
            
            0
            4
            
            0
            
        
        
            {Template App nginx:nginx.ping[{HOST.HOST}].min(#10)}>0.01
            Nginx is slow to respond on {HOST.NAME}
            
            0
            2
            
            0
            
        
        
            {Template App nginx:nginx.ping[{HOST.HOST}].last()}<0
            Nginx response is invalid on {HOST.NAME}
            
            0
            3
            Nginx is not available via configured url
            0
            
        
    
    
        
            Nginx ping
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            1
            0
            0
            0
            
                
                    0
                    2
                    009900
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.ping[{HOST.HOST}]
                    
                
            
        
        
            Nginx status
            900
            200
            0.0000
            100.0000
            0
            0
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    1
                    0
                    FF3333
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.connections.writing
                    
                
                
                    0
                    0
                    009900
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.connections.active
                    
                
                
                    3
                    0
                    0000FF
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.connections.reading
                    
                
                
                    2
                    0
                    FF33FF
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.connections.waiting
                    
                
            
        
        
            Nginx workload
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    2
                    0
                    009900
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.accepts
                    
                
                
                    0
                    0
                    C80000
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.requests
                    
                
                
                    1
                    0
                    3333FF
                    0
                    2
                    0
                    
                        Template App nginx
                        nginx.handled
                    
                
            
        
    
Шаблон для zabbix 2.4:


    2.0
    2015-05-31T06:58:40Z
    
        
            Templates
        
    
    
        
    
    
        
            {Template APP nginx:proc.num[nginx].last(0)}=0
            Nginx is down on {HOST.NAME}
            
            0
            4
            
            0
            
        
        
            {Template APP nginx:nginx.ping[{HOST.HOST}].min(#10)}>0.01
            Nginx is slow to respond on {HOST.NAME}
            
            0
            2
            
            0
            
        
        
            {Template APP nginx:nginx.ping[{HOST.HOST}].last()}<0
            Nginx responce is invalid on {HOST.NAME}
            
            0
            3
            Nginx is not available via configured url
            0
            
        
    
    
        
            Nginx ping
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            1
            0
            0
            0
            
                
                    0
                    2
                    009900
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.ping[{HOST.HOST}]
                    
                
            
        
        
            Nginx status
            900
            200
            0.0000
            100.0000
            0
            0
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    1
                    0
                    FF3333
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.connections.writing
                    
                
                
                    0
                    2
                    009900
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.connections.active
                    
                
                
                    2
                    0
                    FF33FF
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.connections.waiting
                    
                
                
                    3
                    0
                    0000FF
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.connections.reading
                    
                
            
        
        
            Nginx workload
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    2
                    0
                    009900
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.accepts
                    
                
                
                    1
                    0
                    3333FF
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.handled
                    
                
                
                    0
                    0
                    FF0000
                    0
                    2
                    0
                    
                        Template APP nginx
                        nginx.requests
                    
                
            
        
    

Для удобства установки различных нестандартных метрик для мониторинга я использую директиву Include=/etc/zabbix/zabbix_agentd.conf.d/ после чего можно добавлять отдельные файлы, в которых будут все опции, необходимые для работы необходимой метрики, в данном случае: /etc/zabbix/zabbix_agentd.conf.d/nginx_status.conf:
UserParameter=nginx.ping,sh /etc/zabbix/scripts/nginx_status.sh
Конфигурация для nginx файл nginx_status_http.conf:
server {
 listen 127.0.0.1:80;
 server_name localhost;

 keepalive_timeout 0;
 location = /nginx_status {
  stub_status on;
#  access_log off;

  allow 127.0.0.1;
  deny all;
 }

 access_log /var/log/nginx/nginx_status_http.access.log;
 error_log /var/log/nginx/nginx_status_http.error.log;
}
Нужно положить этот конфигурационный файл nginx в /etc/nginx/sites-available/nginx_status_http.conf:
ln -s /etc/nginx/sites-available/nginx_status_http.conf /etc/nginx/sites-enabled/nginx_status_http.conf
service nginx reload
Затем необходимо создать скрипт, который осуществляет доставку данных в zabbix - /etc/zabbix/scripts/nginx_status.sh:
#!/bin/sh

URL='http://localhost/nginx_status'
TMP='/tmp/nginx-ping.tmp'
ZABBIX_SENDER='/usr/bin/env zabbix_sender'
CONFIG='/etc/zabbix/zabbix_agentd.conf'

# WARNING: Correctly setup 'Hostname=' in config is REQUIRED!
# REQUIRED binaries: GNU time, wget, awk, zabbix_sender.

(/usr/bin/env time -f %e /usr/bin/env wget --no-http-keep-alive --quiet --timeout 9 -O - $URL) 2>$TMP | \
awk '/Active connections/ {active=int($NF)}
 / ([0-9]+) ([0-9]+) ([0-9]+)/ {accepts=int($1); handled=int($2); requests=int($3)}
 /Reading:/ {reading=int($2); writing=int($4); waiting=int($6)}
 END {
  print "- nginx.connections.active", active;
  print "- nginx.connections.reading", reading;
  print "- nginx.connections.writing", writing;
  print "- nginx.connections.waiting", waiting;

  print "- nginx.accepts", accepts;
  print "- nginx.handled", handled;
  print "- nginx.requests", requests;
 }' | $ZABBIX_SENDER \
 --config $CONFIG \
 --input-file - >/dev/null 2>&1

[ -f $TMP ] && cat $TMP && rm $TMP

exit 1
И сразу выставляем правильные права на скрипт:
chmod 600 /etc/zabbix/scripts/nginx_status.sh
chown zabbix:zabbix /etc/zabbix/scripts/nginx_status.sh
Если каталога /etc/zabbix/scripts у вас еще нет, то его нужно создать:
mkdir /etc/zabbix/scripts
chmod 700 /etc/zabbix/scripts
chown zabbix:zabbix /etc/zabbix/scripts
Для корректной работы необходимо вызывать напрямую бинарный файл /usr/bin/time, не путать со встроенной bash функцией time, в Linux есть с этим большая, на мой взгляд, проблема, т.к. bash time работает некорректно, в отличие от /usr/bin/time, к тому же и формат ответа разный, установить можно: Для Ubuntu, debian:
apt-get install time
Для CentoOS и подобных:
yum install time
Все почти готово, теперь можно зайти в панель zabbix и добавить нужному хосту новый шаблон Template APP nginx.
1. Github repo:zabbix_nginx