User Tools

Site Tools


сервис_zabbix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
сервис_zabbix [2025/05/26 06:09]
val [Пример изменения конфигурации через Zabbix API]
сервис_zabbix [2026/04/17 15:16] (current)
val [Настройка уведомлений о событиях]
Line 161: Line 161:
 Server=server Server=server
 DBName=/​var/​lib/​zabbix/​zabbix.db DBName=/​var/​lib/​zabbix/​zabbix.db
 +</​code>​
 +=== zabbix-proxy docker-compose ===
 +
 +  * [[https://​github.com/​kpod13/​docker-compose-zabbix-proxy]]
 +
 +<​code>​
 +lan:​~/​zabbix-proxy#​ cat docker-compose.yml
 +</​code><​code>​
 +services:
 +  zabbix-proxy:​
 +    environment:​
 +      ZBX_CONFIGFREQUENCY:​ '​60'​
 +      ZBX_HOSTNAME:​ lan
 +      ZBX_PROXYCONFIGFREQUENCY:​ '​60'​
 +      ZBX_SERVER_HOST:​ server.corpX.un
 +      ZBX_TLSCONNECT:​ psk
 +      ZBX_TLSPSK: aa.............................................................7c
 +      ZBX_TLSPSKIDENTITY:​ lan
 +    image: zabbix/​zabbix-proxy-sqlite3:​ubuntu-7.0-latest
 +    ports:
 +    - published: 10051
 +      target: 10051
 +    restart: always
 +    stop_grace_period:​ 1m
 </​code>​ </​code>​
  
Line 245: Line 269:
   Report problems to Zabbix administrators->​Enable   Report problems to Zabbix administrators->​Enable
   ...   ...
 +</​code>​
 +
 +=== Настройка уведомлений о срабатывании сервиса ===
 +<​code>​
 +Configuration/​Alerts->​Actions->​Service actions
 +  Name: Mail Action
 +  Conditions: Service equals Corp Mail
 +  Operations: Send message to user groups: Zabbix administrators via all media
 +  Recovery operations: Notify all involved
 </​code>​ </​code>​
  
Line 258: Line 291:
  
   * [[Сервис OpenFire]] Настройка DNS, Установка,​ Spark   * [[Сервис OpenFire]] Настройка DNS, Установка,​ Spark
-  * [[Сервис OpenFire#​bash xmpp]]+
  
 <​code>​ <​code>​
Line 266: Line 299:
  
 # cat /​var/​lib/​zabbix/​.sendxmpprc # cat /​var/​lib/​zabbix/​.sendxmpprc
-admin@corpX.un Pa$$w0rd+</​code>​
  
 +  * [[Сервис OpenFire#​bash xmpp]]
 +
 +<​code>​
 # chmod 600 /​var/​lib/​zabbix/​.sendxmpprc # chmod 600 /​var/​lib/​zabbix/​.sendxmpprc
  
Line 277: Line 313:
  
 logger -t zabbix_xmpp -p local0.info "$1, $2, $3" logger -t zabbix_xmpp -p local0.info "$1, $2, $3"
 +
 +#echo "​$(date) $1, $2, $3" >>/​tmp/​zabbix_xmpp.txt
  
 to=$1 to=$1
Line 282: Line 320:
 body=$3 body=$3
  
-cat <<EOF | sendxmpp -f /​var/​lib/​zabbix/​.sendxmpprc ​-s "$subject" ​"$to"+cat <<EOF | sendxmpp -f /​var/​lib/​zabbix/​.sendxmpprc "$to" 
 +$subject 
 $body $body
 EOF EOF
 </​code><​code>​ </​code><​code>​
-Administration->​Media types->​Create media type+Administration/Alerts->Media types->​Create media type
   Name: XMPP   Name: XMPP
   Type: Script   Type: Script
Line 295: Line 335:
     {ALERT.MESSAGE}     {ALERT.MESSAGE}
   Message teplates   Message teplates
-    ​Problem +    ​Service 
-    ​Problem ​recovery +    ​Service ​recovery 
-    ​Problem ​update+    ​Service ​update
 </​code>​ </​code>​
 <​code>​ <​code>​
-Administration->​Users->​student->Media+Administration->​Users->​Admin->Media
   Type: XMPP   Type: XMPP
-  Send to: student@corpX.un+  Send to: user1@corpX.un
 </​code>​ </​code>​
  
Line 671: Line 711:
 </​code>​ </​code>​
 ==== Вычисляемые элементы ==== ==== Вычисляемые элементы ====
 +
 +  * [[https://​www.zabbix.com/​documentation/​current/​en/​manual/​config/​items/​itemtypes/​calculated/​aggregate]]
  
 <​code>​ <​code>​
Line 699: Line 741:
  
 last(openvpn1:​openvpn.server.clients)+last(openvpn2:​openvpn.server.clients)+last(openvpn3:​openvpn.server.clients) last(openvpn1:​openvpn.server.clients)+last(openvpn2:​openvpn.server.clients)+last(openvpn3:​openvpn.server.clients)
 +#​---------------------
 +
 +sum(last_foreach(/​*/​active_meetings.sh["​{HOST.CONN}"​]?​[group="​webinars"​]))
 </​code>​ </​code>​
 +
 +
 +
 ==== Web сценарии ==== ==== Web сценарии ====
  
Line 1171: Line 1219:
  
 ==== Создание своих шаблонов ==== ==== Создание своих шаблонов ====
 +
 +  * Лучше, поискать готовые:​
 +  * [[https://​git.zabbix.com/​projects/​ZBX/​repos/​zabbix/​browse/​templates]]
 +  * [[https://​github.com/​zabbix/​community-templates]]
  
   * Пример с использованием макроса   * Пример с использованием макроса
Line 1267: Line 1319:
  
   * Пример разработки собственного скрипта для LLD   * Пример разработки собственного скрипта для LLD
 +
 +  * Сервис DHCP [[Сервис DHCP#​Статистика DHCP сервера]]
   * [[Обработка XML файлов]]   * [[Обработка XML файлов]]
   * [[https://​stackoverflow.com/​questions/​12524437/​output-json-from-bash-script|Output JSON from Bash script]]   * [[https://​stackoverflow.com/​questions/​12524437/​output-json-from-bash-script|Output JSON from Bash script]]
 +
 +  * Язык программирования Python [[Язык программирования Python#​Zabbix LLD приложение]]
  
 <​code>​ <​code>​
Line 1275: Line 1331:
 #!/bin/bash #!/bin/bash
  
-echo -n '{"​data":​['+echo -n '​['​
  
 str=`/​usr/​bin/​dhcpd-pools -c /​etc/​dhcp/​dhcpd.conf -f x | \ str=`/​usr/​bin/​dhcpd-pools -c /​etc/​dhcp/​dhcpd.conf -f x | \
Line 1283: Line 1339:
 echo -n ${str::-1} echo -n ${str::-1}
  
-echo -n ']}'+echo -n '​]'​
 </​code><​code>​ </​code><​code>​
 gate# /​etc/​zabbix/​dhcp-pools-discovery.sh | jq gate# /​etc/​zabbix/​dhcp-pools-discovery.sh | jq
Line 1532: Line 1588:
 server.corp1.un:​~#​ /​root/​zab_set_map_name.sh 2 "ISP 1" server.corp1.un:​~#​ /​root/​zab_set_map_name.sh 2 "ISP 1"
 </​code>​ </​code>​
 +
 +===== zabbix Services sla best practice именования tag =====
 +
 +В Zabbix существует два основных типа тегов, которые критически важны для корректной работы SLA, и их часто путают. Ниже представлена лучшая практика именования для каждого типа, основанная на опыте сообщества и официальной документации.
 +
 +### 1. Теги проблем (Problem Tags) — Связь Триггера и Сервиса
 +Это теги, которые вы добавляете в **Trigger**. Когда триггер срабатывает,​ Zabbix смотрит на эти теги, чтобы понять,​ к какому именно Service (Сервису) относится проблема .
 +
 +**Главное правило**:​ Тег должен уникально идентифицировать конкретный экземпляр сервиса (например,​ конкретный веб-сервер или БД), чтобы вы могли рассчитывать SLA для каждого компонента отдельно .
 +
 +*   ​**Имя тега**: Используйте осмысленное имя, например `problem_tag`,​ `service` или `target`. Избегайте общих названий вроде `tag`.
 +*   ​**Значение тега**: Лучшая практика — использовать макрос `{HOST.NAME}` в комбинации с именем приложения. Это автоматически создаст уникальный идентификатор при клонировании триггеров на разные хосты.
 +
 +**Пример именования:​**
 +> **Имя:** `service`
 +> **Значение:​** `{HOST.NAME}_nginx`
 +
 +*   ​*Результат:​* Для хоста `web01` тег превратится в `web01_nginx`. Для хоста `db01` тег превратится в `db01_postgres` .
 +
 +### 2. Теги сервиса (Service Tags) — Связь Сервиса и SLA
 +Это теги, которые вы добавляете в конфигурацию **Service** (в дереве Services > Services). Они нужны для того, чтобы движок SLA знал, какие сервисы включать в отчет .
 +
 +**Главное правило**:​ Используйте бизнес-классификацию,​ а не технические детали. Тег должен отвечать на вопрос:​ "К какому бизнес-домену или команде относится этот сервис?"​ .
 +
 +**Пример именования:​**
 +*   ​**Имя:​** `SLA_Scope`
 +*   ​**Значение:​** `Critical_Payment_System`
 +
 +*   ​**Имя:​** `Team`
 +*   ​**Значение:​** `Backend_API`
 +
 +### 3. Механизм наследования и фильтрации (Best Practice End-to-End)
 +
 +Лучший способ построения архитектуры — цепочка:​ **Trigger (Problem Tag)** -> **Service (Problem Tags match)** -> **Service (Service Tag)** -> **SLA (Service Tags match)**.
 +
 +Вот пошаговый пример того, как настроить SLA для приложения "​CRM":​
 +
 +1.  **На триггере (Trigger):​**
 +    *   ​`problem_tag`:​ `{HOST.NAME}_crm_app` ​
 +
 +2.  **На дочернем сервисе (Child Service) — например,​ "​CRM_Web_01":​**
 +    *   ​*Вкладка Problem Tags:* Имя `problem_tag`,​ Значение `web01_crm_app` (чтобы поймать проблему).
 +    *   ​*Вкладка Tags:* Имя `application`,​ Значение `crm` .
 +
 +3.  **На родительском сервисе (Parent Service) — например,​ "CRM System":​**
 +    *   ​*Вкладка Tags:* Имя `application`,​ Значение `crm` (тег наследуется или прописывается явно).
 +
 +4.  **В конфигурации SLA отчета:​**
 +    *   ​*Вкладка Service tags:* Имя `application`,​ Значение `crm` .
 +
 +### 4. Ключевые правила и ограничения
 +
 +1.  **Регистр символов:​** Имена и значения тегов чувствительны к регистру (`PROBLEM` != `problem`). Выберите один формат (например,​ `snake_case` или `lowercase`) и придерживайтесь его везде .
 +2.  **Уникальность для SLA:** Если вы хотите,​ чтобы downtime одного сервера не валил весь SLA, убедитесь,​ что значения тегов проблем для разных хостов уникальны (используйте `{HOST.NAME}`). Если вы хотите считать SLA для кластера в целом (например,​ "​хотя бы один из трех жив"​),​ делайте тег общим .
 +3.  **Стандартизация названий:​** Избегайте пробелов и спецсимволов. Рекомендуемый формат:​ `category:​subcategory` или `scope:​value` (например,​ `env:​production`,​ `tier:​critical`). Это облегчает фильтрацию в Grafana или через API .
 +
 +### Итоговая схема (Cheat Sheet)
 +
 +| Сущность | Поле | Best Practice Значение | Назначение |
 +| :--- | :--- | :--- | :--- |
 +| **Trigger** | Имя Tag | `service` | Тип проверки |
 +| **Trigger** | Значение | `{HOST.NAME}_nginx` | Связка "​хост + роль"​ |
 +| **Service** | Problem Tags | Имя:​`service` Знач:​`web01_nginx` | Какой триггер слушать |
 +| **Service** | Service Tags | Имя:​`app` Знач:​`frontend` | Для группировки в отчете |
 +| **SLA** | Service Tags | Имя:​`app` Знач:​`frontend` | Какие сервисы включить в отчет |
 +
сервис_zabbix.1748228958.txt.gz · Last modified: 2025/05/26 06:09 by val