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

2025-05-27 0 57

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33
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的信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13
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信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
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信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
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信息

?

1

2

3

4
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

?

1

2

3

4
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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70
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=`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/network

function check()

{

if [ $? -eq 0 ];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

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}"

;;

esac

exit 0

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

7、templates的zabbix_agentd.conf

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268
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 -f2

UserParameter=redis_stats[*],(echo info; sleep 1) | 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/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 $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 statusG"|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 monitor

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 1

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

?

1

2

3

4

5

6
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

?

1

2

3

4

5

6

7
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登陆

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58
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、测试安装情况

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74
[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/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 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/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.log

Server=192.168.1.10

ListenPort=10050

Hostname=ip-10-10-240-21

Timeout=20

UserParameter=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 -f2

UserParameter=redis_stats[*],(echo info; sleep 1) | 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/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 $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 statusG"|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 1

UserParameter=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_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、删除已经安装的客户端

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
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、测试删除情况

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
[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/0 00:00:00 grep zabbix

[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 file or directory

[root@ip-10-10-240-21 tmp]# chkconfig --list|grep zabbix_agentd

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29
-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.yml

drwxr-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.yml

drwxr-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.yml

drwxr-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.yml

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

drwxr-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.gz

drwxr-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.yml

drwxr-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.yml

drwxr-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.yml

drwxr-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安装其他软件的例子。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 集群运维自动化工具ansible之使用playbook安装zabbix客户端 https://www.kuaiidc.com/68862.html

相关文章

发表评论
暂无评论