Ansible-playbook roles安装zabbix客户端实例(学习笔记三十),


目前我的playbook只允许centos或redhat 6系列系统来安装zabbix客户端,并且客户端的版本是2.0.6.

下面是playbook的结构

14:29:30 # pwd

/etc/ansible/roles

root@ip-10-10-10-10:/etc/ansible/roles

14:29:37 # tree zabbix_client_*

zabbix_client_delete   删除已经安装的zabbix客户端

├── files            存放文件的

├── handlers        重启的东东

├── meta            galaxy_info的信息

│   └── main.yml    

├── tasks           操作的任务流程

│   ├── delete.yml  

│   └── main.yml

├── templates       模板

└── vars            变量

    └── main.yml

zabbix_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:

  - Monitor

dependencies: []

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|grepzabbix|grep-vgrep|awk'{print $2}'|xargskill-9 >>/dev/null2>&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: tarzxf /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_agentdowner=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 }}/zabbixowner={{ 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_agentdstart

    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_agentd

PIDFILE=/tmp/zabbix_agentd.pid

CONFIG={{ zabbix_dir }}/zabbix/conf/zabbix_agentd.conf

zabbix_agent_status=`psaux|grepzabbix_agentd.conf|grep-vgrep|wc-l`

zabbix_agent_pid=`psaux|grepzabbix_agentd|grep-vgrep|awk'NR==1{print $2}'`

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

functioncheck()

{

if[ $? -eq0 ];then

    action $"Operating is:"/bin/true

else

    action $"Operating is:"/bin/false

fi

}

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

      ifkill`cat${PIDFILE}` >/dev/null2>&1

      then

        echo"${SERVICE} terminated."

        rm-f ${PIDFILE}

      fi

    fi

    check

  ;;

  'restart')

   /bin/bash$0 stop

    sleep5

    /bin/bash$0 start

  ;;


  'status')

    if[ $zabbix_agent_status -ne0 ];then

        echo"Zabbix Agentd is running ($zabbix_agent_pid)"

    else

        echo"Zabbix Agentd is not running!"

    fi

    ;;


*)

    echo"Usage: $0 {start|stop|status|restart}"

;;


esac

exit0

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

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=,

#   See 'zabbix_agentd' directory for examples.

#

# Mandatory: no

# Default:

# UserParameter=

UserParameter=memcached_stats[*],(echostats; sleep1) | 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-f2

UserParameter=redis_stats[*],(echoinfo; sleep1) | telnet {{ ansible_default_ipv4.address }} $1 2>&1 |grep$2|cut-d : -f2

UserParameter=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/mongoadmin | grep"$2"|awk-F: '{print $$2}'|awk-F, '{print $$1}'

UserParameter=check_lvm[*],/usr/bin/sudo/usr/local/zabbix/bin/check_lvm.sh $1

UserParameter=TCP_ESTABLISHED,ss -s|awk'NR==2{print $4}'|cut-d , -f1

UserParameter=TCP_CLOSED,ss -s|awk'NR==2{print $6}'|cut-d , -f1

UserParameter=TCP_TIMEWAIT,ss -s|awk'NR==2{print $12}'|cut-d / -f1

UserParameter=zabbix_low_discovery[*],/bin/bash/usr/local/zabbix/bin/zabbix_low_discovery.sh $1

UserParameter=mysql_stats[*],mysql -h {{ ansible_default_ipv4.address }} -P $1 -uzabbix -pzabbix -e "show global status"|grep"\<$2\>"|cut-f2

UserParameter=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 |grepVendor|awk-F ' ''{if($2=="Dell") {print 1} else {print 0}}'

#follow is hardware monitor

UserParameter=hardware_battery,omreport chassis batteries|awk'/^Status/{if($NF=="Ok") {print 1} else {print 0}}'

UserParameter=hardware_cpu_model,awk-vhardware_cpu_crontol=`sudoomreport chassis biossetup|awk'/C State/{if($NF=="Enabled") {print 0} else {print 1}}'` -vhardware_cpu_c1=`sudoomreport 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-vhardware_fan_number=`omreport chassis fans|grep-c "^Index"` -vhardware_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-vhardware_memory=`omreport chassis memory|awk'/^Health/{print $NF}'` 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'

UserParameter=hardware_nic_health,awk-vhardware_nic_number=`omreport chassis nics |grep-c "Interface Name"` -vhardware_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-vhardware_power_number=`omreport chassis pwrsupplies|grep-c "Index"` -vhardware_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 1

UserParameter=hardware_physics_health,awk-vhardware_physics_disk_number=`omreport storage pdisk controller=0|grep-c "^ID"` -vhardware_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-vhardware_virtual_disk_number=`omreport storage vdisk controller=0|grep-c "^ID"` -vhardware_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/ansible

15: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.888s

user    0m1.547s

sys 0m0.197s

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

11、测试安装情况

[root@ip-10-10-240-21 tmp]# ifconfig

eth0      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/64Scope: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/128Scope: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 zabbix

zabbix   26991     1  0 07:22 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_agentd-c /usr/local/zabbix/conf/zabbix_agentd.conf

zabbix   26993 26991  0 07:22 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_agentd-c /usr/local/zabbix/conf/zabbix_agentd.conf

zabbix   26994 26991  0 07:22 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_agentd-c /usr/local/zabbix/conf/zabbix_agentd.conf

zabbix   26995 26991  0 07:22 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_agentd-c /usr/local/zabbix/conf/zabbix_agentd.conf

zabbix   26996 26991  0 07:22 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_agentd-c /usr/local/zabbix/conf/zabbix_agentd.conf

root     27102 13773  0 07:24 pts/000:00:00 grepzabbix

[root@ip-10-10-240-21 tmp]# grep -Ev '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf 

LogFile=/tmp/zabbix_agentd.log

Server=192.168.1.10

ListenPort=10050

Hostname=ip-10-10-240-21

Timeout=20

UserParameter=memcached_stats[*],(echostats; sleep1) | 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-f2

UserParameter=redis_stats[*],(echoinfo; sleep1) | telnet 10.10.240.21 $1 2>&1 |grep$2|cut-d : -f2

UserParameter=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/mongoadmin | grep"$2"|awk-F: '{print $$2}'|awk-F, '{print $$1}'

UserParameter=check_lvm[*],/usr/bin/sudo/usr/local/zabbix/bin/check_lvm.sh $1

UserParameter=TCP_ESTABLISHED,ss -s|awk'NR==2{print $4}'|cut-d , -f1

UserParameter=TCP_CLOSED,ss -s|awk'NR==2{print $6}'|cut-d , -f1

UserParameter=TCP_TIMEWAIT,ss -s|awk'NR==2{print $12}'|cut-d / -f1

UserParameter=zabbix_low_discovery[*],/bin/bash/usr/local/zabbix/bin/zabbix_low_discovery.sh $1

UserParameter=mysql_stats[*],mysql -h 10.10.240.21 -P $1 -uzabbix -pzabbix -e "show global status"|grep"\<$2\>"|cut-f2

UserParameter=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 |grepVendor|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-vhardware_cpu_crontol=`sudoomreport chassis biossetup|awk'/C State/{if($NF=="Enabled") {print 0} else {print 1}}'` -vhardware_cpu_c1=`sudoomreport 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-vhardware_fan_number=`omreport chassis fans|grep-c "^Index"` -vhardware_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-vhardware_memory=`omreport chassis memory|awk'/^Health/{print $NF}'` 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'

UserParameter=hardware_nic_health,awk-vhardware_nic_number=`omreport chassis nics |grep-c "Interface Name"` -vhardware_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-vhardware_power_number=`omreport chassis pwrsupplies|grep-c "Index"` -vhardware_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 1

UserParameter=hardware_physics_health,awk-vhardware_physics_disk_number=`omreport storage pdisk controller=0|grep-c "^ID"` -vhardware_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-vhardware_virtual_disk_number=`omreport storage vdisk controller=0|grep-c "^ID"` -vhardware_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_agentd

zabbix_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/sudoers

zabbix 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.497s

user    0m0.847s

sys 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 zabbix

root     27665 13773  0 07:27 pts/000:00:00 grepzabbix

[root@ip-10-10-240-21 tmp]# ll /usr/local/

total 40

drwxr-xr-x. 2 root root 4096 Sep 23  2011 bin

drwxr-xr-x. 2 root root 4096 Sep 23  2011 etc

drwxr-xr-x. 2 root root 4096 Sep 23  2011 games

drwxr-xr-x. 2 root root 4096 Sep 23  2011 include

drwxr-xr-x. 2 root root 4096 Sep 23  2011 lib

drwxr-xr-x. 2 root root 4096 Sep 23  2011 lib64

drwxr-xr-x. 2 root root 4096 Sep 23  2011 libexec

drwxr-xr-x. 2 root root 4096 Sep 23  2011 sbin

drwxr-xr-x. 5 root root 4096 May 12  2013 share

drwxr-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_agentd

ls: cannot access /etc/init.d/zabbix_agentd: No such fileor 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/root108 2014-07-10 15:20 zabbix_client_install.yml

-rw-r--r-- root/root121 2014-07-09 18:09 zabbix_client_delete.yml

drwxr-xr-x root/root0 2014-07-01 16:38 roles/zabbix_client_install/

drwxr-xr-x root/root0 2014-07-08 14:30 roles/zabbix_client_install/meta/

-rw-r--r-- root/root207 2014-07-08 14:30 roles/zabbix_client_install/meta/main.yml

drwxr-xr-x root/root0 2014-07-10 14:07 roles/zabbix_client_install/tasks/

-rw-r--r-- root/root199 2014-07-10 14:02 roles/zabbix_client_install/tasks/delete.yml

-rw-r--r-- root/root65 2014-07-10 14:02 roles/zabbix_client_install/tasks/main.yml

-rw-r--r-- root/root1789 2014-07-10 14:02 roles/zabbix_client_install/tasks/copy.yml

-rw-r--r-- root/root1110 2014-07-10 14:07 roles/zabbix_client_install/tasks/install.yml

drwxr-xr-x root/root0 2014-06-19 13:30 roles/zabbix_client_install/handlers/

drwxr-xr-x root/root0 2014-07-09 17:54 roles/zabbix_client_install/vars/

-rw-r--r-- root/root115 2014-07-09 17:54 roles/zabbix_client_install/vars/main.yml

drwxr-xr-x root/root0 2014-07-09 17:53 roles/zabbix_client_install/templates/

-rw-r--r-- zabbix/zabbix10465 2014-07-09 17:53 roles/zabbix_client_install/templates/zabbix_agentd.conf

-rwxr-xr-x root/root1456 2014-07-08 15:20 roles/zabbix_client_install/templates/zabbix_agentd

drwxr-xr-x root/root0 2014-07-09 17:13 roles/zabbix_client_install/files/

-rw-r--r-- root/root292293 2014-07-09 17:13 roles/zabbix_client_install/files/zabbix-2.0.6.tar.gz

drwxr-xr-x root/root0 2014-06-23 14:03 roles/zabbix_client_delete/

drwxr-xr-x root/root0 2014-07-09 18:08 roles/zabbix_client_delete/meta/

-rw-r--r-- root/root205 2014-07-09 18:08 roles/zabbix_client_delete/meta/main.yml

drwxr-xr-x root/root0 2014-07-10 14:28 roles/zabbix_client_delete/tasks/

-rw-r--r-- root/root1518 2014-07-10 14:08 roles/zabbix_client_delete/tasks/delete.yml

-rw-r--r-- root/root22 2014-07-10 14:08 roles/zabbix_client_delete/tasks/main.yml

drwxr-xr-x root/root0 2014-06-24 14:14 roles/zabbix_client_delete/handlers/

drwxr-xr-x root/root0 2014-07-03 13:16 roles/zabbix_client_delete/vars/

-rw-r--r-- root/root115 2014-07-09 17:55 roles/zabbix_client_delete/vars/main.yml

drwxr-xr-x root/root0 2014-07-09 18:08 roles/zabbix_client_delete/templates/

drwxr-xr-x root/root0 2014-06-24 13:53 roles/zabbix_client_delete/files/


转载自:http://blog.51cto.com/dl528888/1436745

相关内容