Install zabbix 4.2 sur Windows

Install agent windows

Désinstallation
Stopper le service encours

"L:\Soft\zabbix\Zabbix Agent\zabbix_agentd.exe" --uninstall
"L:\Soft\zabbix_agents_1.8.10.win\win64\zabbix_agentd.exe" --uninstall

copier les fichiers
C:\Users\eric.fougere\Documents\zabbix\zabbix_4.2
dans
C:\Program Files\zabbix_4.2

LogFile=C:\Program Files\zabbix_4.2\zabbix_agentd.log
Server=emea_zabbix.wabtec.com
Hostname=WCTSRV00xx.wabtec.com
"C:\Program Files\zabbix_4.2\bin\zabbix_agentd.exe" -c "c:\Program Files\zabbix_4.2\zabbix_agentd.conf" --install

Démarrer le service

modifier le Logon au niveau du service : wabtec\srvdcdserversup

ajouter les règles de Firewall sur le nouveau serveur (ex : dccdsrv0027)

Tester depuis le wctsrv0010

root@wctsrv0010:~# zabbix_get -p 10050 -k agent.version -s dcdsrv0027
3.2.7

Redémarrage auto des services windows avec zabbix.

Créer un template : Tmp_service_Auto_Restart

Dans le template créer l’Item

Item : Service_Automatic_Restart

Dans la clé Key, mettre

services[automatic, stopped, "gupdate,RemoteRegistry,SysmonLog,CIMnotify,sppsvc,clr_optimization_v4.0.30319_64,clr_optimization_v4.0.30319_32"]

Liste des services non concerné entre «  » séparé par ,

Créer un trigger sur l’item

Trigger : TRG_services_automatic_stopped

Créer une Action (Configuration Action)
Action: TRG_services_automatic_stopped

Créer une opération (onglet opération)

Ajouter une étape (New step, bon sur l’exemple elle existe déjà)

Ne pas oublier Update à la fin de la création de l’étape.

Et Update de l’ACTION.

Sur les serveurs windows :

Voici les scripts à mettre sur les serveurs sur lesquels on veut redémarrer automatiquement les services qui tombent.

Il faut créer un dossier c:\temp\

c:\Batchs\Start_service_auto.bat

@echo off
cls
:: EF le 16/05/2012
:: MV le 17/01/2017 ajout du check for permissions, windows 2012 r2

setlocal enableDelayedExpansion

:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
 echo Requesting administrative privileges...
 goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
 echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
 echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

 "%temp%\getadmin.vbs"
 exit /B

:gotAdmin
 if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
 pushd "%CD%"
 CD /D "%~dp0"
:--------------------------------------

set fic_log=c:\temp\service_to_restart.log
set fic_temp=c:\temp\service_to_restart.txt
set fic_start=c:\temp\service_to_start.txt
set fic_bat=c:\temp\service_to_start.bat


del /F %fic_log%
del /F %fic_temp%
del /F %fic_start%
del /F %fic_bat%

TIMEOUT /T 3 /NOBREAK 1>nul

TYPE NUL > %fic_start%
TYPE NUL > %fic_bat%

wmic service where (state="stopped" and startmode="Auto") get name>%fic_temp%

for /f "delims= skip=1" %%i in ('type %fic_temp%') do (
 set w_serv=%%i
 echo net start %%i>> %fic_start%
 )

TIMEOUT /T 3 /NOBREAK 1>nul

for /f "tokens=1,2,3* delims= " %%i in (%fic_start%) do (
 set wstr=%%i %%j 
 set wser=%%k %%l
 for /l %%a in (11,1,100) do if "!wser:~-1!"==" " set wser=!wser:~0,-1!
 set w_ligne=!wstr!"!wser!"
 echo !w_ligne!
 echo !w_ligne!>>%fic_bat%
 echo TIMEOUT /T 5 /NOBREAK >> %fic_bat%
 )

%fic_bat% > %fic_log%

c:\Batchs\test.bat

@echo off
echo TEST > c:\temp\test.txt
echo %1 >> c:\temp\test.txt

Fichier_non_vide

Sous Linux

#!/bin/bash
cd /exploit/logs
find *.e -type f -not -empty

Sous Windows

rem ——————————————– rem ce script rechercher les fichiers non vide rem pour un type (extension) donné rem dans une directorie donné rem ——————————————–

@Echo Off

echo extension : %1 echo dossier : %2

setlocal ENABLEDELAYEDEXPANSION

set /A P1=0 set fic=%1 set dossier=%2

for /R %dossier% %%i in (%fic%) do if « %%~zi » geq « 1 » ( echo %%~nxzi set /A P1=!P1!+1 )

echo Il y a !P1! fichiers non vide

set /A nb_fic=!P1!

if %nb_fic% equ 0 goto TERMINE goto ERREUR

:ERREUR Echo « il y a !P1! Pb sur ces serveurs » rem cd %ABM_LOGS% rem copy /Y %TOM_LOG_PATH_E% log_erreur.txt rem copy /Y %TOM_LOG_PATH_O% log_standard.txt rem %ABM_BIN%/tmail -c %ABM_BIN%/tmail.ini -to eric.fougere@faiveleytransport.com -sub « DCB – VTOM : ERREUR job : %TOM_JOB% » -msg « fichier log non vide MACHINE : %TOM_HOST% %TOM_JOB% : Les log errors ne sont pas vides. » -att log_standard.txt;log_erreur.txt

:TERMINE exit /b %nb_fic%

Del_non_vide.bat

rem --------------------------------------------
rem ce script rechercher les fichiers non vide 
rem pour un type (extension) donné
rem dans une directorie donné
rem --------------------------------------------
@Echo Off
echo extension : %1
echo dossier : %2
setlocal ENABLEDELAYEDEXPANSION
set fic=%1
set dossier=%2
for /R %dossier% %%i in (%fic%) do if "%%~zi" geq "1" (
echo %%~nxzi 
del /f %%i 
)
:TERMINE
exit /b %nb_fic%

connect_as400.bat

rem Tracking #63550
rem Test de connection à l'AS400
net use s: /delete /yes
net use s: \\ERPM3TWO\root\M3FileTransfer\M3Production\DE1\test vtomvtom /USER:erpm3two\DCXSERVICE
echo source =\\ERPM3TWO\root\M3FileTransfer\M3Production\DE1\test
rem set source=\\pfile.ft.grp\Distrib\_cco\EF\Documents
rem set cible=s:
set source=s:
set cible=\\pfile.ft.grp\Distrib\_cco\EF\test
echo %source% 
echo %cible%
set w_log=%cible\%TOM_JOB%.log
dir %source%
robocopy %source% %cible% /S /w:1 /r:1 test*.txt
dir %cible%

Convert secondes en heures minutes

en SQL Server

9294 s ==> 2.5816666 h ===> 02:34::53

SELECT
ElapsedTimeSeconds
,(CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600)
,RIGHT(‘0’ + CAST (FLOOR((CAST ( ElapsedTimeSeconds AS decimal(10,4))/ 3600)) AS VARCHAR), 2) + ‘:’ +
RIGHT(‘0’ + CAST(FLOOR(((((CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600) * 3600) % 3600) / 60)) AS VARCHAR), 2) + ‘:’ +
RIGHT(‘0’ + CAST (FLOOR(((CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600) * 3600) % 60) AS VARCHAR), 2)
from BEDB.dbo.JobHistorySummary
where TaskTypeID = 200

 

9294 s ==> 2.34

SELECT
ElapsedTimeSeconds
,(CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600)
,RIGHT(‘0’ + CAST (FLOOR((CAST ( ElapsedTimeSeconds AS decimal(10,4))/ 3600)) AS INT), 2) + ‘.’ +
RIGHT(‘0’ + CAST(FLOOR(((((CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600) * 3600) % 3600) / 60)) AS VARCHAR), 2) –+ ‘:’ +
–RIGHT(‘0′ + CAST (FLOOR(((CAST ( ElapsedTimeSeconds AS decimal(10,2))/ 3600) * 3600) % 60) AS VARCHAR), 2)
–,DATEADD(mi, (ElapsedTimeSeconds – FLOOR(ElapsedTimeSeconds)) * 60, DATEADD(hh, FLOOR(ElapsedTimeSeconds), CAST (’00:00:00’ AS TIME)))
from BEDB.dbo.JobHistorySummary
where TaskTypeID = 200

Perf Counter Windows

11 Compteurs de performance Windows

Les compteurs de performance Windows peuvent être efficacement supervisés en utilisant perf_counter[].

Par exemple:

perf_counter["Processor(0)\Interrupts/sec"]

ou

perf_counter["Processor(0)\Interrupts/sec", 10]

Dans le but d’obtenir la liste complète des compteurs de performance disponibles pour la supervision vous pouvez exécuter la commande suivante:

typeperf -qx

Malheureusement, les paramètres locaux de nommage des compteurs de performances peuvent être différents sur les différents serveurs Windows. Ceci peut causer certains problèmes lors de la création d’un modèle pour superviser plusieurs machines Windows ayant différents paramètres locaux.

Chaque compteur de performance peut être traduit sous forme numérique, lequel est unique et exactement le même indifféremment de paramètres linguistiques.

Exécuter regedit, Ensuite trouver HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009. Les entrées de la base registre contiennent des informations telles que:

1
1847
2
System
4
Memory
6
% Processor Time
10
File Read Operations/sec
12
File Write Operations/sec
14
File Control Operations/sec
16
File Read Bytes/sec
18
File Write Bytes/sec
....

Donc, dans le but de traduire le nom (en chaîne de caractère) d’un compteur de performance sous une forme numérique,il faut trouver les nombres correspondant pour chaque partie du compteur de performance comme:

System -> 2
% Processor Time -> 6
\System\% Processor Time

Then use these numbers to create a numeric format:

\2\6

11.1 Paramètres utilisateurs simples

Dans le but de définir un nouveau paramètre pour la supervision, une ligne doit être ajoutée au fichier de configuration de Zabbix qui doit ensuite être redémarré. Par exemple:

   PerfCounter=UserPerfCounter1,"\Memory\Page Reads/sec",30
   ou
   PerfCounter=UserPerfCounter2,"\4\24",30

Ensuite, il est possible d’utiliser “UserPerfCounter1” et “UserPerfCounter2” comme des items habituels disponibles sur l’interface ou ailleurs, de façon similaire à UserParameter.

Redémarrage auto des services windows avec Zabbix

Cette procédure permet de redémarrer automatiquement les services windows qui sont « STOPPED » alors qu’ils sont en démarrage automatique, devraient donc être « STARTED ».

1- Sur le serveur cible : Se connecter avec le compte Dcxservice
Copier le fichier C:\Batchs\Start_service_auto.bat (voir en fin d’article) de PSERV dans C:\Batchs
Creer le dossier c:\temp

2- Appliquer le template Tmp_Service_Auto_Restart sur le serveur

3- Facultatif : Modifier (supprimer) les services à exclure sur l’item (serveur cible) .

Liste des serveurs où cette fonctionnalité est implanté.

PSERV
PWEB
VTREND
PDTB1
VWCCO15P
VMEC

ATTENTION :

Le fichier de zabbix_agentd.conf de l’agent Zabbix (sur le serveur cible) doit contenir la ligne :
EnableRemoteCommands=1

———————————————————————————————————————–

C:\Batchs\Start_service_auto.bat

@echo off
cls
:: EF le 16/05/2012
:: MV le 17/01/2017 ajout du check for permissions, windows 2012 r2

setlocal enableDelayedExpansion

:: BatchGotAdmin
:————————————-
REM –> Check for permissions
>nul 2>&1 « %SYSTEMROOT%\system32\cacls.exe » « %SYSTEMROOT%\system32\config\system »

REM –> If error flag set, we do not have admin.
if ‘%errorlevel%’ NEQ ‘0’ (
echo Requesting administrative privileges…
goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^(« Shell.Application »^) > « %temp%\getadmin.vbs »
echo UAC.ShellExecute « %~s0 », «  », «  », « runas », 1 >> « %temp%\getadmin.vbs »

« %temp%\getadmin.vbs »
exit /B

:gotAdmin
if exist « %temp%\getadmin.vbs » ( del « %temp%\getadmin.vbs » )
pushd « %CD% »
CD /D « %~dp0″
:————————————–

set fic_log=c:\temp\service_to_restart.log
set fic_temp=c:\temp\service_to_restart.txt
set fic_start=c:\temp\service_to_start.txt
set fic_bat=c:\temp\service_to_start.bat
del /F %fic_log%
del /F %fic_temp%
del /F %fic_start%
del /F %fic_bat%

TIMEOUT /T 3 /NOBREAK 1>nul

TYPE NUL > %fic_start%
TYPE NUL > %fic_bat%

wmic service where (state= »stopped » and startmode= »Auto ») get name>%fic_temp%

for /f « delims= skip=1 » %%i in (‘type %fic_temp%’) do (
set w_serv=%%i
echo net start %%i>> %fic_start%
)

TIMEOUT /T 3 /NOBREAK 1>nul

for /f « tokens=1,2,3* delims=  » %%i in (%fic_start%) do (
set wstr=%%i %%j
set wser=%%k %%l
for /l %%a in (11,1,100) do if « !wser:~-1! »== »  » set wser=!wser:~0,-1!
set w_ligne=!wstr! »!wser! »
echo !w_ligne!
echo !w_ligne!>>%fic_bat%
echo TIMEOUT /T 5 /NOBREAK >> %fic_bat%
)

%fic_bat% > %fic_log%

Install Zabbix Agent sur Windows

Récupérer l’agent sur PFILE :

\\PFILE\Distrib\Zabbix Agent\zabbix_agents_1.8.10.win

copier le dossier dans :

L:\Soft\

Le fichier L:\Soft\zabbix_agents_1.8.10.win\zabbix_agentd.conf contient

Server=vmoni.ft.grp
EnableRemoteCommands=1
DebugLevel=2
LogFile= L:\Soft\zabbix_agents_1.8.10.win\logs\zabbix_agentd.log

———————————————————————————————————————-

Désinstallationde l’agent attention vérifier les chemins dans les propriétés du service

Fenêtre de cmd:

64 bits

C:\Users\adm_1504>L:\Soft\zabbix_agents_1.8.10.win\win64\zabbix_agentd.exe --uninstall
 zabbix_agentd.exe [4344]: Service "Zabbix Agent" uninstalled successfully
 zabbix_agentd.exe [4344]: Event source "Zabbix Agent" uninstalled successfully.

32 bits

C:\Users\adm_1504>L:\Soft\zabbix_agents_1.8.10.win\win32 \zabbix_agentd.exe --uninstall
 zabbix_agentd.exe [4344]: Service "Zabbix Agent" uninstalled successfully
 zabbix_agentd.exe [4344]: Event source "Zabbix Agent" uninstalled successfully.

———————————————————————————————————————

Installation de l’agent

Fenêtre de cmd en Administrateur:

change user /install

64 bits

C:\Users\adm_1504>L:\Soft\zabbix_agents_1.8.10.win\win64\zabbix_agentd.exe --config L:\Soft\zabbix_agents_1.8.10.win\zabbix_agentd.conf --install
 zabbix_agentd.exe [4704]: service [Zabbix Agent] installed successfully
 zabbix_agentd.exe [4704]: event source [Zabbix Agent] installed successfully

32 bits

C:\Users\adm_1504>L:\Soft\zabbix_agents_1.8.10.win\win32\zabbix_agentd.exe --config L:\Soft\zabbix_agents_1.8.10.win\zabbix_agentd.conf --install
zabbix_agentd.exe [3676]: service [Zabbix Agent] installed successfully
 zabbix_agentd.exe [3676]: event source [Zabbix Agent] installed successfully

Démarrer le service en tant que DcXservice@ft.grp : Dc…..#7….

change user /execute

———————————————————————————————————-

Tester si l’agent fonctionne

Se connecter root sur vmoni il doit retourner la version exemple 1.8.10 pour le serveur vadmin.ft.grp

root@vmoni:~# zabbix_get -p 10050 -k agent.version -s vadmin.fr.grp
1.8.10