zabbix agentd客户端插件Shell一键自动安装脚本

水深无声 2022-08-07 12:53 285阅读 0赞

这次生产环境上线了多台Linux服务器,需要全部纳入Zabbix监控范畴,一台一台的去装Zabbix Agentd插件那就太苦逼了,所幸Zabbix客户端插件是支持绿色安装的,就写了个简单的一键安装脚本,然后配合 Secure CRT 的多窗口交互命令一次性就可以搞定了。

zabbix

正常启动Zabbix客户端服务其实只需要2个文件: zabbix_agentd 和 zabbix_agentd.conf,需要特别说明的是:zabbix_agentd 最好是和 Zabbix_Server 一同编译所得,保证版本和配置文件的路径是一致的,否则可能无法使用Linux系统的 service 服务启动模式。

一、准备工作

Zabbix 主机肯定搭建了WEB服务,所以正好可以将所需放置到WEB目录,方便下载。

客户端插件 zabbix_agentd 位于 Zabbix 安装目录下的 sbin 目录,比如:/usr/local/zabbix/sbin/zabbix_agentd

服务控制脚本 zabbix_agentd 位于 zabbix 源码编译目录下的 misc/init.d/fedora/core/zabbix_agentd

我们要做的就是将这些文件拷贝到 WEB目录即可,比如 /var/www/html/zabbix_agent/ ,根据系统版本的不同,我们可以准备64和32位的 zabbix_agentd,方便后续不同系统下的安装。

拷贝后,手工验证下文件是否可以下载:

客户端插件:http://192.168.1.40/zabbix\_agent/64/zabbix\_agentd

服务控制脚本:http://192.168.1.40/zabbix\_agent/init.d/zabbix\_agentd

二、编写脚本

①、将以下代码保存为 zabbix_agentd.sh ,上传到第一步中的 zabbix_agent 目录。











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




#!/bin/bash


#Desc: Install Zabbix Agent in OneKey.


#Date: 2015-04-02


#Author: ZhangGe


 


#设置zabbix服务器地址


if

[

-
z

$
1

]


then


    
Server
=
“192.168.1.40”


else


    
Server
=
$
1


fi


 


#检测相关


function

Check
(
)
{


    
netstat

-
ntlp

|

grep

zabbixagentd

>
/
dev
/
null

&&
  
echo

“Exit for zabbix_agentd has been already installed.”

&&

exit


    
test

-
f

zabbix_agent
.sh

&&

rm

-
f

zabbix_agent
.sh


    
test

-
f

/
usr
/
local
/
zabbix
/
sbin
/
zabbix_agentd

&&

rm

-
rf

/
usr
/
local
/
zabbix
/
sbin
/
zabbix_agentd



test

-
f

/
etc
/
init
.d
/
zabbix_agentd

&&

rm

-
f

/
etc
/
init
.d
/
zabbix
agentd


}


 


#配置相关


function

Config
(
)
{



Server
=
$
1






#获取IP



IP
=
ifconfig | grep 192.168 | grep "</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 78, 208) !important; background: transparent;">inet </span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 45, 122) !important; background: transparent;">addr</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 111, 224) !important; background: transparent;">:</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 128, 0) !important; background: transparent;">" | awk -F "</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 111, 224) !important; background: transparent;">&nbsp;&nbsp;</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 45, 122) !important; background: transparent;">Bcast</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 111, 224) !important; background: transparent;">:</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 128, 0) !important; background: transparent;">" '{print $1}' | awk -F "</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 78, 208) !important; background: transparent;">inet </span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 45, 122) !important; background: transparent;">addr</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 111, 224) !important; background: transparent;">:</span> <span style="margin: 0px; padding: 0px; border: 0px; font-size: inherit !important; font-family: inherit; height: inherit; line-height: inherit !important; font-weight: inherit !important; color: rgb(0, 128, 0) !important; background: transparent;">" '{print $2}'


 



mkdir

/
usr
/
local
/
zabbix
/
sbin
/

-
p



mkdir

/
usr
/
local
/
zabbix
/
etc
/

-
p



cd

/
usr
/
local
/
zabbix
/
sbin
/


 



#写入配置文件


cat

>

/
usr
/
local
/
zabbix
/
etc
/
zabbix_agentd
.conf

<<
EOF


Server
=
$
{
Server
}


Hostname
=
$
{
IP
}


BufferSize
=
1024


DebugLevel
=
2


LogFileSize
=
1024


EnableRemoteCommands
=
1


#Include=/etc/zabbix/zabbix_command.conf


EOF


}


 


function

Install
(
)
{


    
Config

$
1






#下载服务控制脚本


    
wget

-
P

/
etc
/
init
.d
/
  
http
:
/
/
192.168.1.40
/
zabbix_agent
/
init
.d
/
zabbix_agentd






#判断系统位数,下载不同版本



if

[
[

“$(uname -m)”

==

“x86_64”

]
]



then



wget
http
:
/
/
192.168.1.40
/
zabbix_agent
/
64
/
zabbix_agentd



else



wget
http
:
/
/
192.168.1.40
/
zabbix_agent
/
32
/
zabbix_agentd



fi


    
chmod

+
x

/
etc
/
init
.d
/
zabbix_agentd


    
chmod

+
x

/
usr
/
local
/
zabbix
/
sbin
/
zabbix_agentd


    



#新增用户和用户组


    
groupadd
zabbix


    
useradd

-
s

/
sbin
/
nologin

-
M

-
g

zabbix
zabbix


    



#启动服务并加入开启启动



service
zabbix_agentd
start

&&

chkconfig
zabbix_agentd
on



echo











-
Result
















-






#检查安装结果



netstat

-
ntlp

|

grep

zabbix_agentd

&&

echo

-
e

“\033[33minstall Succeed.\033[0m”

||

echo

-
e

“\033[31minstall Failed.\033[0m”


}


 


#main


Check


Install

$Server

②、Service 服务控制脚本

为了方便没找到 zabbix agent 服务控制脚本的朋友,额外提供服务控制代码。将代码保存为zabbix_agentd,上传到第一步的 zabbixz_agent/init.d/ 目录备用。











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




#!/bin/sh



#chkconfig: 345 95 95



#description:Zabbix agent



# Zabbix



# Copyright (C) 2001-2013 Zabbix SIA



#



# This program is free software; you can redistribute it and/or modify



# it under the terms of the GNU General Public License as published by



# the Free Software Foundation; either version 2 of the License, or



# (at your option) any later version.



#



# This program is distributed in the hope that it will be useful,



# but WITHOUT ANY WARRANTY; without even the implied warranty of



# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the



# GNU General Public License for more details.



#



# You should have received a copy of the GNU General Public License



# along with this program; if not, write to the Free Software



# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.



# Start/Stop the Zabbix agent daemon.



# Place a startup script in /sbin/init.d, and link to it from /sbin/rc[023].d



SERVICE
=
“Zabbix agent”




DAEMON
=
/
usr
/
local
/
zabbix
/
sbin
/
zabbix_agentd



PIDFILE
=
/
tmp
/
zabbix_agentd
.pid




BASEDIR
=
/
usr
/
local
/
zabbix



ZABBIX_AGENTD
=
$BASEDIR
/
sbin
/
zabbix_agentd



case

$
1

in



  
‘start’
)



    
if

[

-
x

$
{
DAEMON
}

]



    
then



      
$DAEMON



      
# Error checking here would be good…


      
echo

“${SERVICE} started.”



  
else



      
echo

“Can’t find file ${DAEMON}.”



      
echo

“${SERVICE} NOT started.”



    
fi



  
;
;



  
‘stop’
)



    
if

[

-
s

$
{
PIDFILE
}

]



    
then



      
if

kill

</span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(128,0,128)!important; background:transparent">cat</span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(0,111,224)!important; background:transparent"> </span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(51,51,51)!important; background:transparent">$</span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(51,51,51)!important; background:transparent">{ </span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(0,45,122)!important; background:transparent">PIDFILE</span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(51,51,51)!important; background:transparent">}</span> <span style="margin:0px; padding:0px; border:0px; font-size:inherit!important; font-family:inherit; height:inherit; line-height:inherit!important; font-weight:inherit!important; color:rgb(51,51,51)!important; background:transparent">

>
/
dev
/
null

2
>
&
1



      
then



        
echo

“${SERVICE} stoped.”



        
rm

-
f

$
{
PIDFILE
}



      
fi



    
fi



  
;
;



  
‘restart’
)



    
$
0

stop


    
sleep

10



    
$
0

start



  
;
;



  
*
)



    
echo

“Usage: $0 start|stop|restart”



    
;
;




esac

三、使用方法

登录到客户端系统,运行如下命令即可一键安装:

①、使用默认 zabbix_server 的IP地址:











1




wget
http
:
/
/
192.168.1.40
/
zabbix_agent
/
zabbix_agent
.sh

&&

chmod

+
x

zabbix_agent
.sh

&&

.
/
zabbix_agent
.sh

②、后面添加IP参数可指定到其他 zabbix_server 或 zabbix_proxy:











1




wget
http
:
/
/
192.168.1.40
/
zabbix_agent
/
zabbix_agent
.sh

&&

chmod

+
x

zabbix_agent
.sh

&&

.
/
zabbix_agent
.sh

192.168.1.41

zabbix\_agentd

Secure CRT多会话交互执行:

zabbix\_agentd1

其他说明:此脚本中的 zabbix_agentd 编译路径(prefix)为 /usr/local/zabbix,如果编译的时候不是这个路径,则需要根据实际情况修改脚本里面相关路径,否则注册的zabbix_agentd服务将无法启动,就只能通过命令行启动了!

参考资料:

jquery ajax 设置json类型的返回串问题 http://www.itmmd.com/201504/694.html

java jsp实现万年历 + 日程管理,已经设计好u http://www.itmmd.com/201504/693.html

jquery 动态添加和删除 ul li列表 http://www.itmmd.com/201504/692.html

更多信息请访问:萌萌的it人

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读