侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

集群运维自动化工具ansible之使用playbook安装zabbix客户端

技术  /  管理员 发布于 7年前   148

之前介绍了关于ansible的安装与使用(包括模块与playbook使用,地址是///article/52154.htm),今天介绍一下如何使用playbook来部署zabbix客户端。
ansible服务端的环境为centos 6.5 x86_64系统
ansible客户端环境为centos 6.3 x86_64系统
目前我的playbook只允许centos或redhat 6系列系统来安装zabbix客户端,并且客户端的版本是2.0.6.
下面是playbook的结构

14:29:30 # pwd/etc/ansible/rolesroot@ip-10-10-10-10:/etc/ansible/roles14:29:37 # tree zabbix_client_*zabbix_client_delete  删除已经安装的zabbix客户端├── files      存放文件的├── handlers    重启的东东├── meta      galaxy_info的信息│  └── main.yml  ├── tasks      操作的任务流程│  ├── delete.yml │  └── main.yml├── templates    模板└── vars      变量  └── main.ymlzabbix_client_install├── files│  └── zabbix-2.0.6.tar.gz├── handlers├── meta│  └── main.yml├── tasks│  ├── copy.yml│  ├── delete.yml│  ├── install.yml│  └── main.yml├── templates│  ├── zabbix_agentd│  └── zabbix_agentd.conf└── vars  └── main.yml 12 directories, 13 files

下面是先介绍一下安装方面zabbix_client_install的内容
1、galaxy_info的信息

14:32:15 # cat /etc/ansible/roles/zabbix_client_install/meta/main.yml galaxy_info: author: Deng Lei description: Install Zabbix Client  license: MIT min_ansible_version: 1.6 platforms: - name: CentOS  versions:  - 6 categories: - Monitordependencies: []

2、task里的copy.xml信息

14:33:35 # cat /etc/ansible/roles/zabbix_client_install/tasks/copy.yml  - name: Stop Exist Zabbix Client Service In Redhat Client  shell: ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9 >>/dev/null 2>&1  ignore_errors: yes  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Delete Exist Zabbix Client Dir In Redhat Client  shell: rm -rf {{ zabbix_dir }}/zabbix  ignore_errors: yes  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Install Base Require Software In Redhat Client  yum: name={{ item }} state=latest  with_items:   - telnet   - dmidecode   - tar - name: Create Zabbix User In Redhat Client  user: name={{ zabbix_user }} state=present createhome=no shell=/sbin/nologin  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Copy Zabbix Client Software To Redhat Client  copy: src=zabbix-{{ zabbix_version }}.tar.gz dest=/tmp/zabbix-{{ zabbix_version }}.tar.gz owner=root group=root  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Uncompression Zabbix Client Software To Redhat Client  shell: tar zxf /tmp/zabbix-{{ zabbix_version }}.tar.gz -C {{ zabbix_dir }}/  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Copy Zabbix Start Script To Redhat Client  template: src=zabbix_agentd dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Copy Zabbix Config To Redhat Client  template: src=zabbix_agentd.conf dest={{ zabbix_dir }}/zabbix/conf/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6

此文件是复制对应的文件到客户端

3、task的install.yml信息

14:34:26 # cat /etc/ansible/roles/zabbix_client_install/tasks/install.yml  - name: Modify Zabbix Dir Permission In Redhat Client  file: path={{ zabbix_dir }}/zabbix owner={{ zabbix_user }} group={{ zabbix_user }} mode=0755  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Check Zabbix User Sudo Permission In Redhat Client  shell: grep "{{ zabbix_user }}" /etc/sudoers|wc -l  register: zabbix_sudoer  ignore_errors: True  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Give Sudo Permission To Zabbix User In Redhat Client  shell: echo "{{ zabbix_user }} ALL=(root) NOPASSWD:/bin/netstat, /usr/bin/omreport" >> /etc/sudoers  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 and zabbix_sudoer|int ==0 - name: Start Zabbix Service In Redhat Client  shell: /etc/init.d/zabbix_agentd start  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6 - name: Add Boot Start Zabbix Service In Redhat Client  shell: chkconfig --level 345 zabbix_agentd on  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6

此文件主要是安装

4、tasks的delete.yml信息

14:35:08 # cat /etc/ansible/roles/zabbix_client_install/tasks/delete.yml  - name: Delete Zabbix compression Software In Redhat Client  shell: rm -rf /tmp/zabbix-{{ zabbix_version }}.tar.gz  when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int == 6

此文件是安装完成后,删除安装前的文件

5、tasks的mail.yml

14:35:37 # cat /etc/ansible/roles/zabbix_client_install/tasks/main.yml - include: copy.yml- include: install.yml- include: delete.yml

此文件是允许运行哪个文件

6、templates的zabbix_agentd

15:15:45 # cat /etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd#!/bin/bash## chkconfig: - 85 15# description: Zabbix client script.# processname: Zabbix. /etc/profile SERVICE="Zabbix agent"DAEMON={{ zabbix_dir }}/zabbix/sbin/zabbix_agentdPIDFILE=/tmp/zabbix_agentd.pidCONFIG={{ zabbix_dir }}/zabbix/conf/zabbix_agentd.confzabbix_agent_status=`ps aux|grep zabbix_agentd.conf|grep -v grep|wc -l`zabbix_agent_pid=`ps aux|grep zabbix_agentd|grep -v grep|awk 'NR==1{print $2}'`# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/networkfunction check(){if [ $? -eq 0 ];then  action $"Operating is:" /bin/trueelse  action $"Operating is:" /bin/falsefi}case $1 in 'start')  if [ -x ${DAEMON} ]  then   $DAEMON -c $CONFIG   # Error checking here would be good...   echo "${SERVICE} started."  else   echo "Can't find file ${DAEMON}."   echo "${SERVICE} NOT started."  fi  check ;;  'stop')  if [ -s ${PIDFILE} ]  then   if kill `cat ${PIDFILE}` >/dev/null 2>&1   then    echo "${SERVICE} terminated."    rm -f ${PIDFILE}   fi  fi  check ;; 'restart')  /bin/bash $0 stop  sleep 5  /bin/bash $0 start ;;  'status')  if [ $zabbix_agent_status -ne 0 ];then    echo "Zabbix Agentd is running ($zabbix_agent_pid)"  else    echo "Zabbix Agentd is not running!"  fi  ;; *)  echo "Usage: $0 {start|stop|status|restart}";; esacexit 0

这个文件是启动客户端的脚本

7、templates的zabbix_agentd.conf

15:16:36 # cat /etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd.conf # 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=/tmp/zabbix_agentd.log ### Option: LogFileSize#  Maximum size of log file in MB.#  0 - disable automatic log rotation.## Mandatory: no# Range: 0-1024# Default:# LogFileSize=1 ### 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=0 ### Option: LogRemoteCommands#  Enable logging of executed shell commands as warnings.#  0 - disabled#  1 - enabled## Mandatory: no# Default:# LogRemoteCommands=0 ##### 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=zabbix-server-external.autoclouds.net Server={{ zabbix_server_ip }} ### Option: ListenPort#  Agent will listen on this port for connections from the server.## Mandatory: no# Range: 1024-32767# Default:ListenPort={{ zabbix_port }} ### 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 IP:port (or hostname:port) 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= ### 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={{ ansible_hostname }} ### 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=20 ### 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=UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet {{ ansible_default_ipv4.address }} $1 2>&1 | awk '/STAT $2 / {print $NF}'UserParameter=mysql[*],mysql -h {{ ansible_default_ipv4.address }} -P 3306 -uzabbix -pzabbix -e "show global status"|grep "\<$1\>"|cut -f2UserParameter=redis_stats[*],(echo info; sleep 1) | telnet {{ ansible_default_ipv4.address }} $1 2>&1 |grep $2|cut -d : -f2UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/bin/mongo admin | grep "$2"|awk -F: '{print $$2}'|awk -F, '{print $$1}'UserParameter=check_lvm[*],/usr/bin/sudo /usr/local/zabbix/bin/check_lvm.sh $1UserParameter=TCP_ESTABLISHED,ss -s|awk 'NR==2{print $4}'|cut -d , -f1UserParameter=TCP_CLOSED,ss -s|awk 'NR==2{print $6}'|cut -d , -f1UserParameter=TCP_TIMEWAIT,ss -s|awk 'NR==2{print $12}'|cut -d / -f1UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/zabbix_low_discovery.sh $1UserParameter=mysql_stats[*],mysql -h {{ ansible_default_ipv4.address }} -P $1 -uzabbix -pzabbix -e "show global status"|grep "\<$2\>"|cut -f2UserParameter=mysql_stats_slave[*],mysql -h {{ ansible_default_ipv4.address }} -P $1 -uzabbix -pzabbix -e "show slave status\G"|grep "\<$2\>"|awk '{if($NF=="Yes") {print 1} else {print 0}}'UserParameter=check_platform,dmidecode |grep Vendor|awk -F ' ' '{if($2=="Dell") {print 1} else {print 0}}'#follow is hardware monitorUserParameter=hardware_battery,omreport chassis batteries|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'UserParameter=hardware_cpu_model,awk -v hardware_cpu_crontol=`sudo omreport chassis biossetup|awk '/C State/{if($NF=="Enabled") {print 0} else {print 1}}'` -v hardware_cpu_c1=`sudo omreport chassis biossetup|awk '/C1[-|E]/{if($NF=="Enabled") {print 0} else {print 1}}'` 'BEGIN{if(hardware_cpu_crontol==0 && hardware_cpu_c1==0) {print 0} else {print 1}}'UserParameter=hardware_fan_health,awk -v hardware_fan_number=`omreport chassis fans|grep -c "^Index"` -v hardware_fan=`omreport chassis fans|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_fan_number==hardware_fan) {print 1} else {print 0}}'UserParameter=hardware_memory_health,awk -v hardware_memory=`omreport chassis memory|awk '/^Health/{print $NF}'` 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'UserParameter=hardware_nic_health,awk -v hardware_nic_number=`omreport chassis nics |grep -c "Interface Name"` -v hardware_nic=`omreport chassis nics |awk '/^Connection Status/{print $NF}'|wc -l` 'BEGIN{if(hardware_nic_number==hardware_nic) {print 1} else {print 0}}'UserParameter=hardware_cpu,omreport chassis processors|awk '/^Health/{if($NF=="Ok") {print 1} else {print 0}}'UserParameter=hardware_power_health,awk -v hardware_power_number=`omreport chassis pwrsupplies|grep -c "Index"` -v hardware_power=`omreport chassis pwrsupplies|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_power_number==hardware_power) {print 1} else {print 0}}'UserParameter=hardware_temp,omreport chassis temps|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'|head -n 1UserParameter=hardware_physics_health,awk -v hardware_physics_disk_number=`omreport storage pdisk controller=0|grep -c "^ID"` -v hardware_physics_disk=`omreport storage pdisk controller=0|awk '/^State/{if($NF=="Online") count+=1}END{print count}'` 'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk) {print 1} else {print 0}}'UserParameter=hardware_virtual_health,awk -v hardware_virtual_disk_number=`omreport storage vdisk controller=0|grep -c "^ID"` -v hardware_virtual_disk=`omreport storage vdisk controller=0|awk '/^State/{if($NF=="Ready") count+=1}END{print count}'` 'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk) {print 1} else {print 0}}'UserParameter=pyora[*],/usr/local/zabbix/bin/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

此文件是客户端的配置文件
8、vars的main.yml

15:17:06 # cat /etc/ansible/roles/zabbix_client_install/vars/main.yml zabbix_dir: /usr/local      客户端安全目录zabbix_version: 2.0.6      客户端软件版本zabbix_user: zabbix       客户端用户zabbix_port: 10050        客户端的端口zabbix_server_ip: 192.168.1.10  zabbix_server的ip

此文件是配置变量的

9、ansible安装zabbix客户端的playbook配置文件zabbix_client_install.yml

15:20:02 # cat /etc/ansible/zabbix_client_install.yml ---- hosts: "{{host}}" remote_user: "{{user}}" gather_facts: True roles:  - zabbix_client_install

10、使用playbook安装zabbix客户端

我的测试客户端环境是centos 6.3,ip是192.168.240.17,使用key登陆

15:22:01 # cd /etc/ansible/root@ip-10-10-10-10:/etc/ansible15:22:04 # time ansible-playbook zabbix_client_install.yml --extra-vars "host=192.168.240.17 user=root" --private-key=/root/test.pem  PLAY [192.168.240.17] *********************************************************  GATHERING FACTS *************************************************************** ok: [192.168.240.17] TASK: [zabbix_client_install | Stop Exist Zabbix Client Service In Redhat Client] *** failed: [192.168.240.17] => {"changed": true, "cmd": "ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9 >>/dev/null 2>&1 ", "delta": "0:00:00.018213", "end": "2014-07-10 07:22:34.793910", "item": "", "rc": 123, "start": "2014-07-10 07:22:34.775697"}...ignoring TASK: [zabbix_client_install | Delete Exist Zabbix Client Dir In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Install Base Require Software In Redhat Client] *** ok: [192.168.240.17] => (item=telnet,dmidecode,tar) TASK: [zabbix_client_install | Create Zabbix User In Redhat Client] *********** changed: [192.168.240.17] TASK: [zabbix_client_install | Copy Zabbix Client Software To Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Uncompression Zabbix Client Software To Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Copy Zabbix Start Script To Redhat Client] ***** changed: [192.168.240.17] TASK: [zabbix_client_install | Copy Zabbix Config To Redhat Client] *********** changed: [192.168.240.17] TASK: [zabbix_client_install | Modify Zabbix Dir Permission In Redhat Client] *** ok: [192.168.240.17] TASK: [zabbix_client_install | Check Zabbix User Sudo Permission In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Give Sudo Permission To Zabbix User In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Start Zabbix Service In Redhat Client] ********* changed: [192.168.240.17] TASK: [zabbix_client_install | Add Boot Start Zabbix Service In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_install | Delete Zabbix compression Software In Redhat Client] *** changed: [192.168.240.17] PLAY RECAP ******************************************************************** 192.168.240.17       : ok=15  changed=12  unreachable=0  failed=0   real  0m39.888suser  0m1.547ssys 0m0.197s

可以看到39秒就安装完成,主要花费时间比较长的地方是fact收集、yum安装、文件传输。

11、测试安装情况

[root@ip-10-10-240-21 tmp]# ifconfigeth0   Link encap:Ethernet HWaddr FA:16:3E:34:62:D0      inet addr:10.10.240.21 Bcast:10.10.240.255 Mask:255.255.255.0     inet6 addr: fe80::f816:3eff:fe34:62d0/64 Scope:Link     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1     RX packets:542391 errors:0 dropped:0 overruns:0 frame:0     TX packets:77391 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:1000      RX bytes:142341119 (135.7 MiB) TX bytes:6451154 (6.1 MiB) lo    Link encap:Local Loopback      inet addr:127.0.0.1 Mask:255.0.0.0     inet6 addr: ::1/128 Scope:Host     UP LOOPBACK RUNNING MTU:16436 Metric:1     RX packets:10 errors:0 dropped:0 overruns:0 frame:0     TX packets:10 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:0      RX bytes:700 (700.0 b) TX bytes:700 (700.0 b) [root@ip-10-10-240-21 tmp]# ps -ef|grep zabbixzabbix  26991   1 0 07:22 ?    00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.confzabbix  26993 26991 0 07:22 ?    00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.confzabbix  26994 26991 0 07:22 ?    00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.confzabbix  26995 26991 0 07:22 ?    00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.confzabbix  26996 26991 0 07:22 ?    00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.confroot   27102 13773 0 07:24 pts/0  00:00:00 grep zabbix[root@ip-10-10-240-21 tmp]# grep -Ev '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.logServer=192.168.1.10ListenPort=10050Hostname=ip-10-10-240-21Timeout=20UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 10.10.240.21 $1 2>&1 | awk '/STAT $2 / {print $NF}'UserParameter=mysql[*],mysql -h 10.10.240.21 -P 3306 -uzabbix -pzabbix -e "show global status"|grep "\<$1\>"|cut -f2UserParameter=redis_stats[*],(echo info; sleep 1) | telnet 10.10.240.21 $1 2>&1 |grep $2|cut -d : -f2UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/bin/mongo admin | grep "$2"|awk -F: '{print $$2}'|awk -F, '{print $$1}'UserParameter=check_lvm[*],/usr/bin/sudo /usr/local/zabbix/bin/check_lvm.sh $1UserParameter=TCP_ESTABLISHED,ss -s|awk 'NR==2{print $4}'|cut -d , -f1UserParameter=TCP_CLOSED,ss -s|awk 'NR==2{print $6}'|cut -d , -f1UserParameter=TCP_TIMEWAIT,ss -s|awk 'NR==2{print $12}'|cut -d / -f1UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/zabbix_low_discovery.sh $1UserParameter=mysql_stats[*],mysql -h 10.10.240.21 -P $1 -uzabbix -pzabbix -e "show global status"|grep "\<$2\>"|cut -f2UserParameter=mysql_stats_slave[*],mysql -h 10.10.240.21 -P $1 -uzabbix -pzabbix -e "show slave status\G"|grep "\<$2\>"|awk '{if($NF=="Yes") {print 1} else {print 0}}'UserParameter=check_platform,dmidecode |grep Vendor|awk -F ' ' '{if($2=="Dell") {print 1} else {print 0}}'UserParameter=hardware_battery,omreport chassis batteries|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'UserParameter=hardware_cpu_model,awk -v hardware_cpu_crontol=`sudo omreport chassis biossetup|awk '/C State/{if($NF=="Enabled") {print 0} else {print 1}}'` -v hardware_cpu_c1=`sudo omreport chassis biossetup|awk '/C1[-|E]/{if($NF=="Enabled") {print 0} else {print 1}}'` 'BEGIN{if(hardware_cpu_crontol==0 && hardware_cpu_c1==0) {print 0} else {print 1}}'UserParameter=hardware_fan_health,awk -v hardware_fan_number=`omreport chassis fans|grep -c "^Index"` -v hardware_fan=`omreport chassis fans|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_fan_number==hardware_fan) {print 1} else {print 0}}'UserParameter=hardware_memory_health,awk -v hardware_memory=`omreport chassis memory|awk '/^Health/{print $NF}'` 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'UserParameter=hardware_nic_health,awk -v hardware_nic_number=`omreport chassis nics |grep -c "Interface Name"` -v hardware_nic=`omreport chassis nics |awk '/^Connection Status/{print $NF}'|wc -l` 'BEGIN{if(hardware_nic_number==hardware_nic) {print 1} else {print 0}}'UserParameter=hardware_cpu,omreport chassis processors|awk '/^Health/{if($NF=="Ok") {print 1} else {print 0}}'UserParameter=hardware_power_health,awk -v hardware_power_number=`omreport chassis pwrsupplies|grep -c "Index"` -v hardware_power=`omreport chassis pwrsupplies|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_power_number==hardware_power) {print 1} else {print 0}}'UserParameter=hardware_temp,omreport chassis temps|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'|head -n 1UserParameter=hardware_physics_health,awk -v hardware_physics_disk_number=`omreport storage pdisk controller=0|grep -c "^ID"` -v hardware_physics_disk=`omreport storage pdisk controller=0|awk '/^State/{if($NF=="Online") count+=1}END{print count}'` 'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk) {print 1} else {print 0}}'UserParameter=hardware_virtual_health,awk -v hardware_virtual_disk_number=`omreport storage vdisk controller=0|grep -c "^ID"` -v hardware_virtual_disk=`omreport storage vdisk controller=0|awk '/^State/{if($NF=="Ready") count+=1}END{print count}'` 'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk) {print 1} else {print 0}}'UserParameter=pyora[*],/usr/local/zabbix/bin/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8[root@ip-10-10-240-21 tmp]# ll /tmp/total 12-rw------- 1 root  root  197 Jul 9 09:35 yum_save_tx-2014-07-09-09-35ibcBiO.yumtx-rw-rw-r-- 1 zabbix zabbix 320 Jul 10 07:22 zabbix_agentd.log-rw-rw-r-- 1 zabbix zabbix  5 Jul 10 07:22 zabbix_agentd.pid[root@ip-10-10-240-21 tmp]# chkconfig --list|grep zabbix_agentdzabbix_agentd   0:off  1:off  2:off  3:on  4:on  5:on  6:off[root@ip-10-10-240-21 tmp]# grep zabbix /etc/sudoerszabbix ALL=(root) NOPASSWD:/bin/netstat, /usr/bin/omreport[root@ip-10-10-240-21 tmp]# ll /etc/init.d/zabbix_agentd -rwxr-xr-x 1 root root 1444 Jul 10 07:22 /etc/init.d/zabbix_agentd

可以看到安装后的客户端,完全是按照我的要求来做的。

12、删除已经安装的客户端

15:22:54 # time ansible-playbook zabbix_client_delete.yml --extra-vars "host=192.168.240.17 user=root" --private-key=/root/test.pem  PLAY [192.168.240.17] *********************************************************  GATHERING FACTS *************************************************************** ok: [192.168.240.17] TASK: [zabbix_client_delete | Stop Zabbix Service In RedHat Client] *********** changed: [192.168.240.17] TASK: [zabbix_client_delete | Delete Boot Start Zabbix Service In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_delete | Delete Zabbix User In Redhat Client] ************ changed: [192.168.240.17] TASK: [zabbix_client_delete | Delete Zabbix Dir In Redhat Client] ************* changed: [192.168.240.17] TASK: [zabbix_client_delete | Delete Zabbix Start Script In Redhat Client] **** changed: [192.168.240.17] TASK: [zabbix_client_delete | Check Zabbix User Sudo Permission In Redhat Client] *** changed: [192.168.240.17] TASK: [zabbix_client_delete | Delete Sudo Permission To Zabbix User In Redhat Client] *** changed: [192.168.240.17] PLAY RECAP ******************************************************************** 192.168.240.17       : ok=8  changed=7  unreachable=0  failed=0   real  0m25.497suser  0m0.847ssys 0m0.159s

13、测试删除情况

[root@ip-10-10-240-21 tmp]# ll /tmp/total 4-rw------- 1 root root 197 Jul 9 09:35 yum_save_tx-2014-07-09-09-35ibcBiO.yumtx[root@ip-10-10-240-21 tmp]# ps -ef|grep zabbixroot   27665 13773 0 07:27 pts/0  00:00:00 grep zabbix[root@ip-10-10-240-21 tmp]# ll /usr/local/total 40drwxr-xr-x. 2 root root 4096 Sep 23 2011 bindrwxr-xr-x. 2 root root 4096 Sep 23 2011 etcdrwxr-xr-x. 2 root root 4096 Sep 23 2011 gamesdrwxr-xr-x. 2 root root 4096 Sep 23 2011 includedrwxr-xr-x. 2 root root 4096 Sep 23 2011 libdrwxr-xr-x. 2 root root 4096 Sep 23 2011 lib64drwxr-xr-x. 2 root root 4096 Sep 23 2011 libexecdrwxr-xr-x. 2 root root 4096 Sep 23 2011 sbindrwxr-xr-x. 5 root root 4096 May 12 2013 sharedrwxr-xr-x. 3 root root 4096 May 13 2013 src[root@ip-10-10-240-21 tmp]# grep zabbix /etc/sudoers[root@ip-10-10-240-21 tmp]# ll /etc/init.d/zabbix_agentdls: cannot access /etc/init.d/zabbix_agentd: No such file or directory[root@ip-10-10-240-21 tmp]# chkconfig --list|grep zabbix_agentd[root@ip-10-10-240-21 tmp]#

可以看到已经完全删除。
如果大家想使用我的例子,可以从附件里下载,然后放到/etc/ansible目录里,下面是压缩包里的内容

-rw-r--r-- root/root    108 2014-07-10 15:20 zabbix_client_install.yml-rw-r--r-- root/root    121 2014-07-09 18:09 zabbix_client_delete.ymldrwxr-xr-x root/root     0 2014-07-01 16:38 roles/zabbix_client_install/drwxr-xr-x root/root     0 2014-07-08 14:30 roles/zabbix_client_install/meta/-rw-r--r-- root/root    207 2014-07-08 14:30 roles/zabbix_client_install/meta/main.ymldrwxr-xr-x root/root     0 2014-07-10 14:07 roles/zabbix_client_install/tasks/-rw-r--r-- root/root    199 2014-07-10 14:02 roles/zabbix_client_install/tasks/delete.yml-rw-r--r-- root/root    65 2014-07-10 14:02 roles/zabbix_client_install/tasks/main.yml-rw-r--r-- root/root   1789 2014-07-10 14:02 roles/zabbix_client_install/tasks/copy.yml-rw-r--r-- root/root   1110 2014-07-10 14:07 roles/zabbix_client_install/tasks/install.ymldrwxr-xr-x root/root     0 2014-06-19 13:30 roles/zabbix_client_install/handlers/drwxr-xr-x root/root     0 2014-07-09 17:54 roles/zabbix_client_install/vars/-rw-r--r-- root/root    115 2014-07-09 17:54 roles/zabbix_client_install/vars/main.ymldrwxr-xr-x root/root     0 2014-07-09 17:53 roles/zabbix_client_install/templates/-rw-r--r-- zabbix/zabbix 10465 2014-07-09 17:53 roles/zabbix_client_install/templates/zabbix_agentd.conf-rwxr-xr-x root/root   1456 2014-07-08 15:20 roles/zabbix_client_install/templates/zabbix_agentddrwxr-xr-x root/root     0 2014-07-09 17:13 roles/zabbix_client_install/files/-rw-r--r-- root/root  292293 2014-07-09 17:13 roles/zabbix_client_install/files/zabbix-2.0.6.tar.gzdrwxr-xr-x root/root     0 2014-06-23 14:03 roles/zabbix_client_delete/drwxr-xr-x root/root     0 2014-07-09 18:08 roles/zabbix_client_delete/meta/-rw-r--r-- root/root    205 2014-07-09 18:08 roles/zabbix_client_delete/meta/main.ymldrwxr-xr-x root/root     0 2014-07-10 14:28 roles/zabbix_client_delete/tasks/-rw-r--r-- root/root   1518 2014-07-10 14:08 roles/zabbix_client_delete/tasks/delete.yml-rw-r--r-- root/root    22 2014-07-10 14:08 roles/zabbix_client_delete/tasks/main.ymldrwxr-xr-x root/root     0 2014-06-24 14:14 roles/zabbix_client_delete/handlers/drwxr-xr-x root/root     0 2014-07-03 13:16 roles/zabbix_client_delete/vars/-rw-r--r-- root/root    115 2014-07-09 17:55 roles/zabbix_client_delete/vars/main.ymldrwxr-xr-x root/root     0 2014-07-09 18:08 roles/zabbix_client_delete/templates/drwxr-xr-x root/root     0 2014-06-24 13:53 roles/zabbix_client_delete/files/

后续我会继续介绍使用playbook安装其他软件的例子。


  • 上一条:
    伪静态URL中文乱码问题解决方法
    下一条:
    集群运维自动化工具ansible的安装与使用(包括模块与playbook使用)第1/2页
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客