Saltstack und Zabbix im Einsatz

Saltstack besteht aus Master und vielen Minions.
Installiert wird der Master so:
apt-get -y install python-software-properties
add-apt-repository ppa:saltstack/salt
apt-get update
apt-get install salt-master

Der DNS Eintrag „salt“ muss auf diesen Server zeigen, sonst geht saltstack nicht.

Die Minions werden so installiert:
apt-get -y install python-software-properties
add-apt-repository ppa:saltstack/salt
apt-get update
apt-get -y --force-yes install salt-minion

Danach wird auf dem Master folgendes aufgerufen :
Salt-key –A
Damit wird der Key der Minions dem Keystore hinzugefügt.

Nun ist alles bereit für die Zabbix Installation.

Der Zabbix Server sollte bereits installiert sein und funktionieren.
Falls nicht, geht das so:
wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+precise_all.deb
apt-get install mysql-server
aptitude search zabbix
apt-get install zabbix-server-mysql zabbix-frontend-php
nano /etc/apache2/conf.d/zabbix

Nun wird einiges an der saltstack Konfiguration verändert. Diese findet sich unter /etc/salt/master

#####      File Server settings      #####
##########################################
# Salt runs a lightweight file server written in zeromq to deliver files to
# minions. This file server is built into the master daemon and does not
# require a dedicated port.

file_roots:
  base:
    - /srv/salt


#####         Pillar settings        #####
##########################################
# Salt Pillars allow for the building of global data that can be made selectively
# available to different minions based on minion grain filtering. The Salt
# Pillar is laid out in the same fashion as the file server, with environments,
# a top file and sls files. However, pillar data does not need to be in the
# highstate format, and is generally just key/value pairs.

pillar_roots:
  base:
    - /srv/pillar

Damit sind die Voraussetzungen geschaffen.
Nun geht es an die Konfigurationsdateien, die sich alle unter /srv/salt/ befinden.
So wird es am Schluss aussehen:
# ls -R /srv/salt/
/srv/salt/:
top.sls  zabbix-agent  zabbix-agent-centos

/srv/salt/zabbix-agent:
init.sls  zabbix_agentd.conf

Zuerst wird top.sls angelegt:
# cat /srv/salt/top.sls
base:
  'os:Ubuntu':
    - match: grain
    - zabbix-agent

Danach wird er Ordner für Zabbix erstellt. Nun folgt die SLS für Zabbix Agent:
# cat /srv/salt/zabbix-agent/init.sls
zabbix-agent:
  pkg:
    - installed
  service:
    - running
    - require:
      - pkg: zabbix-agent
    - watch:
      - pkg: zabbix-agent
      - file: /etc/zabbix/zabbix_agentd.conf

/etc/zabbix/zabbix_agentd.conf:
   file.managed:
     - source: salt://zabbix-agent/zabbix_agentd.conf
     - user: root
     - group: root
     - mode: 644

Damit wird folgendes eingestellt:
Zabbix-agent wird installiert. Zabbix-agent wird gestartet. Das Paket zabbix-agent wird auf Updates überwacht. Die Datei /etc/zabbix/zabbix_agentd.conf wird von saltstack verwaltet. Die Originaldatei ist auf dem salt-master zu finden.

Damit wird aber noch gar nichts getan. Saltstack kennt keine Automatismen. Also wird auf einem ersten Minion gestartet:
# salt-call state.sls zabbix-agent
Damit wird auf diesem Minion saltstack angewiesen, den Status „zabbix-agent“ herzustellen.
Dies gelingt mal besser, mal schlechter. Eines der Hauptprobleme ist, dass der Zabbix-agent das pid unter /var/run/zabbix/ anlegen will, aber der Ordner /var/run/zabbix.agent/ erstellt wurde. Dann startet Zabbix-agent eben nicht.
Um gleich auf allen Minions den Zabbix-agent zu aktivieren, wird auf dem Master folgendes ausgeführt:
# salt -G os:Ubuntu state.sls zabbix-agent
Damit werden alle Minions, die auf Ubuntu laufen, den Status herzustellen.
Der Erfolg kann so überprüft werden:
salt -G os:Ubuntu cmd.run "ps -Al | grep zabbix"

Damit werden alle Zabbix Prozesse angezeigt.
Falls da einige nicht laufen, kann so weiter nach der Ursache gesucht werden:
salt -G os:Ubuntu cmd.run "tail /var/log/zabbix-agent/zabbix_agentd.log"

Falls es ein Problem mit /var/run gibt, helfen folgende Befehle weiter:
salt -G os:Ubuntu cmd.run "ls -l /var/run | grep zabbix"
salt -G os:Ubuntu cmd.run "chown zabbix:zabbix /var/run/zabbix"
salt -G os:Ubuntu cmd.run "service zabbix-agent restart"

Sollte der Zabbix-agent noch immer nicht starten, muss einzeln eingegriffen werden. Zabbix-agent wird dann am besten mit
# apt-get purge zabbix-agent
entfernt und danach mit
# apt-get install zabbix-agent
erneut installiert. Danach wieder mit
# salt-call state.sls zabbix-agent
die Konfiguration vom Master übernehmen.

Ergänzung vom 25.2.2014
Wie wird der richtige Hostname verwendet?
In der Konfigurationsdatei zabbix_agentd.conf
HostnameItem=system.hostname





Kommentare

Beliebte Posts aus diesem Blog

wie verwalte ich 100 Linux Server?

warum bloggen?

Klimaveränderung – ein Überblick