saltstack源码安装zabbix_agent
2016-06-22 11:55
337 查看
公司现有的监控使用zabbix,saltstack客户端服务端安装好后,客户端不需要每台机器逐台安装,当然修改zabbix配置文件,直接用salt完成,今天测试了salt源码安装zabbix_agent,效果还行;
老规矩,top.sls
[root@cacti salt]# cat top.sls
base:
'*':
- zabbix
#目录树
[root@cacti salt]# 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
[root@cacti zabbix]# cat init.sls
include:
- zabbix.conf
- zabbix.install
[root@cacti zabbix]# 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: id zabbix
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
[root@cacti zabbix]# 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
## - reload: True #此处不需要reload
- 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选项为例:
[root@cacti zabbix]# vim files/zabbix_agentd.conf
Hostname={{ grains['host'] }} 这样就可以获取到了系统的hostname,
更多用法可以使用salt 'minions' grains.items查看,或者salt 'minions' pillar.items
[root@cacti zabbix]# 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
老规矩,top.sls
[root@cacti salt]# cat top.sls
base:
'*':
- zabbix
#目录树
[root@cacti salt]# 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
[root@cacti zabbix]# cat init.sls
include:
- zabbix.conf
- zabbix.install
[root@cacti zabbix]# 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: id zabbix
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
[root@cacti zabbix]# 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
## - reload: True #此处不需要reload
- 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选项为例:
[root@cacti zabbix]# vim files/zabbix_agentd.conf
Hostname={{ grains['host'] }} 这样就可以获取到了系统的hostname,
更多用法可以使用salt 'minions' grains.items查看,或者salt 'minions' pillar.items
[root@cacti zabbix]# 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
相关文章推荐
- Python 实现Zabbix自动发送报表
- Zabbix安装详解
- 用zabbix监控nginx_status状态
- Zabbix监控Linux主机设置方法
- Zabbix监控交换机设置方法
- 使用zabbix监控mongodb的方法
- apache的源码安装详细过程全纪录
- 集群运维自动化工具ansible之使用playbook安装zabbix客户端
- Windows 安装配置 Zabbix Agentd
- zabbix进行数据库备份以及表分区的方法
- Saltstack快速入门简单汇总
- 通过Python使用saltstack生成服务器资产清单
- Zabbix客户端安装 for windows server
- 部署企业级zabbix+Orabbix监控Oracle数据库
- SaltStack源码分析之:master端执行salt模块大致流程
- zabbix 触发器 Triggers
- zabbix 分布式部署
- zabbix event事件
- openstack开发之--zabbix被坑的地方
- RedHat6(CentOS6)下Zabbix2安装