使用 Ansible 批量源码安装 zabbix_agentd

首先展示一下角色的目录结构

tree roles/install_zabbix_agentd/
roles/install_zabbix_agentd/
├── files
│   └── zabbix-2.4.7.tar.gz
├── tasks
│   ├── check.yml
│   ├── install.yml
│   └── main.yml
├── templates
│   ├── zabbix_agentd.conf.j2
│   └── zabbix_agentd.j2
└── vars
    └── main.yml

·

task 任务的 main.yml

cat roles/install_zabbix_agentd/tasks/main.yml 
---
# tasks file for install_zabbix_agentd
- include: check.yml

# zabbix_agentd is run by the zabbix user, so when the zabbix user exists, it means that zabbix_agentd has been installed
- include: install.yml
  when: zabbix_agentd_status.stdout == "0" and zabbix_user_status.stdout == "0"

首先通过 check.yml 获取 zabbix_agentd 的进程数变量 zabbix_agentd_status.stdout ,和 zabbix 用户的状态变量 zabbix_user_status.stdout。当 zabbix_agentd_status.stdout == "0" 时,表示无 zabbix_agentd 进程;这时再去判断是否存在已经安装了 zabbix_agentd,但是未启动的情况。

这里我选择通过 zabbix 用户的存在与否来判断是否已经安装 zabbix_agentd,因为 zabbix_agentd 的运行用户为 zabbix;所以,当 zabbix_user_status.stdout == "0" 时,表示无 zabbix 用户,即表示未安装 zabbix_agentd。

·

检查任务文件

cat roles/install_zabbix_agentd/tasks/check.yml 
---
# tasks file for install_zabbix_agentd
- name: check whether zabbix_agentd is running
  shell: "ps -ef | grep zabbix | grep -v grep | wc -l"
  register: zabbix_agentd_status

#- name: print zabbix_agentd_status
#  debug:
#    msg: "{{ zabbix_agentd_status }}"

- name: check whether zabbix user is exists
  shell: "id zabbix | grep -v grep | grep zabbix | wc -l"
  register: zabbix_user_status

#- name: print zabbix_auser_status
#  debug:
#    msg: "{{ zabbix_user_status }}"

·

安装任务文件

cat roles/install_zabbix_agentd/tasks/install.yml 
---
# tasks file for install_zabbix_agentd
- name: unzip the source package
  unarchive: 
    src: "{{ ZIP_NAME }}"
    dest: "{{ UNZIP_DEST }}"
    copy: yes

- name: create zabbix group
  group: 
    gid: 10050 
    name: zabbix  
    state: present

- name: create zabbix user
  user:
    uid: 10050
    name: zabbix
    shell: /sbin/nologin
    group: zabbix
    append: yes

- name: install rely on package
  yum: 
    name: gcc
    state: installed

- name: compile and install zabbix-agentd
  shell: cd "{{ UNZIP_PATH }}";./configure "--prefix={{ PREFIX_PATH }}" --enable-agent;make;make install

- name: copy startup file zabbix_agentd
  template: 
    src: zabbix_agentd.j2
    dest: /etc/init.d/zabbix_agentd
    mode: 0755

- name: copy config file template
  template: 
    src: zabbix_agentd.conf.j2
    dest: "{{ PREFIX_PATH }}/etc/zabbix_agentd.conf"

- name: create rely on path
  file: 
    name: "{{ PREFIX_PATH }}/logs"
    state: directory

- name: modify path attribute
  file: 
    name: "{{ PREFIX_PATH }}"
    owner: zabbix
    group: zabbix
    state: directory
    recurse: yes

- name: startup and enable zabbix-agentd
  shell: service zabbix_agentd start;chkconfig zabbix_agentd on

·

变量的 main.yml

PS: 这里的变量值不要加双引号。

cat roles/install_zabbix_agentd/vars/main.yml 
---
# vars file for install_zabbix_agentd
ZIP_NAME: zabbix-2.4.7.tar.gz
ZIP_DEST: /usr/local/src
UNZIP_DEST: /usr/local/src
UNZIP_PATH: /usr/local/src/zabbix-2.4.7
PREFIX_PATH: /usr/local/zabbix-2.4.7

·

zabbix_agentd 配置文件模板

cat roles/install_zabbix_agentd/templates/zabbix_agentd.conf.j2 
PidFile={{ PREFIX_PATH }}/zabbix_agentd.pid
LogFile={{ PREFIX_PATH }}/logs/zabbix_agentd.log
Server=10.0.10.201
ListenPort=10050
ListenIP=0.0.0.0
ServerActive=10.0.10.201:10051
Hostname={{ ansible_eth0.ipv4.address }}
Include={{ PREFIX_PATH }}/etc/zabbix_agentd.conf.d/*.conf

·

zabbix_agentd 启动文件模板

PS: 这里只展示出需要获取变量的位置。
原文件在源码包中: misc/init.d/fedora/core/zabbix_agentd

cat roles/install_zabbix_agentd/templates/zabbix_agentd.j2
......
	# Zabbix-Directory
	#BASEDIR=/usr/local
	BASEDIR={{ PREFIX_PATH }}
......

·

之前还分享过服务器配置初始化的剧本,有需要可参考文章:使用 Ansible 批量初始化服务器(最终版)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zabbix 是一个企业级分布式开监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。 Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。 Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品代码是免费发布的,可供公共使用。主要讲解8个主题:1.     通过SNMP防火墙设备的监控2.     通过SNMP交换机设备的监控3.     对Windows的性能、服务、用户登陆监控4.     对Linux的性能、用户登陆情况进行监控5.     生产中常用的服务进行监控,如nginx,httpd,mysql,ceph,bind等6.     Zabbix分布式的部署和监控7.     常见的zabbix三种报警方式8.     使用grafana对zabbix中的数据进行展示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值