Ad Widget

Collapse

Installer l'agent Zabbix sur un serveur Linux

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fabricebreizh
    Junior Member
    • Sep 2012
    • 1

    #1

    Installer l'agent Zabbix sur un serveur Linux

    Pour installer agent zabbix manuellement sur un serveur linux il faut :

    (en tant que root)
    récupérer la version de linux :
    commande "uname -a"
    --> pour le proxy 2.6.18 x64

    créer un répertoire zabbix dans /opt :
    commande "mkdir /opt/zabbix"

    télécharger la version de l'agent correspondant : (Linux 2.6.23 Agents 2.0.4 i386 )
    commande "wget http://www.zabbix.com/downloads/2.0.4/zabbix_agents_2.0.4.linux2_6_23.i386.tar.gz"

    décompresser l'archive :
    commande "tar -xzvf zabbix_agents_2.0.4.linux2_6_23.i386.tar.gz"

    supprimer ou déplacer l'archive téléchargée pour éviter les erreurs
    commande "mv zabbix_agents_2.0.4.linux2_6_23.i386.tar.gz /root"

    créer groupe zabbix
    commande : groupadd zabbix

    créer utilisateur zabbix :
    useradd -g zabbix zabbix

    donner tous les droits à l’utilisateur zabbix sur le répertoire /opt/zabbix
    commande « chown zabbix:zabbix -R /opt/zabbix »
    editer le fichier de configuration dans /opt/zabbix/conf/zabbix_agentd.conf
    Remplacer le contenu par le contenu ci-dessous et remplacer les adresses ip présentes par celle de votre serveur zabbix
    # This is a config file for the Zabbix agent daemon (Unix)
    # To get more information about Zabbix, visit http://www.zabbix.com

    ############ GENERAL PARAMETERS #################

    ### Option: PidFile
    # Name of PID file.
    #
    # Mandatory: no
    # Default:
    # PidFile=/tmp/zabbix_agentd.pid

    ### Option: LogFile
    # Name of log file.
    # If not set, syslog is used.
    #
    # Mandatory: no
    # Default:
    # LogFile=

    LogFile=/var/log/zabbix-agentd.log

    ### Option: LogFileSize
    # Maximum size of log file in MB.
    # 0 - disable automatic log rotation.
    #
    # Mandatory: no
    # Range: 0-1024
    # Default:
    LogFileSize=100

    ### Option: DebugLevel
    # Specifies debug level
    # 0 - no debug
    # 1 - critical information
    # 2 - error information
    # 3 - warnings
    # 4 - for debugging (produces lots of information)
    #
    # Mandatory: no
    # Range: 0-4
    # Default:
    DebugLevel=3

    ### Option: SourceIP
    # Source IP address for outgoing connections.
    #
    # Mandatory: no
    # Default:
    # SourceIP=

    ### Option: EnableRemoteCommands
    # Whether remote commands from Zabbix server are allowed.
    # 0 - not allowed
    # 1 - allowed
    #
    # Mandatory: no
    # Default:
    EnableRemoteCommands=1

    ### Option: LogRemoteCommands
    # Enable logging of executed shell commands as warnings.
    # 0 - disabled
    # 1 - enabled
    #
    # Mandatory: no
    # Default:
    LogRemoteCommands=1

    ##### Passive checks related

    ### Option: Server
    # List of comma delimited IP addresses (or hostnames) of Zabbix servers.
    # Incoming connections will be accepted only from the hosts listed here.
    # No spaces allowed.
    # If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
    #
    # Mandatory: no
    # Default:
    # Server=

    Server=10.56.144.116

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

    ### Option: ListenIP
    # List of comma delimited IP addresses that the agent should listen on.
    # First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.
    #
    # Mandatory: no
    # Default:
    # ListenIP=0.0.0.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

    ##### Active checks related

    ### Option: ServerActive
    # List of comma delimited IPort (or hostnameort) pairs of Zabbix servers 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=10.56.144.116

    ### Option: Hostname
    # Unique, case sensitive hostname.
    # Required for active checks and must match hostname as configured on the server.
    # Value is acquired from HostnameItem if undefined.
    #
    # Mandatory: no
    # Default:
    # Hostname=

    #Hostname=zabbix2.in.ghsa.fr

    ### Option: HostnameItem
    # Item used for generating Hostname if it is undefined.
    # Ignored if Hostname is defined.
    #
    # Mandatory: no
    # Default:
    # HostnameItem=system.hostname

    ### Option: RefreshActiveChecks
    # How often list of active checks is refreshed, in seconds.
    #
    # Mandatory: no
    # Range: 60-3600
    # Default:
    # RefreshActiveChecks=120

    ### Option: BufferSend
    # Do not keep data longer than N seconds in buffer.
    #
    # Mandatory: no
    # Range: 1-3600
    # Default:
    # BufferSend=5

    ### Option: BufferSize
    # Maximum number of values in a memory buffer. The agent will send
    # all collected data to Zabbix Server or Proxy if the buffer is full.
    #
    # Mandatory: no
    # Range: 2-65535
    # Default:
    # BufferSize=100

    ### Option: MaxLinesPerSecond
    # Maximum number of new lines the agent will send per second to Zabbix Server
    # or Proxy processing 'log' and 'logrt' active checks.
    # The provided value will be overridden by the parameter 'maxlines',
    # provided in 'log' or 'logrt' item keys.
    #
    # Mandatory: no
    # Range: 1-1000
    # Default:
    # MaxLinesPerSecond=100

    ### Option: AllowRoot
    # Allow the agent to run as 'root'. If disabled and the agent is started by 'root', the agent
    # will try to switch to user 'zabbix' instead. Has no effect if started under a regular user.
    # 0 - do not allow
    # 1 - allow
    #
    # Mandatory: no
    # Default:
    # AllowRoot=0

    ############ ADVANCED PARAMETERS #################

    ### Option: Alias
    # Sets an alias for parameter. It can be useful to substitute long and complex parameter name with a smaller and simpler one.
    #
    # Mandatory: no
    # Range:
    # Default:

    ### Option: Timeout
    # Spend no more than Timeout seconds on processing
    #
    # Mandatory: no
    # Range: 1-30
    # Default:
    # Timeout=3

    ### Option: Include
    # You may include individual files or all files in a directory in the configuration file.
    # Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
    #
    # Mandatory: no
    # Default:
    # Include=

    # Include=/usr/local/etc/zabbix_agentd.userparams.conf
    # Include=/usr/local/etc/zabbix_agentd.conf.d/

    ####### USER-DEFINED MONITORED PARAMETERS #######

    ### Option: UnsafeUserParameters
    # Allow all characters to be passed in arguments to user-defined parameters.
    # 0 - do not allow
    # 1 - allow
    #
    # Mandatory: no
    # Range: 0-1
    # Default:
    # UnsafeUserParameters=0

    ### Option: UserParameter
    # User-defined parameter to monitor. There can be several user-defined parameters.
    # Format: UserParameter=<key>,<shell command>
    # See 'zabbix_agentd' directory for examples.
    #
    # Mandatory: no
    # Default:
    # UserParameter=


    créer le fichier de log /var/log/zabbix-agentd.log
    commande « touch /var/log/zabbix-agentd.log »

    attribuer les droits à l’utilisateur zabbix sur ce fichier
    commande « chown zabbix:zabbix /var/log/zabbix-agentd.log »

    créer le fichier de lancement dans /etc/init.d/zabbix_agentd
    Injecter le contenu ci-dessous
    #!/bin/bash
    progdir="/opt/zabbix/sbin"
    counter=0
    utilisateur=$(whoami)
    zabbix_counter=0
    zabbix_counter=$(ps -ef | grep zabbix_agentd | grep -v grep | grep -v init.d | wc -l)

    start(){
    echo "-------------------------------------------------------------------"
    echo " LAUNCHING ZABBIX AGENT"

    if [ $zabbix_counter -gt 0 ]; then
    echo " * Script lance en tant que : $utilisateur"
    echo " * Zabbix agent was previously running"
    echo " * Number of Zabbix agentd instances= $zabbix_counter"
    echo "-----------------------------------------------------------------"
    fi

    # Checking if the user is able to start the agent.... if the user is not able to, script performs su to
    # the user zabbix and starts the agent

    if [ $(whoami) != "zabbix" ]; then
    sudo -u zabbix /opt/zabbix/sbin/zabbix_agentd
    else
    # Script is acting as the zabbix user, so it can start the agent.
    $progdir/zabbix_agentd
    fi
    sleep 5

    zabbix_counter=$(ps -ef | grep zabbix_agentd | grep -v grep | grep -v init.d | wc -l)
    if [ $zabbix_counter -gt 0 ]; then
    echo " * Zabbix agent succesfully started"
    echo " * Number of zabbix agentd instances= $zabbix_counter"
    echo "-------------------------------------------------------------------"
    else
    echo " * Zabbix agent couldn't be started, check Zabbix logs"
    echo "-------------------------------------------------------------------"
    fi

    }

    stop(){
    # Checking if the user is able to stop the agent.... if the user is not able to, script performs su to
    # the user zabbix and kills the agent. Also script tries to kill zabbix-agent processes 5 times using a counter, if at
    # the fith try the agent is still there, script outputs a message to the console.

    echo "-------------------------------------------------------------------"
    echo " STOPPING ZABBIX AGENT"

    if [ $zabbix_counter -eq 0 ]; then
    echo " * Zabbix agent was not running on this machine"
    echo "-------------------------------------------------------------------"
    fi

    while [ $zabbix_counter -gt 0 ] && [ $counter -lt 5 ] ; do

    let counter=counter+1

    echo " * Number of Attempts (Max 5)=$counter"
    echo " * Stopping zabbix.."
    echo " * Number of zabbix agentd instances= $zabbix_counter"

    if [ $(whoami) != "zabbix" ];then
    sudo -u zabbix killall zabbix_agentd > /dev/null &
    else
    killall zabbix_agentd > /dev/null &
    fi

    sleep 5
    # Script has a 5 second delay to avoid attempting to kill a process that is still shutting down. If the script
    # can't kill the processes, an error will appear.
    # After 5 seconds script checks again the number of zabbix_agentd processes running,
    # if it's 0, script will exit the loop and continue on

    zabbix_counter=$(ps -ef | grep zabbix_agentd | grep -v grep | grep -v init.d | wc -l)

    done

    if [ $zabbix_counter -gt 0 ]; then
    echo " * Zabbix agent couldn't be stopped, check Zabbix logs"
    echo "-------------------------------------------------------------------"
    fi

    if [ $zabbix_counter -eq 0 ]; then
    echo " * Zabbix agent successfully stopped"
    echo "-------------------------------------------------------------------"
    fi

    }

    restart(){
    stop
    # Gives system some time to stop processes before script restarts service
    sleep 5
    # Now script can start the agent again
    start
    }

    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    restart
    ;;
    *)
    echo "Usage: zabbix {start|stop|restart}"
    exit 1
    esac

    exit 0

    Attribuer les droits de lancement à ce fichier pour tous les utilisateurs
    Commandes « chmod o+x /etc/init.d/zabbix_agentd » et « chmod u+x /etc/init.d/zabbix_agentd »

    Essayer de lancer manuellement l’agent zabbix pour voir les erreurs
    Commandes : « su – zabbix » et « /opt/zabbix/sbin/zabbix_agentd »

    En fonction du linux, un message peut apparaître réclamant le fichier de conf dans le répertoire /usr/local/etc/zabbix_agentd.conf , dans ce cas, il suffit de créer un lien symbolique vers le fichier de conf édité ci-dessus (attention, il faut repasser en root pour cette opération):
    Commandes : « exit » et « ln -s /opt/zabbix/conf/zabbix_agentd.conf /usr/local/etc/zabbix_agentd.conf »

    Et réitérer le test :
    Commandes : « su – zabbix » et « /opt/zabbix/sbin/zabbix_agentd »
    Si aucun message, vérifier que les processus tournent :
    Commande : « ps -edf | grep zabbix_agentd »

    Quitter le test pour revenir avec l’utilisateur root et vérifier fonctionnement du lancement automatique :
    Commandes : « exit » et « /etc/init.d/zabbix_agentd stop » et « /etc/init.d/zabbix_agentd start »

    Ajouter votre machine dans la console WEB de votre serveur zabbix en renseignant son adresse ip et le port 10050
  • c-moi
    Junior Member
    • Feb 2013
    • 1

    #2
    Bonjour,

    Merci pour ce rapide tuto mais il faut faire attentio à deux points lors de l'installation.

    Premièrement, vérifier si la distribution contient le paquet zabbix-agent ou non. Typiquement Debian unstable a la version 2.0, 1.8 pour la stable (il est toujours possible d'user de pinning pour ne prendre que la 2.0 avec une Debian stable) et Centos/RHEL 6 a une liste de paquet zabbix-agent20 dans EPEL, et les derniers en EPEL-testing au besoin, depuis très peu de temps.

    Enfin, tu prends la version 32bits de l'agent, mais la 64bit est tout aussi disponible en source : http://www.zabbix.com/downloads/2.0....3.amd64.tar.gz
    De fait une vérification avec "uname -m" est intéressante.

    Comment

    Working...