Template module windows services by zabbix agent active

И есть ли в этом смысл?Вот так, при помощи нехитрых манипуляций, можно смотреть красивые графики про десяток машин и один сервер. Но зачем?..Для тех, кто задумал...

И есть ли в этом смысл?

Вот так, при помощи нехитрых манипуляций, можно смотреть красивые графики про десяток машин и один сервер. Но зачем?..

Вот так, при помощи нехитрых манипуляций, можно смотреть красивые графики про десяток машин и один сервер. Но зачем?..

Для тех, кто задумался и сомневается, я решил описать кое-что из своего опыта.

Мониторинг вообще штука полезная, бесспорно. У меня лично в какой-то период возникло сразу несколько задач:

  1. Круглосуточно и непрерывно мониторить одну специфическую железку по ряду параметров;

  2. Мониторить у рабочих станций информацию о температурах, ЦП в первую очередь;

  3. Всякие мелочи в связи с широким внедрением удалёнки: количество подключений по VPN, общее состояние дополнительных виртуальных машин.

Подробнее про локальные задачи:

  1. Надо было оценить и наглядно представить данные об интернет-канале. Канал на тот момент представлял собой 4G-роутер Huawei. Это устройство было последним, но далеко не первым в огромном количестве плясок с бубном в попытках избавиться от разного рода нестабильностей. Забегая вперёд: забирать с него данные напрямую о качестве сигнала более-менее стандартными средствами оказалось невозможно, и даже добраться до этих данных — отдельный квест. Пришлось городить дендрофекальную конструкцию, которая, на удивление стабильно, и стала в итоге поставлять данные. Данные в динамике и в графическом представлении оказались настолько неутешительными, что позволили убедить всех причастных таки поменять канал, даже и на более дорогой;

  2. Данные о температуре процессора дают сразу несколько линий: можно обнаружить шифровальщик в процессе работы, наглядно сделать вывод о недостаточной мощности рабочей станции, найти повод провести плановую чистку, узнать о нарушении условий эксплуатации. Последний пункт особенно хорош: множество отказов оборудования и BSOD’ов в итоге нашли причину в «я ставлю обогреватель под стол, ну и свой баул, ну да, прям к этой решётке. А что? А я канпуктер развернула, а то неудобно»;

  3. Интерфейс того же OpenVPN… ну, он в общем даже и не интерфейс и оставляет желать любого другого. Отдельная история.

Как большой любитель велосипедить всё подряд, сначала я решил свелосипедить и это. Уже валялись под рукой всякие скрипты по сбору статистки, и html проекты с графиками на js, и какие-то тестовые БД… Но тут сработала жадность (и лень, чоужтам). А чего это, подумал я, самому опять корячиться, если в том же Zabbix уже куча всяких шаблонов, и помимо задач из списка можно будет видеть много чего ещё? Да и он бесплатный к тому же. Всего-то делов, виртуалку поднять да клиенты централизованно расставить. Потренируюсь с ним, опять же, он много где используется.

Итак, нам понадобятся:

  1. Виртуальная машина или физический хост. Zabbix нетребователен к ресурсам при небольшом количестве хостов на мониторинге: мне хватило одного виртуального процессора на 2ГГц и 4 Гб RAM за глаза;

  2. Любой инструмент для автоматического раскидывания zabbix-agent. При некотором скилле это можно делать даже через оригинальный WSUS, или просто батником с psexec, вариантов много. Также желательно запилить предварительно сконфигурированный инсталлятор агента — об этом ниже;

  3. Много желания пилить напильником. Скажу честно и сразу: из первоначального списка 3 из 3 реализовывалось руками на местности. Zabbix стандартной комплектации в такое не может.

У Zabbix много вариантов установки. В моём случае (я начинал с 4 LTS) сработала только установка руками в чистую, из собственного образа, OC в виртуальной машине на Hyper-V. Так что, коли не получится с первого раза, — не сдавайтесь, пробуйте. Саму процедуру подробнее описывать не буду, есть куча статей и хороший официальный мануал.

Вот так красиво это выглядит, когда применяется по назначению. Автор: Dotneft - собственная работа, CC BY-SA 4.0 https://commons.wikimedia.org/w/index.php?curid=73459928

Вот так красиво это выглядит, когда применяется по назначению. Автор: Dotneft — собственная работа, CC BY-SA 4.0 https://commons.wikimedia.org/w/index.php?curid=73459928

Про формирование инсталлятора агента: один из самых простых способов — использовать утилиты наподобие 7zfx Builder . Нужно будет подготовить:

  • файл zabbix_agentd.conf ;

  • файлы сторонних приложений и скриптов, используемых в userParameters (об этом ниже) ;

  • скрипт инсталлятора с кодом наподобие этого:

SETLOCAL ENABLEDELAYEDEXPANSION 
SET INSTDR=C:ZabbixAgent 
SET IP=192.168.100.10 
set ip_address_string="IPv4-адрес"

for /f "usebackq tokens=2 delims=:" %%F in (ipconfig ^| findstr /c:%ip_address_string%) do SET IP=%%F 
SET IP=%IP: =% 
ECHO SourceIP=%IP%>> "%INSTDR%confzabbix_agentd.conf" 
ECHO ListenIP=%IP%>> "%INSTDR%confzabbix_agentd.conf" 
ECHO Hostname=%COMPUTERNAME%>> "%INSTDR%confzabbix_agentd.conf"

"%INSTDR%binzabbix_agentd.exe" -c "%INSTDR%confzabbix_agentd.conf" -i 
net start "Zabbix Agent" 
ENDLOCAL

Кстати, об IP. Адрес в Zabbix является уникальным идентификатором, так что при «свободном» DHCP нужно будет настроить привязки. Впрочем, это и так хорошая практика.

Также могу порекомендовать добавить в инсталлятор следующий код:

sc failure "Zabbix Agent" reset= 30 actions= restart/60000

Как и многие сервисы, Zabbix agent под Windows при загрузке ОС стартует раньше, чем некоторые сетевые адаптеры. Из-за этого агент не может увидеть IP, к которому должен быть привязан, и останавливает службу. В оригинальном дистрибутиве при установке настроек перезапуска нет.

После этого добавляем хосты. Не забудьте выбрать Template – OS Windows. Если сервер не видит клиента — проверяем:

  1. IP-адрес;

  2. файрвол на клиенте;

  3. работу службы на клиенте — смотрим zabbix_agentd.log, он вполне информативный.

По моему опыту, сервер и агенты Zabbix очень стабильны. На сервере, возможно, придётся расширить пул памяти по active checks (уведомление о необходимости такого действия появляется в дашборде), на клиентах донастроить упомянутые выше нюансы с запуском службы, а также, при наличии UserParameters, донастроить параметр timeout (пример будет ниже).

Что видно сразу, без настроек?

Сразу видно, что Zabbix заточен под другое :) Но и об обычных рабочих станциях в конфигурации «из коробки» можно узнать много: идёт мониторинг оперативной памяти и SWAP, места на жёстких дисках, загрузки ЦП и сетевых адаптеров; будут предупреждения о том, что клиент давно не подключался или недавно перезагружен; агент автоматически создаёт список служб и параметров их работы, и сгенерирует оповещение о «необычном» поведении. Практически из коробки (со скачиванием доп. template’ов с офсайта и небольшой донастройкой) работает всё, что по SNMP: принтеры и МФУ, управляемые свитчи, всякая специфическая мелочь. Иметь алерты по тем же офисным принтерам в едином окне очень удобно.

В общем-то, очень неплохо, но…

Что доделывать?

Оооо. Ну, хотел повелосипедить, так это всегда пожалуйста. Прежде всего, нет алертов на события типа «критические» из системного лога Windows, при том, что механизм доступа к логам Windows встроенный, а не внешний, как Zabbix agent active. Странно, ну штош. Всё придётся добавлять руками.

Например

для записи и оповещения по событию «Система перезагрузилась, завершив работу с ошибками» (Microsoft-Windows-Kernel-Power, коды 41, 1001) нужно создать Item c типом Zabbix agent (active) и кодом в поле Key:

eventlog[System,,,,1001]

По этому же принципу создаём оповещения на другие коды. Странно, но готового template я не нашёл.

Cистема автоматизированной генерации по службам генерирует целую тучу спама. Часть служб в Windows предполагает в качестве нормального поведения тип запуска «авто» и остановку впоследствии. Zabbix в такое не может и будет с упорством пьяного сообщать «а BITS-то остановился!». Есть широко рекомендуемый способ избавления от такого поведения — добавление набора служб в фильтр-лист: нужно добавить в Template «Module Windows services by Zabbix agent», в разделе Macros, в фильтре {$SERVICE.NAME.NOT_MATCHES} имя службы в формате RegExp. Получается список наподобие:

^RemoteRegistry|MMCSS|gupdate|SysmonLog|
clr_optimization_v.+|clr_optimization_v.+|
sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|
MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|
dbupdate|DoSvc|BITS.*|ShellHWDetection.*$

И он не работает работает с задержкой в 30 дней.

После добавления служб в фильтр триггеры будут висеть ещё 30 дней. Этот срок, впрочем, тоже можно настроить

После добавления служб в фильтр триггеры будут висеть ещё 30 дней. Этот срок, впрочем, тоже можно настроить

Про службы, автоматически генерируемые в Windows 10, я вообще промолчу.
Нет никаких температур (но это, если подумать, ладно уж), нет SMART и его алертов (тоже отдельная история, конечно). Нет моих любимых UPS.

Некоторые устройства генерируют данные и алерты, работу с которыми надо выстраивать. В частности, например, управляемый свитч Tp-Link генерирует интересный алерт «скорость на порту понизилась». Почти всегда это означает, что рабочая станция просто выключена в штатном режиме (ушла в S3), но сама постановка вопроса заставляет задуматься: сведения, вообще, полезные — м.б. и драйвер глючит, железо дохнет, время странное…

Некоторые встроенные алерты требуют переработки и перенастройки. Часть из них не закрывается в «ручном» режиме по принципу «знаю, не ори, так надо» и создаёт нагромождение информации на дашборде.

Короче говоря, многое требует допиливания напильником под местные реалии и задачи.

После допиливания – примерно так

После допиливания – примерно так

О локальных задачах

Всё, что не встроено в Zabbix agent, реализуется через механизм Zabbix agent (active). Суть проста: пишем скрипт, который будет выдавать нужные нам данные. Прописываем наш скрипт в conf:

UserParameter=имя.параметра,путькскрипту 

Нюансы:

  • если хотите получать в Zabbix строку на кириллице из cmd — не надо. Только powershell;

  • если параметр специфический – для имени нужно будет придумать и сформулировать дерево параметров, наподобие «hardware.huawei.modem.link.speed» ;

  • отладка и стабильность таких параметров — вопрос и скрипта, и самого Zabbix. Об этом дальше.

Хотелка №1: температуры процессоров рабочих станций

В качестве примера реализуем хотелку «темература ЦП рабочей станции». Вам может встретиться вариант наподобие:

wmic /namespace:rootwmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature

но это не работает (вернее, работает не всегда и не везде).
Самый простой способ, что я нашёл — воспользоваться проектом OpenHardwareMonitor. Он свои результаты выгружает прямо в тот же WMI, так что температуру получим так:

@echo OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET TMPTMP=0 
for /f "tokens=* skip=1 delims=" %%I in ('wmic /namespace:rootOpenHardwareMonitor PATH Sensor WHERE Identifier^="/intelcpu/0/temperature/1" get Value') DO (     
	SET TMPTMP=%%I && GOTO :NXT 
) 
:NXT  
ECHO %TMPTMP% 
ENDLOCAL 
GOTO :EOF

Конечно, при условии, что OHM запущен. В текущем релизе OHM не умеет работать в качестве Windows service. Так что придётся либо смущать пользователей очередной иконкой в трее, либо снова городить свой инсталлятор и запихивать OHM в сервисы принудительно. Я выбрал поcледнее, создав инсталляционный cmd для всё того же 7zfx Builder наподобие:

nssm install OHMservice "%programfiles%OHMOpenHardwareMonitor.exe" 
timeout 3 
net start "OHMservice" 
del nssm.exe /Q

Два момента:

  1. NSSM — простая и достаточно надёжная утилита с многолетней историей. Применяется как раз в случаях, когда ПО не имеет режима работы «сервис», а надо. Во вредоносности утилита не замечена;

  2. Обратите внимание на «intelcpu» в скрипте получения температуры от OHM. Т.к. речь идёт о внедрении в малом офисе, можно рассчитывать на единообразие парка техники. Более того, таким образом лично у меня получилось извлечь и температуру ЦП от AMD. Но тем не менее этот пункт требует особого внимания. Возможно, придётся модифицировать и усложнять инсталлятор для большей универсальности.

Работает более чем надёжно, проблем не замечено.

Хотелка № 2: получаем и мониторим температуру чего угодно

Понадобятся нам две вещи:

  1. Штука от братского китайского народа: стандартный цифровой термометр DS18B20, совмещённый с USB-UART контроллером. Стоит не сказать что бюджетно, но приемлемо;

  2. powershell cкрипт:

param($cPort='COM3')

$port= new-Object System.IO.Ports.SerialPort $cPort,9600,None,8,one

$port.Open()
$tmp = $port.ReadLine()
$port.Close()

$tmp = $tmp -replace "t1="
if (([int]$tmp -lt 1) -or ([int]$tmp -gt 55)){

	#echo ("trigg "+$tmp)
	$port.Open()
	$tmp = $port.ReadLine()
	$port.Close()

	$tmp = $tmp -replace "t1="
} 
echo ($tmp)

Связка работает достаточно надёжно, но есть интересный момент: иногда, бессистемно, появляются провалы или пики на графиках:

Тесты показали, что проблема в самом Zabbix, а данные с китайских датчиков приходят верные. Детальное рассмотрение пиков и провалов выявило неожиданный факт: похоже Zabbix иногда получает и/или записывает в БД не полное значение, а «хвост». Т.е., например, 1.50 от значения 21.50. При этом положение точки не важно — может получить и 1.50, и 50, и даже 0. Как так происходит, мне выяснить пока не удалось. Изменение timeout на поведение не влияет никак, ни в большую, ни в меньшую сторону.
Наверное, стоило бы написать багрепорт. Но уже вышел 6.0 LTS (у меня 5) и обновляться в текущей ситуации, пожалуй, не буду.

Хотелка № 3: OpenVPN подключения

Template’ов для OpenVPN и Zabbix существует довольно много, но все они реализованы на том или ином sh под *nix’ы . В свою очередь, «dashboard» OpenVPN-сервера представляет из себя, по сути, вывод утилиты в консоль, который пишется в файл по событиям. Мне лень было считать трафик по отдельным пользователям и вообще делать их discover, т.к. подключений и пользователей немного. Ограничился текущим количеством подключений:

$openvpnLogPath = "C:OpenVPNconfig"
$openvpnLogName = "openvpn-status.log"

try { 
	$logData = Get-Content $openvpnLogPath$openvpnLogName -ErrorAction Stop
}
catch{
	
	Write-Host("Missing log file")
	exit 1
}

$logHeader = "OpenVPN CLIENT LIST"
$logHeader2 = "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since"
$logMark1 = "ROUTING TABLE"

if ($logData[0] -ne $logHeader -or $logData[2] -ne $logHeader2 ){
	
	Write-Host("Bad log file")
	exit 1
}

$i = 0
foreach ($tmpStr in ($logData | select -skip 3)) {
	
	if ($tmpStr -eq $logMark1) {break}
	$i++
}

Write-Host($i)
exit 0

Хотелка № 4: спецжелезка 1

Для большого количества специфического оборудования существуют написанные энтузиастами Template’ы. Обычно они используют и реализуют функционал, уже имеющийся в утилитах к этим железкам.

Боли лирическое отступление

установив один из таких темплейтов, я узнал, что «нормальная рабочая» температура чипа RAID-контроллера в серваке — 65+ градусов. Это, в свою очередь, побудило внимательнее посмотреть и на контроллер, и на сервер в целом. Были найдены косяки и выражены «фи»:

  1. Apaptec’у – за игольчатый радиатор из неизвестного крашеного силумина высотой чуть более чем нихрена, поток воздуха к которому закрыт резервной батарейкой с высотой больше, чем радиатор. Особенно мне понравилось потом читать у Adaptec того же «ну, это его нормальная рабочая температура. Не волнуйтесь». Ответственно заявляю: при такой «нормальной рабочей температуре» контроллер безбожно и непредсказуемо-предсказуемо глючил;

  2. Одному отечественному сборщику серверов. «Берём толстый жгут проводов. Скрепляем его, чтобы он был толстым, плотным, надёжным. Вешаем это прямо перед забором воздуха вентиляторами продува серверного корпуса. Идеально!». На «полу» сервера было дофига места, длины кабелей тоже хватало, но сделали почему-то так.

Также был замечен интересный нюанс поведения, связанный с Zabbix. Со старым RAID контроллером при наличии в системном логе специфичных репортов, отваливался мониторинг температуры контроллера в Zabbix, но! при запуске руками в консоли скрипта или спец. утилиты температура выводилась корректно и без задержек.

Но полный функционал реализован далеко не всегда. В частности, мне понадобились температуры жёстких дисков с нового RAID-контроллера (ну люблю я температуры, что поделать :) ), которых в оригинальном темплейте не было. Пришлось самому реализовывать температуры и заодно autodiscover физических дисков: https://github.com/automatize-it/zabbix-lsi-raid/commit/1d3a8b3a0e289b8c2df637028475177a2b940689

Можно видеть, какой HDD и даже SSD стоит перед отсеком с БП сервера и хуже охлаждается

Можно видеть, какой HDD и даже SSD стоит перед отсеком с БП сервера и хуже охлаждается

Оригинальный репозиторий, вероятно, заброшен, как это довольно часто бывает.

Хотелка № 5, на десерт: спецжелезка 2

Как и обещал, делюсь опытом вырывания данных из беспроводной железки Huawei. Речь о 4G роутере серии B*. Внутри себя железка имеет ПО на ASP, а данные о качестве сигнала — RSSI, SINR и прочее — в пользовательском пространстве показывать не хочет совсем. Смотри, мол, картинку с уровнем сигнала и всё, остальное не твоего юзерского ума дело. К счастью, в ПО остались какие-то хвосты, выводящие нужное в plain JSON. К сожалению, взять да скачать это wget-ом не получается никак: мало того, что авторизация, так ещё и перед генерацией plain json требуется исполнение JS на клиенте. К счастью, существует проект phantomjs. Кроме того, нам понадобится перенесённая руками кука из браузера, где мы единожды авторизовались в веб-интерфейсе, вручную. Кука живёт около полугода, можно было и скрипт написать, но я поленился.

Алгоритм действий и примеры кода:

вызываем phantomjs с кукой и сценарием:

phantomjs.exe --cookies-file=cookie.txt C:cmdyota_signalscenery.js

Примеры сценариев:

//получаем общий уровень сигнала
var url = "http://192.168.2.1/html/home.html";
var page = require('webpage').create();
page.open(url, function(status) {
  //console.log("Status: " + status);
  if(status === "success") {
	
	var sgnl = page.evaluate(function() {
		return document.getElementById("status_img").innerHTML; //
	});
	
	var stt = page.evaluate(function() {
		return document.getElementById("index_connection_status").innerText; //
	});
	
	var sttlclzd = "dis";
	var sgnlfnd = "NA";
	
	if (stt.indexOf("Подключено") != -1) {sttlclzd = "conn";}
		
	if (sgnl.indexOf("icon_signal_01") != -1) {sgnlfnd = "1";}
	else {
		var tmpndx = sgnl.indexOf("icon_signal_0");
		sgnlfnd = sgnl.substring(tmpndx+13,tmpndx+14);
	}
	
	console.log(sttlclzd+","+sgnlfnd);
	
	var fs = require('fs');
		
		try {
			fs.write("C:\cmd\siglvl.txt", sgnlfnd, 'w');
		} catch(e) {
			console.log(e);
		}
    
  }
  phantom.exit();
});
//получаем технические параметры сигнала через какбэ предназначенный для этого "API"
var url = "http://192.168.2.1/api/device/signal"; 
var page = require('webpage').create();

  
	page.onLoadFinished = function() {
		
		//console.log("page load finished");
		//page.render('export.png');
		console.log(page.content);
		
		parser = new DOMParser();
		xmlDoc = parser.parseFromString(page.content,"text/xml");

		var rsrq = xmlDoc.getElementsByTagName("rsrq")[0].childNodes[0].nodeValue.replace("dB","");
		var rsrp = xmlDoc.getElementsByTagName("rsrp")[0].childNodes[0].nodeValue.replace("dBm","");
		var rssi = xmlDoc.getElementsByTagName("rssi")[0].childNodes[0].nodeValue.replace("dBm","").replace(">=","");
		var sinr = xmlDoc.getElementsByTagName("sinr")[0].childNodes[0].nodeValue.replace("dB","");
		
		var fs = require('fs');
		
		try {
			fs.write("C:\cmd\rsrq.txt", rsrq, 'w');
			fs.write("C:\cmd\rsrp.txt", rsrp, 'w');
			fs.write("C:\cmd\rssi.txt", rssi, 'w');
			fs.write("C:\cmd\sinr.txt", sinr, 'w');
		} catch(e) {
			console.log(e);
		}
		
		phantom.exit();
	};
	
	page.open(url, function() {
		page.evaluate(function() {
		});
    });

Конструкция запускается из планировщика задач. В Zabbix-агенте производится лишь чтение соответствующих файлов:

UserParameter=internet.devices.huawei1.signal.level,type C:cmdsiglvl.txt 

Особое внимание на SINR. Он должен быть 10+. Ну, иногда и правда был. Около 4-5 утра обычно

Особое внимание на SINR. Он должен быть 10+. Ну, иногда и правда был. Около 4-5 утра обычно

Требует постоянного присмотра, ручных прибиваний и перезапусков процессов, обновления кук. Но для такого шаткого нагромождения фекалий и палок работает достаточно стабильно.

Итого

Стоит ли заморачиваться на Zabbix, если у вас 20 машин и 1-2 сервера, да ещё и инфраструктура Windows?

Как можно понять из вышеизложенного, работы будет много. Я даже рискну предположить, что объёмы работ и уровень квалификации для них сравнимы с решением «свелосипедить своё с нуля по-быстрому на коленке».

Не стоит рассматривать Zabbix как панацею или серебряную пулю.

Тем не менее, использование уже готового и популярного продукта имеет свои преимущества — в первую очередь, это релевантный опыт для интересных работодателей.

А красивые графики дают усладу глазам и часто — новое видение процессов в динамике.

Если захочется внедрить, то могу пообещать, как минимум — скучно не будет! ;)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Мониторите малые офисы?


59.42%
Мониторю, Заббиксом
41


2.9%
Мониторю, не Заббиксом
2


2.9%
Мониторю, самописной системой
2


24.64%
Не мониторю, но вообще надо бы
17


10.14%
Не мониторю и не надо
7

Проголосовали 69 пользователей.

Воздержались 25 пользователей.

У только начинающих администраторов zabbix часто возникает вопрос. В чем отличие между активным и пассивным агентом? И какой агент лучше использовать. В данной статье постараемся ответить на эти вопросы.

Содержание

  1. Отличие активного и пассивного агента
  2. Какой агент лучше использовать?
  3. Создание шаблона для активного агента

Отличие активного и пассивного агента

При использовании пассивного агента, zabbix сервер отправляет запросы на zabbix агент, в соответствии с настройками элементов данных (например загрузку cpu, памяти и т.д). А в ответ получает значения этих данных.

При активном агенте. Агент сначала запрашивает у zabbix сервера список элементов данных, частота этих запросов указана в параметре RefreshActiveChecks в настройках zabbix агента, обычно это не чаще одного раза в час, если у вас изменения в настройка узлов сети происходят редко, то можно указать обновление раз в сутки что бы меньше нагружать сервер. После получения элементов данных zabbix агент отправляет данные на сервер в соответствием с настройками этих данных.

Как следует из описанного выше. Основное отличие заключается в том, что при пассивном агенте данные запрашиваются сервером, а при активном данные отправляются самими агентами.

Какой агент лучше использовать?

Какой агент использовать это дело вкуса. По моему мнению если у вас небольшая сеть и в которую редко добавляются новые узлы, то можно использовать пассивный агент.

Если же у вас большая сеть и на сервере десятки или сотни тысяч активных элементов данных. А также если в сети постоянно появляются новые узлы. То в этом случае лучше, а также если узлы находятся за НАТом то необходимо использовать активный zabbix агенты.

преимущества пассивного агента

  • Работает из «коробки»

Недостатки

  • Не работает если узел находится за NAT
  • В отличие от активного агента больше нагрузка на сервер

Преимущества активного агента

  • Меньшая нагрузка на сервер
  • Возможность работы за NAT
  • Авторегистрация узлов

Недостатки

  • Необходимо создавать шаблоны, в стандартной установке все шаблоны для пассивной проверке.

Создание шаблона для активного агента

Создать шаблон для активного zabbix агента из уже существующего  на самом деле очень просто. Рассмотрим на примере стандартного шаблона «Template OS Linux». Для этого открываем его на редактирование и смотрим какие еще шаблоны к нему присоединены, кликнув по вкладке «Присоединенные шаблоны»

Прямо здесь кликаем по имени «Template App Zabbix Agent» и в открывшемся шаблоне нажимаем кнопку «Полное клонирование». Переименовываем новый шаблон например в «Template App Zabbix Agent_activ». И жмем добавить. Затем открываем созданный шаблон на редактирование, переходим на вкладку «элементы данных» и выделяем все элементы данных.

После чего жмем «Массовое обновление». Выбираем тип «Zabbix агент (активный)»

И нажимаем «обновить»

Снова открываем шаблон «Template OS Linux» и здесь нажимаем кнопку «Полное клонирование». И создаем новый шаблон «Template OS Linux_activ». Открываем шаблон «Template OS Linux_activ» на редактирование и переходим на вкладку «Присоединенные шаблоны». Здесь отсоединяем шаблон «Template App Zabbix Agent» и присоединяем «Template App Zabbix Agent_activ».

Затем переходим в элементы данных и также с помощью кнопки «Массовое обновление» меняем тип на «Zabbix агент (активный)». Еще нам нужно изменить тип в правилах обнаружения. Для этого переходим на вкладку «Правила обнаружения» и нажимаем в каждом правиле на ссылку «Прототипы элементов данных». К сожалению здесь массовое обновление не работает. Поэтому проходимся по каждому элементу вручную и меняем тип.  Теперь у нас есть новый шаблон «Template OS Linux_activ», который работает с активным zabbix агентами. И уже его мы можем навешивать на хосты.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

This time we’re going to look at how to monitor any Windows Service with the Zabbix agent. Zabbix website guide is quite clear, but none the less here’s a short step-by-step guide on how to do it.

1. The Template

When you work with Zabbix, it’s always a good idea to start with a fresh new template, unless the changes you are making will effect ALL the hosts which the template is linked to. Rarely this is the case, and as such a separate template is a good idea. This gives you more control over what you’r doing and how it’s being implemented. To create a new template, navigate to Configuration -> Templates. Click on “New Template” and name it as you please, tutorial if you like. Any new template that you create will automatically be placed in the Templates group, which is good. Give the template a description if you want but other than this, there are no additional requirements for a template. To finish things off, click Add at the bottom of the Template tab to save it.

2. Applications and Items

Open up the template you just created and lets start off by creating a application in the “Applications” view. Click on Create Application on the top right corner of the Zabbix webpage and give the Application a name. If you look at any other template, that is created while Zabbix is installed, an Application contains one or more items. The application you create could be named “Services” or if you want to monitor more than one service that is required for the application to run, you could name it like the Application is. None of this matters, as long as it makes sense to you! Click Add once you’ve named the application and lets move on to the Items, where the magic happens.

Zabbix_Windows_serviceThis brand new template has no items, like it had no applications. We need to define what will be a part of this template and in this case, an Item equals to one service. Click “Create Item” on the top right corner and let’s create our first Windows Service. Give the Item a name, preferably something that describes what you are monitoring. The type should be “Zabbix agent” and the key is what’s important. The key should be service_state[service_name], and the service name you can find from services.msc (win+r to run services.msc). If we were to monitor that Windows Time service is running, open up the properties of “Windows Time“. What would be entered in service_state, is the service name from the properties; W32Time. This tells Zabbix what key to look for within the services. Zabbix gets back a numeric value if the service is running, stopped or something else, so type of information and data type is numeric (unsigned) and Decimal. Specify the update interval according to how critical the application is, 30 seconds should be more than enough for any service. Lastly select the Application you created from the Applications list and give the item a suiting description.

3. The trigger

To get any kind of alarm from the service, we need to create a trigger. Triggers define how to interact with the values that are returned tot he Zabbix Server by the agent. In this case, we receive a numeric decimal value that was defined in the item before. You can use the expression builder if you want, or write the expression yourself. If you use the expression builder, make sure you select the template when you choose what item to interact with.

Zabbix_Windows_service-triggerThe trigger is written inside { } brackets, and starts off with the template name. In my example, I’ve named the template “Template Windows Time Service“. Continued from that, the Item key is written with : in between, the key being in this example service_state[W32Time]. We want to trigger if the value changes, meaning we want to interact with the last value provided using .last().  We want an alert to trigger, if the service state is anything else than running, meaning we use the expression <>0. The value zero comes from how Zabbix agent presents the service state to us. You can find the list of service states here (search for service_state).

Give the trigger a severity that you think is appropriate and your done.

4. Testing

Apply this template to a Windows Host you are monitoring, and stop the service if possible. Within a short while, you should see a trigger on your dashboard regarding the service in question. That’s it, you can add multiple applications to this template, and multiple services. But in it’s simplest form, one template may contain one application with one item and it’s trigger.

You can download an example template here:


1

2

Доброго времени суток!

Развернули Zabbix, и почти сразу столкнулись с довольно весомой проблемой.
С машин пользователей в логи (и на почту) валится целая куча мусора, которая не является важной или существенной. К примеру: «Problem started at 16:20:06 on 2020.08.04 Problem name: «sppsvc» (Защита программного обеспечения) is not running (startup type automatic delayed)»

Понятно, что это все можно настроить, вот только как раз с этим проблема и возникла.

За сбор информации сервисов винды отвечает шаблон Template OS Windows by Zabbix agent. Пытаюсь отсечь неугодные мне службы следующим образом:

Макрос: {$SERVICE.NAME.MATCHES}
Значение: ^.*$

Макрос:{$SERVICE.NAME.NOT_MATCHES}
Значение: ^RemoteRegistry|MMCSS|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$ (те самые неважные службы)

Макрос: {$SERVICE.STARTUPNAME.MATCHES}
Значение:^automatic$

Макрос: {$SERVICE.STARTUPNAME.NOT_MATCHES}
Значение: ^manual|disabled$

Но как раз это и не срабатывает. Мусор как валился, так и валится.

Подскажите, что сделано не так? В какую сторону еще копать?

Заранее спасибо.

В этой статье мы отключим обнаружение ненужных служб Zabbix, которые после перезагрузки меняют свое название или запускаются по только необходимости.

Ваш Zabbix 5 спамит подобными ошибками?

Service «WpnUser_» (Смарт-карта) is not running (startup type automatic)
Service «OneSync_» (Смарт-карта) is not running (startup type automatic)

Переходим в Настройка — Шаблоны и выбираем Template OS Windows by Zabbix agent.

Обнаружение служб Windows Zabbix 5

Во вкладке присоединённые шаблоны можно отключить обнаружение служб совсем, отсоединив шаблон «Template Module Windows services by Zabbix agent».

Но мы изменим регулярные выражения, чтобы исключить обнаружение некоторых ненужных нам служб.

Для этого переходим в шаблон «Template Module Windows services by Zabbix agent» и кликаем на вкладку Макросы.

Обнаружение служб Windows Zabbix 5

Нам нужно добавить исключения в выражении {$SERVICE.NAME.NOT_MATCHES}

В примере я уберу обнаружение следующих служб:

WpnUser.* служба платформы подключенных пользовательских устройств.
CDPUserSvc.* служба платформы подключенных пользовательских устройств.
OneSyncSvc.* служба синхронизации некоторых узлов Windows.
SCardSvr служба позволяет компьютеру считывать смарт-карты.

Оригинальное регулярное выражение было таким:

^RemoteRegistry|MMCSS|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$

С внесенными исключениями:

^RemoteRegistry|MMCSS|WpnUser.|CDPUserSvc.|OneSyncSvc.|SCardSvr|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$

Теперь удалим узлы сети и добавим заново в нашу систему мониторинга Zabbix, чтобы избавиться от ошибок.

Если узлов много, то можно поменять время сохранения потерянных ресурсов в правилах обнаружения Windows services discovery, например:

Период сохранения потерянных ресурсов: 1h

Обнаружение служб Windows Zabbix 5

Поддерживаются следующие суффиксы времени: 30s, 1m, 2h, 1d

В более старых версиях Zabbix было достаточно поменять регулярное выражение по пути — Администрирование — Общие — Регулярные выражения:

^(MMCSS|gupdate|SysmonLog|clr_optimization.|DoSvc|sppsvc|MapsBroker|WpnUser.|OneSyncSvc.|gpsvc|BITS|CDPUserSvc.|.KMSELDI|stisvc|UsoSvc|TrustedInstaller|WbioSrvc|tmlisten|ntrts|ntrtscan|CDPSvc|SCardSvr|tiled.)$

In this tutorial, I will show you how to install Zabbix agent for Windows server using an MSI Installer package and how to monitor Windows server with Zabbix monitoring system.

Using this guide you can monitor almost the entire Windows OS family: Windows server 2012 R2, Windows Server 2016, Windows Server 2019, Windows 10, Windows 8 and Windows 7.

Installation is quite simple, just download and install the Zabbix agent MSI installer following steps 1 and 2, but if you want to learn more, read the full guide.

Zabbix 5.0 Dashboard

Zabbix dashboard

In short, Zabbix agent is a lightweight application that can collect various performance data from the operating system – such as CPU, memory, disk, and network interface utilization – and forward it to a central point (server) for storage and visualization. It runs on any modern operating system and is very flexible because its functionality can be extended with scripts and modules.

You can read more about the Zabbix agent on the Zabbix official site and if you stumbled on this tutorial by accident and you never heard of the Zabbix monitoring system, then stop whatever you doing and install it on your favorite Linux distribution in less than 10 minutes: CentOS/RHEL, Ubuntu, Debian, Rasberry Pi.

Need help with installing Zabbix agent on Linux OS? Check out this guide:
Zabbix Agent (Linux): Install on Ubuntu, CentOS, RHEL, Debian, etc.

Step 1: Download Zabbix Agent Installer for Windows (msi)

In this tutorial, I will use the latest Zabbix agent 5.0.2 LTS version, that version is compatible with Zabbix server 5.x or newer.

Windows Zabbix Agent v1 LTS v6.0.x Download: 64-bit or 32-bit
Windows Zabbix Agent v2 LTS v6.0.x (recommended) Download: 64-bit or 32-bit

I always recommend using the latest LTS version to take full advantage of new features and improved performance so make sure to download installer zabbix_agent2-6.0.7-windows-amd64-openssl.msi for 64-bit Windows or zabbix_agent2-6.0.7-windows-i386-openssl.msi for 32-bit Windows.

And don’t try to install a 32-bit package on 64-bit Windows because it won’t work!

Step 2: Install Zabbix Agent on Windows using MSI installer

I will install Zabbix Agent on Windows server using installation wizard but if you prefer command-line based installation check out section “Install Zabbix agent via Windows command-line (CMD)”

Just to make clear, in this tutorial I will use Zabbix server with IP address 192.168.5.43 to monitor Windows machine called w01services with IP address 192.168.5.22.

Double click on Zabbix MSI installer that you have downloaded in the previous step and click “Next” just as shown in the image below.

Install Zabbix Agent on Windows using MSI installer - Step 1

Install Zabbix Agent on Windows using MSI installer – Step 1

Accept the terms and click the “Next” button.

Install Zabbix Agent on Windows using MSI installer - Step 2

Install Zabbix Agent on Windows using MSI installer – Step 2

Define custom “Host name” or use fully qualified domain name (FQDN) of the Windows machine in the “Host name” field. Then enter IP address of the Zabbix server under “Zabbix server IP/DNS” and “Server or Proxy for active checks” field and you are done.

Install Zabbix Agent on Windows using MSI installer - Step 3

Install Zabbix Agent on Windows using MSI installer – Step 3

Select “Add agent location to the PATH” and go through the rest of the installation by clicking “Next“, “Install” and “Finish“.

Install Zabbix Agent on Windows using MSI installer - Step 4

Install Zabbix Agent on Windows using MSI installer – Step 4
Install Zabbix Agent on Windows using MSI installer - Step 5
Install Zabbix Agent on Windows using MSI installer – Step 5
Install Zabbix Agent on Windows using MSI installer - Step 6
Install Zabbix Agent on Windows using MSI installer – Step 6

You don’t need to configure Windows firewall manually because the MSI installer will automatically add a firewall rule to permit Zabbix TCP port 10050.

Finally, we need to check that the Zabbix agent is up and running.

Hold down the “Windows key” and press “R” on the keyboard, type “services.msc“, press “OK” and check the “Status” column for “Zabbix Agent” service exactly as shown in the picture below. Status should be “Started” if the installation was successful.

Picture showing how to check Zabbix agent service on Windows

How to check Zabbix agent service on Windows

WELL DONE!
You have successfully installed and configured Zabbix agent on Windows OS!
Now it’s time to add that Windows host to Zabbix monitoring system.

Step 3: Add Windows host to Zabbix monitoring system

You can add a host to existing host group or you can create a new host group for your Windows servers. I will create host group “Devices/OS/Windows“ using “Host groups” option under “Configuration” section on the Zabbix frontend. Click “Create host group” button, define “Group name” and click “Add” (you only need to create host group once):

Create Zabbix host group for Windows servers

Create Zabbix host group for Windows servers

Navigate to “Host” menu under “Configuration” tab and then click “Create host” option to create a host in Zabbix:

Add Windows host to Zabbix - Step 1

Add Windows host to Zabbix – Step 1

Define “Hostname” and set “Groups” using your newly created host group. Then set the IP address of the Windows server under “Agent interfaces” section

Add Windows host to Zabbix - Step 2

Add Windows host to Zabbix – Step 2

Switch to tab “Templates” and choose the “Template OS Windows by Zabbix agent” template under section “Link new template” by typing “OS Windows …”.

Add Windows host to Zabbix - Step 3

Add Windows host to Zabbix – Step 3

And you’re done! If you are interested in automating this whole process of adding Windows hosts to Zabbix see the section “Configure auto registration for Windows Zabbix agents“

Note that in this tutorial I m using a template “Template OS Windows by Zabbix agent” that can only monitor passive Zabbix agents. However, if you want to monitor your host using Zabbix agents in active mode use a template called “Template OS Windows by Zabbix agent active“. Check out the section Understanding Active vs Passive Zabbix Agent mode” to learn more about the differences between the active and passive agent mode.

Step 4: Check if Zabbix Agent is working correctly

You can check that the Zabbix agent is working properly by using the “Latest Data” option on the Zabbix frontend. Wait up to 5 minutes after you have installed and started Zabbix agent to allow for data to be collected. Look at columns “Last check” and “Latest value” and if they are updating then the agent is working.

How to check the latest data collected on the Zabbix host

How to check the latest data collected on the Zabbix host

Your agent should be working and collecting data by now, but if you experience any problems, restart Zabbix agent service and check the log “C:Program Fileszabbixzabbix_agentd.log“. And if there is nothing unusual in the log file then check the firewall – make sure that TCP port 10050 on the host (where Zabbix agent is installed) and TCP port 10051 on the Zabbix server side are open.

CONGRATULATIONS!
You have successfully installed Zabbix Agent and your Windows server is being monitored!
No need to do anything else as other steps are optional!

CONTINUE TO LEARN MORE:
How to manage Zabbix agent service on Windows
Auto registration of Zabbix agents (Windows OS)
Learn how to Secure Zabbix Agent
Alternative Zabbix agent installation via Windows command-line (CLI)
Understanding Active vs Passive Zabbix Agent mod

Step 5: Restart Zabbix Agent service on Windows

In the previous steps, we learned how to check the status of Zabbix agent service using the “services.msc” option, and now we will learn how to use the command line interface (CMD) to stop or start the agent and check its status.

Click on “Windows Start” button and type “cmd” in the search bar, right-click on “cmd” icon and select option “Run as administrator” and use these commands to start/stop the agent:

net stop "Zabbix Agent"
net start "Zabbix Agent"

And to check Zabbix agent service status use the command:

sc query "Zabbix Agent" | findstr /i "STATE"

You should get status “RUNNING” if the Zabbix agent is up and running!

Step 6: Configure auto registration for Windows Zabbix Agents

Adding one or two hosts to Zabbix manually is not a big problem. However, what if you need to add more servers to Zabbix? Or you just want to automate that tedious process of adding Windows hosts to Zabbix and linking them with the correct template and host group?

Don’t worry, you don’t have to write the script because Zabbix has a tool called “Auto registration”.

Before we configure Zabbix frontend, make sure that all of your Zabbix agents have “HostMetadata=Windows” line in their configuration file (default path: “C:Program Fileszabbixzabbix_agentd.conf“). And if that line does not exist, add it and restart the Zabbix Agent afterward. You can automate that via CLI like this:

echo HostMetadata=Windows >> C:"Program Files"zabbixzabbix_agentd.conf
net stop "Zabbix Agent"
net start "Zabbix Agent"

In the future always install the Zabbix agent on Windows with the “HostMetadata=Windows” parameter if you are planning to use the auto-registration feature!

Now that we’ve clarified that let’s configure auto-registration on the Zabbix frontend.

Go to the “Actions” tool under the “Configuration” section, then select “Auto registration” from the dropdown menu and click the “Create action” button.

How to configure auto-registration of agents (Windows servers) in Zabbix - Step 1

How to configure auto-registration of agents (Windows servers) in Zabbix – Step 1

On the “Action” tab define the “Name” of the action and add a “New condition” that will check if the “Host metadata” contains the word “windows”.

How to configure auto-registration of agents (Windows servers) in Zabbix - Step 2

How to configure auto-registration of agents (Windows servers) in Zabbix – Step 2

Then, change tab to “Operations” and add new operation.

How to configure auto-registration of agents (Windows servers) in Zabbix - Step 3

How to configure auto-registration of agents (Windows servers) in Zabbix – Step 3

Define “Operation type” as “Add to host group” and then select to which “Host groups” will Windows hosts be added when discovered. In my case, I will use my custom host group called “Devices/OS/Windows“.

How to configure auto-registration of agents (Windows servers) in Zabbix - Step 4

How to configure auto-registration of agents (Windows servers) in Zabbix – Step 4

After that, you need to add a new operation by setting “Link to the template” as “Operation type” and then select which templates will be linked with the newly discovered Windows hosts. In my example, I will use template “Template OS Windows by Zabbix agent” (passive checks)

How to configure auto-registration of agents (Windows servers) in Zabbix - Step 5

How to configure auto-registration of agents (Windows servers) in Zabbix – Step 5

Well done! Auto-registration is configured. Wait a few minutes and your Windows server should appear in Zabbix. From now on, every time you install a Zabbix agent on a Windows server, it will automatically be added to the Zabbix and linked with the appropriate host group and template.

Note, that you can add anything you want to the “HostMetadata” parameter. For example, you can have a host that has in Zabbix agent configuration file defined “HostMetadata=Windows:Tomcat:Prod” or another with “HostMetadata=Windows:MSSQL:Test“. For the first host, you can configure auto-registration to add to host groups: “Windows”, “Web servers” and “Production servers” and to link templates that can monitor Windows and Tomcat server. And the second host can be added to host groups: “Windows”, “Databases”, and “Test servers” and linked with templates that can monitor Windows server and Microsoft SQL database.

Using PSK encryption on the Zabbix agents? Then there is one more step left, you need to add your PSK identity and PSK key using the “Auto Registration” option under the “Administration“→”General” section just as shown in the image below:

How to configure PSK encryption for auto-registration in the Zabbix frontend

How to configure PSK encryption for auto-registration in the Zabbix frontend

From now on, during the auto registration process, Zabbix will configure provided PSK identity and key on each registered host.

Step 7: Configure PSK encryption on Zabbix Agent (Windows)

Zabbix supports encrypted communications between Zabbix server and Zabbix agent using Transport Layer Security (TLS) protocol v.1.2. You can use certificate-based and pre-shared key-based encryption (PSK), but in this tutorial we will configure PSK encryption.

In this step, I will show you how to configure PSK encryption on an already installed Zabbix agent, but keep in mind that all of these configurations can be configured during the installation

a. Generate PSK key

Generate 256-bit (32 bytes) PSK key with openssl command on Zabbix server (or use some other tool on Windows):

$ openssl rand -hex 32
1b38eac9d870a319f201fb1da989c081faba993e3d91940193224a100cdcdb86

On Windows server, create a new text file “ZabbixAgentPSK.txt” in the default Zabbix agent installation folder (“C:Program Fileszabbix“) and put that PSK key in the first line of the file. Don’t forget to save the file before closing.

b. Configure Zabbix agent to support PSK encryption

Open “C:Program Fileszabbixzabbix_agentd.conf” file with text editor (Notepad++) and add this configuration anywhere in file:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=C:Program FileszabbixZabbixAgentPSK.txt
TLSPSKIdentity=ZBX-AGENT-PSK-ID

Save and exit file. Keep in mind that “TLSPSKIdentity” can be anything, so for security reasons set something else – don’t use mine!

Don’t forget to restart Zabbix agent service after changing the configuration file!

c. Enable PSK encryption on the agent in Zabbix frontend

Communication between Zabbix agent and server is not yet encrypted because we have enabled PSK encryption on the agent side but not on the server side. 

We need to enable encryption on the server side so go to web frontend and select your “Hosts” tab under the “Configuration” section and find and click on your Windows hosts.

On the “Encryption” tab set PSK under “Connections from hosts” option and copy/paste “PSK identity” and “PSK” (key) that is configured on the Zabbix agent.

When you are done with configuration click the “Update” button just as shown in the image below. 

How to configure PSK encryption on Zabbix agent in the frontend

How to configure PSK encryption on Zabbix agent in the frontend

Keep in mind, that you can automate the configuration of the host encryption (PSK) on the frontend using the Zabbix auto registration process.

Step 8: Install Zabbix agent via Windows command-line (CMD)

This step is for those who prefer command-line based installation instead of wizard-based installation.

a. Run CMD as administrator

Click on “Windows Start” button and type “CMD” in the search bar, right-click on “cmd” and select option “Run as administrator“:

picture showing how to run windows cmd as a administrator

b. Download Zabbix agent

Download installer zabbix_agent2-6.0.7-windows-amd64-openssl.msi for 64-bit Windows or zabbix_agent2-6.0.7-windows-i386-openssl.msi for 32-bit Windowsand save it on a “C:” disk or somewhere else.

c. Change directory and set installation folder

Change directory to the path where you have downloaded the MSI file and set the installation folder with commands:

cd C://
SET INSTALLFOLDER=C:Program Fileszabbix

d. Install Zabbix agent using msiexec

Here is an example of Zabbix agent installation that will work for most people, just change parameteres “SERVER“, “SERVERACTIVE” and “HOSTNAME” to suit your enviroment.

msiexec /l*v log.txt /i zabbix_agent2-6.0.7-windows-amd64-openssl.msi /qn^
LOGTYPE=file^
LOGFILE="%INSTALLFOLDER%zabbix.log"^
SERVER=192.168.5.156^
LISTENPORT=10050^
SERVERACTIVE=192.168.5.156^
HOSTNAME=w01fileservice^
ENABLEPATH=1^
INSTALLFOLDER="%INSTALLFOLDER%"

Check “Zabbix agent” service status with the command:

sc query "Zabbix Agent" | findstr /i "STATE"

If the Zabbix agent is up and running then the status should be “RUNNING“.

Picture showing how to install Zabbix agent on Windows server using the command line (CMD)

Picture showing how to install Zabbix agent on Windows server using the command line (CMD)

Note, if you are planning to use the auto-registration feature don’t forget to add “HostMetadata=Windows” parameter to “zabbix_agentd.conf” and restart Zabbix agent afterward because Zabbix CLI installation doesn’t support “HostMetadata” parameter:

echo HostMetadata=Windows >> C:"Program Files"zabbixzabbix_agentd.conf
net stop "Zabbix Agent"
net start "Zabbix Agent"

e. Example of Zabbix agent installation with additional options

You can set almost any Zabbix agent parameter during installation, here is one example of an installation where many parameters are used.

SET INSTALLFOLDER=C:Program Fileszabbix

msiexec /l*v log.txt /i zabbix_agent2-6.0.7-windows-amd64-openssl.msi /qn^
LOGTYPE=file^
LOGFILE="%INSTALLFOLDER%zabbix.log"^
SERVER=10.10.10.162^
LISTENPORT=10055^
SERVERACTIVE=10.10.10.162^
HOSTNAME=cmr_server^
TLSCONNECT=psk^
TLSACCEPT=psk^
TLSPSKIDENTITY=CompanyPSKID^
TLSPSKFILE="%INSTALLFOLDER%company_key.psk"^
TLSCAFILE="c:tempfile1.txt"^
TLSCRLFILE="c:tempfil2.txt"^
TLSSERVERCERTISSUER="Company CA"^
TLSSERVERCERTSUBJECT="Company Cert"^
TLSCERTFILE="c:tempfile4.txt"^
TLSKEYFILE="c:tempfile5.txt"^
ENABLEPATH=1^
INSTALLFOLDER="%INSTALLFOLDER%"
SKIP=fw

Parameter “SKIP=fw” means that the firewall exception rule will not be added. Explanations of other parameters can be found in the official Zabbix documentation section Zabbix Agent (Windows).

Step 9: Understanding Active vs Passive Zabbix Agent mode

When using a Zabbix agent in active mode, it will connect to the Zabbix server via port 10051 to retrieve configuration and send data. This is a great feature that allows an active Zabbix agent to work behind the firewall and to offload the Zabbix server in large environments.

On the other hand, if you use a Zabbix agent in passive mode Zabbix server will initiate a connection via port 10050 and retrieve data from the agent. The Zabbix server will do this for every metric (item) every few minutes – which is very inefficient! Because of this, active mode is more recommended.

An additional advantage of the Zabbix agent in active mode is that it can read logs from the device and that is not possible if the Zabbix agent is used in passive mode.

Differences between Zabbix agent active  and passive check

Differences between Zabbix agent active and passive check (Source: Zabbix)

You can detect on Zabbix host if the agent is working in active or passive mode. Passive mode will show red or green “ZBX” icon in the agent status bar and active mode will show grey “ZBX” icon:

Detect on Zabbix host if the agent is working in active or passive mode

Learn how to setup Zabbix email notifications and escalations in a few minutes!

setup zabbix mail alerts and escalations

Содержание

  1. Отключение обнаружения Некоторых служб Windows в Zabbix 5
  2. Как отключить обнаружение служб в Zabbix 5
  3. Zabbix Documentation 5.4
  4. Sidebar
  5. Table of Contents
  6. Специфичные ключи элементов данных для Windows
  7. Ключи элементов данных
  8. Мониторинг служб Windows
  9. Обнаружение служб Windows
  10. Zabbix Documentation 5.4
  11. Sidebar
  12. Table of Contents
  13. 2 Zabbix агент на Microsoft Windows
  14. Настройка агента
  15. Установка агента службой Windows
  16. Запуск агента
  17. Остановка агента
  18. Удаление Windows службы агента
  19. Как мониторить работу службы через Zabbix
  20. Мониторинг списка запущенных процессов в Zabbix
  21. Введение
  22. Подготовка сервера к мониторингу процессов
  23. Настройка мониторинга за процессами
  24. Проверка отправки списка процессов
  25. Заключение

Отключение обнаружения Некоторых служб Windows в Zabbix 5

zabbix

В этой статье мы отключим обнаружение ненужных служб Zabbix, которые после перезагрузки меняют свое название или запускаются по только необходимости.

Ваш Zabbix 5 спамит подобными ошибками?

Service «WpnUser_» (Смарт-карта) is not running (startup type automatic)
Service «OneSync_» (Смарт-карта) is not running (startup type automatic)

Как отключить обнаружение служб в Zabbix 5

Переходим в Настройка — Шаблоны и выбираем Template OS Windows by Zabbix agent.

obnaruzhenie sluzhb windows zabbix 5

Во вкладке присоединённые шаблоны можно отключить обнаружение служб совсем, отсоединив шаблон «Template Module Windows services by Zabbix agent».

Но мы изменим регулярные выражения, чтобы исключить обнаружение некоторых ненужных нам служб.

Для этого переходим в шаблон «Template Module Windows services by Zabbix agent» и кликаем на вкладку Макросы.

obnaruzhenie sluzhb windows zabbix 5 234

Нам нужно добавить исключения в выражении

В примере я уберу обнаружение следующих служб:

WpnUser.* служба платформы подключенных пользовательских устройств.
CDPUserSvc.* служба платформы подключенных пользовательских устройств.
OneSyncSvc.* служба синхронизации некоторых узлов Windows.
SCardSvr служба позволяет компьютеру считывать смарт-карты.

Оригинальное регулярное выражение было таким:

^RemoteRegistry|MMCSS|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$

С внесенными исключениями:

^RemoteRegistry|MMCSS|WpnUser.|CDPUserSvc.|OneSyncSvc.|SCardSvr|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$

Теперь удалим узлы сети и добавим заново в нашу систему мониторинга Zabbix, чтобы избавиться от ошибок.

Если узлов много, то можно поменять время сохранения потерянных ресурсов в правилах обнаружения Windows services discovery, например:

Период сохранения потерянных ресурсов: 1h

obnaruzhenie sluzhb windows zabbix 5 2345

Поддерживаются следующие суффиксы времени: 30s, 1m, 2h, 1d

В более старых версиях Zabbix было достаточно поменять регулярное выражение по пути — Администрирование — Общие — Регулярные выражения:

Источник

Zabbix Documentation 5.4

Table of Contents

Специфичные ключи элементов данных для Windows

Ключи элементов данных

В таблице приводится подробная информация о ключах элементов данных, которые вы можете использовать только с Zabbix Windows агентом.

Обратите внимание, агент не может отправлять события из «Пересланные события» журнала.

Параметр режим поддерживается начиная с версии 2.0.0.
“Windows Eventing 6.0” поддерживается начиная с Zabbix 2.2.0.

Обратите внимание, что выбор не журнального типа информации для этого элемента данных приведет к потере локального штампа времени, а также важности журнала и информации о источнике.

Смотрите дополнительную информацию о мониторинге файлов журналов. net.if.list Список сетевых интерфейсов (включая тип, состояние, IPv4 адрес, описание интерфейса). Текст Поддерживается Zabbix агентом начиная с версии 1.8.1. Начиная с версии 1.8.6 Zabbix агента поддерживаются мультибайтные имена интерфейса. Отключенные интерфейсы не входят в список.

Обратите внимание, что включение/отключение некоторых компонентов Windows могут изменить порядок имён интерфейсов в Windows.

Обратите внимание, что для корректной работы этого элемента данных на 64-битной системе потребуется 64-битный Zabbix агент.

Элементы данных service.info[служба,state] and service.info[служба] вернут одинаковую информацию.

Обратите внимание, что только парам равный state у этого элемента данных возвращает значение по несуществующим службам (255).

Мониторинг статистики виртуальной памяти на основе:
Максимального количества памяти, которое может занять Zabbix агент.
Текущий предел выделенной памяти в системе или Zabbix агенте, смотря что меньше.

Этот ключ поддерживается начиная с Zabbix 3.0.7 и 3.2.3.

Мониторинг служб Windows

Это руководство содержит пошаговые инструкции по настройке мониторинга служб Windows. Предполагается, что Zabbix сервер и агент уже настроены и работают.

Шаг 1

Узнайте имя службы.

Вы можете получить имя, перейдя в оснастку MMC Службы и открыв свойства службы. На вкладке Общие вы должны увидеть поле называемое ‘Имя службы’. Значение которого и будет именем желаемой службы, которое вы будете использовать при настройке элемента данных для наблюдения.

Например, если вы хотите наблюдать службу “workstation”, то ваша служба скорее всего будет: lanmanworkstation.

Шаг 2

Элемент данных service.info[служба, ] возвращает информацию о указанной службе. В зависимости от требемой вам информации, укажите опцию парам, которая принимает следующие значения: displayname, state, path, user, startup или description. Значением по умолчанию является state, если парам не указан (service.info[служба]).

Тип возвращаемого значения зависит от выбранного парам: целое число при state и startup; строка символов при displayname, path и user; текст при description.

Имеется два преобразования значений Windows service state и Windows service startup type, которые сопоставляют числовое значение в веб-интерфейсе его текстовому представлению.

Обнаружение служб Windows

Низкоуровневое обнаружение дает возможность автоматического создания элементов данных, триггеров и графиков по различных объектам на компьютере. Zabbix может автоматически начать наблюдение за службами Windows на вашей машине, без необходимости знания точного имени службы или создания элементов данных по каждой службе вручную. Можно использовать фильтр для генерирования реальных элементов данных, триггеров и графиков только по интересующим службам.

Источник

Zabbix Documentation 5.4

Table of Contents

2 Zabbix агент на Microsoft Windows

Настройка агента

Zabbix агент работает службой Windows.

Вы можете запустить один экземпляр Zabbix агента или несколько экземпляров агента на хосте Microsoft Windows. Одиночный экземпляр может использовать файл конфигурации C:zabbix_agentd.conf по умолчанию или файл конфигурации, указанный в командной строке. В случае нескольких экземпляров каждый экземпляр агента должен иметь свой собственный файл конфигурации (один из экземпляров может использовать файл конфигурации по умолчанию).

Смотрите опции файла конфигурации для получения подробных сведений по настройке Zabbix Windows агента.

Параметр Hostname

Для выполнения активных проверок на узле сети Zabbix агента требуется, чтобы было задано имя хоста. Кроме того, указанное значение имени хоста на стороне агента должно в точности совпадать с “именем узла сети” указанном для этого узла сети в веб-интерфейсе.

Значением по умолчанию для параметра HostnameItem является значение полученное ключем агента “system.hostname” и для Windows платформы оно вернет NetBIOS имя хоста.

Значением по умолчанию для параметра Hostname будет значение полученное параметром HostnameItem. Таким образом, по сути, если оба этих параметра не заданы, то фактически именем хоста будет NetBIOS имя хоста; Zabbix агент будет использовать NetBIOS имя хоста для получения списка активных проверок от Zabbix сервера и отправлять результаты по ним.

Таким образом, чтобы упростить настройку zabbix_agentd.conf файла и сделать его унифицированным, можно использовать два различных похода.

Установка агента службой Windows

Для установки одиночного экземпляра Zabbix агента с файлом конфигурации c:zabbix_agentd.conf по умолчанию:

Необходимо указать полный путь к файлу конфигурации.

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

Установленная служба теперь будет видна в Панеле Управления.

Запуск агента

Для запуска службы агента, вы можете использовать Панель Управления или сделать это из командной строки.

Для запуска одиночного экземпляра Zabbix агента с файлом конфигурации по умолчанию:

Для запуска одиночного экземпляра Zabbix агента с отличным от умолчания файлом конфигурации:

Для запуска одного из нескольких экземпляров Zabbix агента:

Остановка агента

Для остановки службы агента, вы можете использовать Панель Управления или сделать это из командной строки.

Для остановки одиночного экземпляра Zabbix агента, который запущен с файлом конфигурации по умолчанию:

Для остановки одиночного экземпляра Zabbix агента, который запущен с другим файлом конфигурации:

Для остановки одного из нескольких экземпляров Zabbix агента:

Удаление Windows службы агента

Для удаления одиночного экземпляра Zabbix агента, который использует файл конфигурации по умолчанию:

Для удаления одиночного экземпляра Zabbix агента, который не использует файлом конфигурации по умолчанию:

Для удаления нескольких экземпляров Zabbix агента из служб Windows:

Источник

Как мониторить работу службы через Zabbix

У меня Zabbix развернут на Ubuntu 12.04.5 Server amd64 версии 2.2.11

$ apt-cache show zabbix-server-mysql | grep Version

Первое условие на станции Windows которую нужно мониторить на предмет статуса запущенного сервиса должен стоят Zabbix—агент и заведен на Zabbix-сервер.

Задача: мониторить буду службу: FusionInventory-Agent

это агент GLPI посредством которого происходит инвентаризация рабочей станции: Какая ось, какой софт, какое железо, кто сейчас работает, IP-адрес станции и т. д.

Теперь создаю новый элемент данных в дефолтном шаблоне Template OS Windows:

http://IP&DNS — Configuration — Templates — Template OS Windows — Items — Create Item

Name: GLPI Agent

Type: Zabbix agent

Key: service_state[FusionInventory-Agent]

Update interval (in sec): 60

History storage period (in days): 7

Trend storage period (in days): 365

New Application: Services

Description: Мониторим статус работы службы установленного агента GLPI

Enabled: Отмечаю галочкой

Сохраняю внесенные изменения: Save

На заметку: ключ service_state принимает ответные значения:

State of service. 0 — running, 1 — paused, 2 — start pending, 3 — pause pending, 4 — continue pending, 5 — stop pending, 6 — stopped, 7 — unknown, 255 — no such service

Теперь создаю Trigger ( описание тревоги на этот элемент данных ), в этом же Template OS Windows — Triggers — Create Trigger

Name: Service StateGLPI Agent on

Expression: — Add находим нужно правило, в моем случаем правило следующее:

Severity: High

Enabled: Отмечаю галочкой

Сохраняю внесенные изменения: Save

Теперь проверяю, сейчас на хосте (W7X86) выключаю/останавливаю службу и в Zabbix’е – Monitoring у меня в где Windows Stations обозначена среагированная проблема:

How to monitor the work of the service by Zabbix 001

Перехожу в группу и вижу на каких хоста сработало уведомление о неполадках:

Тип уведомление: Высокий

Время последнего изменения статуса

Продолжительность недоступности сервиса в связи с выключенным состояние службы FusionInventory-Agent

How to monitor the work of the service by Zabbix 002

How to monitor the work of the service by Zabbix 003

Если ведем какие-либо работы, то можно на сработанных триггер по этому хосту поставить комментарий (Acknowledge) или же когда сервис в строю:

Message: Работа сервиса восстановлена

После нажимаю: Acknowledge and return

По такому принципу можно настроить свой шаблон и свои элементы данных которые нужно отслеживать.

На этом собственно пока все, до новых встреч на моем блога, с уважением автор блога – ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще 🙂

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Источник

Мониторинг списка запущенных процессов в Zabbix

В стандартных шаблонах Zabbix есть триггеры на загрузку процессора, а так же на превышение максимально допустимого числа процессов. Триггеры эти практически бесполезны, если у вас плавающая нагрузка. Допустим, вы получаете уведомление о том, что у вас сильно нагружен процессор. Через 10 минут нагрузка прошла, а вы не успели зайти на сервер и посмотреть, чем он был нагружен в это время. Вот эту проблему я и решаю своим велосипедом, которым делюсь в статье.

Введение

Рассказываю подробно, что я хочу получить в конце статьи. В стандартном шаблоне Zabbix для Linux есть несколько триггеров. Они могут немного отличаться в названиях, в зависимости от версии шаблона, но смысл один и тот же:

Я хочу получить информацию о запущенных процессах на хосте в момент срабатывания триггера. Это позволит мне спокойно посмотреть, что создает нагрузку, когда у меня будет возможность. Мне не придется идти руками в консоль хоста и пытаться ловить момент, когда опять появится нагрузка.

В дефолтной конфигурации у Zabbix нет готовых инструментов, чтобы реализовать желаемое. Вы можете настроить мониторинг процесса или группы процессов в Zabbix. Но это не то, что нужно. Можно настроить автообнаружение всех процессов и мониторить их. Чаще всего это тоже не нужно, а подобный мониторинг будет генерировать большую нагрузку и сохранять кучу данных в базу. Особенно если на сервере регулярно запущено несколько сотен процессов.

Моя задача посмотреть на список процессов именно в момент нагрузки. Более того, мне даже не нужны все процессы, достаточно первой десятки самых активных, нагружающих больше всего систему. Я буду реализовывать этот мониторинг следующим образом:

Приступаем к реализации задуманного. Я буду настраивать описанную схему на Zabbix Server версии 5.2. Если у вас его нет, читайте мою статью по установке и настройке zabbix. В качестве подопытной системы будет выступать Centos. Так же предлагаю мои статьи по ее установке и предварительной настройке.

Подготовка сервера к мониторингу процессов

Первым делом идем на целевой сервер и изменяем конфигурацию zabbix-agent. Нам надо активировать следующую опцию:

Не забудьте после этого перезапустить агента.

Далее проверим команду, которая будет формировать список процессов для отправки на сервер мониторинга. Я предлагаю использовать вот такую конструкцию, но вы можете придумать что-то свое.

zabbix monitoring process list 01

Получаем список запущенных процессов, отсортированный по потреблению cpu и ограниченный первыми десятью строками. В данный момент на сервере с агентом нам делать нечего. Перемещаемся в web интерфейс Zabbix Server.

Настройка мониторинга за процессами

На Zabbix сервере идем в стандартный шаблон Linux и добавляем туда 2 новых айтема:

Так выглядит первый айтем. Второй сделайте по аналогии.

zabbix monitoring process list 02

Теперь идем на сервер с агентом и пробуем отправку данных в данный айтем. Для этого нам нужен будет zabbix_sender. Если у вас его нет, то установите.

Отправку данных проверяем следующим образом:

zabbix monitoring process list 03

Я не буду подробно останавливаться на формате запросов с помощью zabbix_sender. Все это хорошо описано в документации. Теперь идем в веб интерфейс сервера и в разделе Последние данные смотрим на список процессов, который нам пришел с целевого сервера.

zabbix monitoring process list 04

zabbix monitoring process list 07

zabbix monitoring process list 08

Сохраняйте действие и можно проверять.

Проверка отправки списка процессов

Теперь проверим, как все это будет работать. Для этого идем на целевой сервер и нагружаем его чем-нибудь. Я для примера запустил в двух разных консолях по команде:

Они достаточно быстро нагрузили единственное ядро тестового сервера, так что оставалось только подождать активации триггера. Через 5 минут это случилось.

zabbix monitoring process list 05

Иду в раздел Последние данные и вижу там список процессов, которые нагрузили мой сервер.

zabbix monitoring process list 06

Что мне в итоге и требовалось. Теперь нет нужды каким-то образом проверять, что конкретно нагружает сервер. В момент пиковой нагрузки я получу список запущенных процессов в отдельный айтем. Для полного списка процессов все делается по аналогии.

Заключение

Вот такую реализацию я придумал, когда потребовалось решить задачу. Один сервер постоянно донимал оповещениями по ночам. Нужно было понять, что его дергает в это время. Жаль, что у Zabbix из коробки нет реализации подобного информирования. Помню лет 5 назад был бесплатный тариф у мониторинга NewRelic. Можно было поставить агент мониторинга на сервер и потом смотреть очень удобные отчеты в веб интерфейсе. Никаких настроек не нужно было, все работало из коробки. Там были отражены все запущенные процессы на сервере на временном ряду со всеми остальными метриками. Это было очень удобно. Я нигде в бесплатном софте не видел такой реализации. Это примерно вот так выглядело.

zabbix monitoring process list 09

Кстати, в первоначальной версии действия я просто отправлял список процессов на почту. Мне показалось это удобным. Можно было сразу же в почте, в соседнем письме с триггером, посмотреть список процессов. Но потом решил, что удобнее все же хранить историю в одном месте на сервере и настроил сбор данных туда. Хотя можно делать и то, и другое. Например, в действии можно указать другую команду к исполнению:

И вам на почту придет список запущенных процессов после активации триггера.

Источник

1. Download Zabbix Agent

Make sure you are using same version as your Zabbix server.
https://www.zabbix.com/download_agents

I am using Zabbix 4.0 LTS, so here is my download link for Windows Agent:
https://www.zabbix.com/downloads/4.0.17/zabbix_agent-4.0.17-windows-amd64-openssl.msi
https://www.zabbix.com/downloads/4.0.17/zabbix_agent-4.0.17-windows-i386-openssl.msi

2. Install Zabbix Agent

By default, it will install your agent as passive mode

2.1 Verify ports

For passive mode:
C:UsersJohn>netstat -na | find “100”
  TCP    0.0.0.0:10050          0.0.0.0:0              LISTENING
  TCP    [::]:10050             [::]:0                 LISTENING

For both passive and active mode:

C:UsersJohn>netstat -na | find “100”

  TCP    0.0.0.0:10050          0.0.0.0:0              LISTENING

  TCP    192.168.2.31:49524     34.67.224.10:10051     TIME_WAIT

  TCP    [::]:10050             [::]:0                 LISTENING

For Avtive mode only:

C:UsersJohn>netstat -na | find “100”

  TCP    192.168.2.31:49688     34.67.224.10:10051     TIME_WAIT

2.2 Enable Active mode:

Wordpad edit C:Program FilesZabbix Agentzabbix_agentd.conf. Find the section relating to ServerActive:

### Option: ServerActive

# List of comma delimited IP:port (or DNS name:port) pairs of Zabbix servers and Zabbix proxies for active checks.

# If port is not specified, default port is used.

# IPv6 addresses must be enclosed in square brackets if port for that host is specified.

# If port is not specified, square brackets for IPv6 addresses are optional.

# If this parameter is not specified, active checks are disabled.

# Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]

#

# Mandatory: no

# Default:

# ServerActive=

ServerActive=34.67.224.10

2.3. Disable Passive check:

Change StartAgents value to 0. 

### Option: StartAgents
# Number of pre-forked instances of zabbix_agentd that process passive checks.
# If set to 0, disables passive checks and the agent will not listen on any TCP port.
#
# Mandatory: no
# Range: 0-100
# Default:
# StartAgents=3

StartAgents=0

Remove following default passive related Server= settings.

### Option: Server
# List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then ‘127.0.0.1’, ‘::127.0.0.1’, ‘::ffff:127.0.0.1’ are treated equally and ‘::/0’ will allow any IPv4 or IPv6 address.
# ‘0.0.0.0/0’ can be used to allow any IPv4 address.
# Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.domain
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

### Option: ListenPort
# Agent will listen on this port for connections from the server.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# ListenPort=10050

2.4 Make New Templates with ‘Zabbix Agent (active)’ 

Before I start changing hosts from passive to active checks, I needed to
make three new templates-objects. For each of
‘Template App Zabbix Agent’, ‘Template OS Linux’ and
‘Template App MySQL’, do:

– Go to Configuration : Templates, select template $name
– scroll down, click ‘Full Clone’. Change the clone’s name to “$name
Active” and click ‘Add’ at the bottom.
– In Configuration : Templates, Find the new “$name Active” template,
click on the ‘Items’ item on its row.
– Click on the checkbox in the upper-left to select all rows, scroll
down to the drop-down and select ‘Mass Update’ and click ‘Go’
– Click the checkbox for ‘Type’ and select ‘Zabbix Agent (active)’ in
the dropdown that appears. Scroll down and click the ‘Update’ button.

Zabbix-Configuration-Template-Create/Clone a new Windows Template

Zabbix-Configuration-Template-Action-AutoRegistration

Понравилась статья? Поделить с друзьями:
  • Template module windows physical disks by zabbix agent active
  • Template module windows cpu by zabbix agent
  • Temp файлы в windows 10 где находится
  • Tema windows 10 скачать бесплатно 2021
  • Telegram desktop windows 10 скачать официальный сайт