制作一个内部的 zabbix-agent 快速部署脚本
下载官方的基础 agent 部署包
官方地址:点击到达

curl -O https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.36/zabbix_agent-5.0.36-linux-3.0-i386-static.tar.gz
编写 install 脚本
#!/bin/bash
## 变量定义
# 脚本所在路径
BASE_DIR=$(cd $(dirname $0);pwd)
# Zabbix_server连接IP
SERVER_IP=$1
# agent部署路径,默认/usr/local/zabbix_agent
INSTALL_DIR=$2
if [[ ! ${INSTALL_DIR} ]];then
INSTALL_DIR=/usr/local/zabbix_agent
fi
if [[ ! -d ${INSTALL_DIR} ]];then
mkdir -p ${INSTALL_DIR}/logs
fi
# agent部署包
INSTALL_PACK=$3
if [[ ! ${INSTALL_PACK} ]];then
INSTALL_PACK=$(find ${BASE_DIR} -name "zabbix*.tar.gz")
fi
# agent监听端口,默认10050
AGENT_PORT=$4
if [[ ! ${AGENT_PORT} ]];then
AGENT_PORT=10050
fi
## 环境监测
# 判断zabbix用户是否存在,不存在则创建
id zabbix &> /dev/null
if [[ $? != 0 ]];then
useradd zabbix
fi
# 判断端口是否被占用
PORT_IF=$(ss -tanlu|grep -v 'Port'|grep "${AGENT_PORT}" | awk '{printf $5 "\n"}' | awk -F ':' '{printf $NF "\n"}' | sort | uniq)
if [[ ${PORT_IF} ]];then
echo "端口 ${AGENT_PORT} 已被占用,退出安装"
exit 1
fi
## 开始安装agent
# 解压安装包
tar -zxf ${INSTALL_PACK} -C ${INSTALL_DIR}
# 授权部署路径
chown -R zabbix:zabbix ${INSTALL_DIR}
if [ ! -d "${INSTALL_DIR}/conf/zabbix_agentd.conf.d" ];then
mkdir ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
fi
# 修改配置文件
sed -i "s@Server=127.0.0.1@Server=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@# Include=/usr/local/etc/zabbix_agentd.conf.d/\*.conf@Include=${INSTALL_DIR}/conf/zabbix_agentd.conf.d/\*.conf@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@ServerActive=127.0.0.1@ServerActive=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@Hostname=Zabbix server@Hostname=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@# ListenPort=10050@ListenPort=${AGENT_PORT}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@# PidFile=/tmp/zabbix_agentd.pid@PidFile=${INSTALL_DIR}/logs/zabbix_agent.pid@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@LogFile=/tmp/zabbix_agentd.log@LogFile=${INSTALL_DIR}/logs/zabbix_agentd.log@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "s@# Timeout=3@Timeout=30@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
# 复制自定义监控配置文件
# cp qunhe_it_disk.conf ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# cp qunhe_it_network.conf ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# cp zabbix_disk_speed.sh ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# cp zabbix_disk_discovery.sh ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# cp zabbix_network_tcp.sh ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# chmod 755 ${INSTALL_DIR}/conf/zabbix_agentd.conf.d/*.sh
# sed -i "s@/etc/zabbix/zabbix_agentd.d@${INSTALL_DIR}/conf/zabbix_agentd.conf.d@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf.d/qunhe_it_disk.conf
# sed -i "s@/etc/zabbix/zabbix_agentd.d@${INSTALL_DIR}/conf/zabbix_agentd.conf.d@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf.d/qunhe_it_network.conf
# 创建agent启动文件
cat > /usr/lib/systemd/system/zabbix_agentd.service << EOF
[Unit]
Description=Zabbix_agent service
After=syslog.target
After=network.target
[Service]
Type=simple
User=zabbix
Restart=always
KillMode=mixed
PIDFile=${INSTALL_DIR}/logs/zabbix_agent.pid
ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c ${INSTALL_DIR}/conf/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=default.target
EOF
# 启动Zabbix_agent服务
systemctl daemon-reload
systemctl start zabbix_agentd.service
systemctl status zabbix_agentd.service &> /dev/null
if [[ $? = 0 ]];then
echo "zabbix_agentd服务启动完成"
else
echo "zabbix_agentd服务启动失败,请使用命令:systemctl status zabbix_agentd.service 查看失败原因"
fi
此时的目录下面是这样的结构

在这里你可以编写自定义的监控脚本,毕竟默认的配置文件很多情况下无法满足内部情况
自定义监控案例:TCP 连接情况
新增 Shell 脚本
#!/bin/bash
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep $1 | awk '{print $2}'
新增 conf 文件
UserParameter=qunhe.it.network.tcp[*],/usr/local/zabbix_agent/conf/zabbix_agentd.conf.d/zabbix_network_tcp.sh $1
将这两个文件同时放到你的打包目录下,此时的目录结构是:

修改原来的 install 安装脚本
在自定义脚本的地方加入以下命令:
# 复制文件到安装目录下
cp zabbix_network_tcp.conf ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
cp zabbix_network_tcp.sh ${INSTALL_DIR}/conf/zabbix_agentd.conf.d
# 给 SH 赋权
chmod 755 ${INSTALL_DIR}/conf/zabbix_agentd.conf.d/*.sh
# 替换文件目录
sed -i "s@/etc/zabbix/zabbix_agentd.d@${INSTALL_DIR}/conf/zabbix_agentd.conf.d@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf.d/qunhe_it_disk.conf
打包文件
tar -zcf install.tar.gz *
打包好了之后就可以去分发了~
在客户端安装 agent
# 安装
tar -zxf install.tar.gz
./install.sh 服务端IP 安装目录 自定义agent路径 端口号
- 服务端 IP:必填
- 安装目录:可选
- agent 路径:可选
- 端口号:可选
服务检查
service zabbix_agentd status
开启开机自启
systemctl enable zabbix_agentd
监控图表展示

制作一个内部的 zabbix-agent 快速部署脚本的更多相关文章
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- zabbix监控服务部署脚本
搭建平台脚本: #!/bin/bash #zabbix监控服务部署 #脚本使用前提:yum搭建,nginx-1.12.2源码包,zabbix-3.4.4源码包,要求源码包尽量在单一目录下,最好在默认管 ...
- centos下Zabbix Agent端部署和安装
首先重复一下前面的规划 server端: 192.168.136.144 centos6.5 (虚拟机) agent端: 192.168.136.155 centos6.5( 虚拟 ...
- zabbix agent自动安装脚本
#!/bin/bash #desc: used for autoinstall zabbix client #说明:本脚本旨在批量安装zabbix_agent,在一个服务器上放好软件和配置文件,执行本 ...
- 快速安装zabbix agent并部署监控
1.准备yum源: epel源:yum install -y zabbix22-agent 2.上传脚本: 上传脚本事先写好的监控脚本到/script/下面 3.修改配置文件:Server=10.10 ...
- shell脚本实现---Zabbix5.0快速部署
shell脚本实现---Zabbix5.0快速部署 zabbix-server快速安装脚本 #!/bin/bash #Zabbix-Server 5.0#author:sunli#mail:sunli ...
- Ubuntu操作系统部署zabbix agent服务
Ubuntu操作系统部署zabbix agent服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zabbix软件包 博主推荐阅读: https://www.cnblog ...
- zabbix的安装部署及自定义监控的实现
此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...
- 08 Zabbix Item类型之Zabbix agent类型
点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 08 Zabbix Item类型之Zabbix agent类型 Zabbix agent类型的item是使用部署在服务器端的age ...
- github 快速部署
在github上 新建一个项目后,并且未提交任何代码,会有一个页面提示我们如何快速部署.在此备份一下那个页面 Quick setup — if you’ve done this kind of thi ...
随机推荐
- Java流程控制和循环(基础语法学习)
一.流程控制 1.定义 在一个Java程序中,各条语句的执行对程序的结果有直接影响,也就是说 各个语句的执行顺序对程序的结果有直接影响. 在程序中 ,可能出现不同的执行顺序,必须 自上而下顺序 ...
- Galaxy Release (v 21.05),众多核心技术栈变更
2021年6月初,Galaxy Project 正式发布了 release 21.05 版本:随后6月中旬,发布该版本的 announcement 文档.这里总结一下该版本一些主要的更新内容,为关注和 ...
- 可视化生信分析利器 Galaxy 之 Docker 开发
1. 背景 我们常常会基于某个 image 来启动一个 container,在这个 container 中我们可能会执行某些操作,比如创建一个文件,但是当这个 container 退出以后,如果我们以 ...
- JavaWeb编程面试题——MyBatis
引言 面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待.不以刷题进大厂为目的,而是以学习为目的.这里的知识点会持续更新,目录也会随时进行调整. 关注公众号:编 ...
- vue2中v-if 或者 v-show 使用数组中的值判断不生效
知识点来源:博客园==> 外号蓝大胖// 对象this.$set(obj, key, value)/vue.set(obj, key, value)// 数组this.$set(arr, ind ...
- C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612
C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612 环境说明: .NET Framework 4.6 的控制台程序 . .NET Framework 对 ...
- Linux 线程传递参数
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pthread.h> 4 #include <u ...
- CKS 考试题整理 (16)-Pod安全策略
Task 创建一个名为restrict-policy的新的PodSecurityPolicy,以防止特权Pod的创建. 创建一个名为restrict-access-role并使用新创建的PodSecu ...
- Flutter状态管理新的实践
1 背景介绍 1.1 声明式ui 声明式UI其实并不是近几年的新技术,但是近几年声明式UI框架非常的火热.单说移动端,跨平台方案有:RN.Flutter.iOS原生有:SwiftUI.android原 ...
- java中基本数据类型和包装数据类型
基本数据类型和包装数据类型在 Java 中有着重要的区别和联系,对于 Java 程序员来说,熟悉这两种数据类型的特点和使用方法是非常必要的. 基本数据类型 Java 中的基本数据类型一共有 8 种,分 ...