FragranceM 发表于 2018-7-31 12:28:37

saltstack源码安装zabbix_agent

  公司现有的监控使用zabbix,saltstack客户端服务端安装好后,客户端不需要每台机器逐台安装,当然修改zabbix配置文件,直接用salt完成,今天测试了salt源码安装zabbix_agent,效果还行;
  老规矩,top.sls
  # cat top.sls
  base:
  '*':
  - zabbix
  #目录树
  # tree zabbix/
  zabbix/
  ├── conf.sls
  ├── files
  │?? ├── conf.sh
  │?? ├── zabbix-2.4.7.tar.gz
  │?? ├── zabbix_agentd
  │?? └── zabbix_agentd.conf
  ├── init.sls
  └── install.sls
  通过一阵子的salt学习,写sls文件要建立这样的思想:
  1、按sls文件类别划分成:引用文件,安装文件,配置文件,最好独立分成这三部分,出错了更容易排查:
  2、配置前需要考虑几个使用到的功能,最好有份手动安装的配置文档,以此配置,然后开始sls编写:
  需要使用到的功能有:
  使用状态模块:file、cmd、service、user、group等
  使用状态间关系:require、unless、template等
  sls文件之间的互相引用:include
  # cat init.sls
  include:
  - zabbix.conf
  - zabbix.install
  # cat install.sls
  zabbix_source:
  file.managed:
  - name: /usr/local/src/zabbix-2.4.7.tar.gz
  - source: salt://zabbix/files/zabbix-2.4.7.tar.gz
  - user: root
  - group: root
  - mode: 644
  cmd.run:
  - cwd: /usr/local/src
  - name: tar xf zabbix-2.4.7.tar.gz && chown -R root.root zabbix-2.4.7
  - require:
  - file: zabbix_source
  zabbix_user:
  group.present:
  - name: zabbix
  - gid: 201
  user.present:
  - name: zabbix
  - fullname: zabbix
  - uid: 201
  - gid: 201
  - createhome: False
  - shell: /sbin/nologin

  - unless:>  zabbix_pkginstall:
  pkg.installed:
  - pkgs:
  - gcc
  - gcc-c++
  - autoconf
  - automake
  - mod_ssl
  - net-snmp-devel
  - libcurl-devel
  - zlib
  - zlib-devel
  zabbix_commpile:
  cmd.run:
  - name: cd /usr/local/src/zabbix-2.4.7 && ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
  - require:
  - file: zabbix_source
  - user: zabbix_user
  # cat conf.sls
  include:
  - zabbix.install
  /usr/local/zabbix/etc/zabbix_agentd.conf:
  file.managed:
  - name: /usr/local/zabbix/etc/zabbix_agentd.conf
  - user: root
  - mode: 644
  - source: salt://zabbix/files/zabbix_agentd.conf
  - template: jinja   #引用jinja模版
  - require:
  - pkg: zabbix_pkginstall
  salt://zabbix/files/conf.sh:
  cmd.script:
  - env:
  - BATCH: 'yes'
  - unless: test -d /usr/local/etc/zabbix_agentd.conf.d
  - require:
  - cmd: zabbix_commpile
  zabbix_agentd:
  file.managed:
  - name: /etc/init.d/zabbix_agentd
  - user: root
  - mode: 755
  - source: salt://zabbix/files/zabbix_agentd
  cmd.run:
  - name:
  - /sbin/chkconfig --add zabbix_agentd
  - unless: /sbin/chkconfig --list zabbix_agentd
  service.running:
  - enable: True

  ##      ->  - watch:
  - file: /usr/local/zabbix/etc/zabbix_agentd.conf
  因为zabbix_agentd客户端配置文件/usr/local/zabbix/etc/zabbix_agentd.conf,在每个客户端中配置选项Hostname= 各不相同,这就可以把初始化中grains的变量值或者pillar自定义的变量值配置到/usr/local/zabbix/etc/zabbix_agentd.conf中,我这里只以配置文件中Hostname选项为例:
  # vim files/zabbix_agentd.conf
  Hostname={{ grains['host'] }} 这样就可以获取到了系统的hostname,
  更多用法可以使用salt 'minions' grains.items查看,或者salt 'minions' pillar.items
  # cat files/conf.sh
  #!/bin/bash
  #
  mkdir /usr/local/etc/zabbix_agentd.conf.d
  mkdir /var/log/zabbix && chown -R zabbix.zabbix /var/log/zabbix
  ln -s /usr/local/zabbix/bin/* /usr/bin/
  ln -s /usr/local/zabbix/sbin/* /usr/sbin/
  zabbix_agentd 和zabbix_agentd.conf 可以从源码安装包中获取,另外zabbix_agentd的sysv脚本需要修改zabbix_agentd的安装目录才可以。
  一切妥当,最后执行salt 'minions' state.highstate
页: [1]
查看完整版本: saltstack源码安装zabbix_agent