1.下载软件包。
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
2 准备数据库和用户
mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
3 初绐化数据库的表
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
修改Zabbix Server 连接MySQL
vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
4 修改PHP配置
vim /etc/zabbix/apache.conf
php_value date.timezone Asia/Shanghai
systemctl restart zabbix-server zabbix-agent apache2
浏览器访问
http://10.0.0.102/zabbix
5.总结zabbix主动模式和被动模式简介及实现
被动模式(Passive Mode):
由 Zabbix Server 向 Agent 请求监控数据。
特点:服务端主动请求,适用于网络稳定的环境。
主动模式(Active Mode):
Zabbix Agent 主动向 Zabbix Server 推送监控数据。
特点:减少服务端负载,适用于客户端频繁离线的环境。
6 总结zabbix proxy主动及被动案例
7 .总结自定义监控,监控win, nginx, 并基于短信/微信报警。
8.完成1键安装zabbix agent脚本,可以用于ubuntu系统。
#!/bin/bash
ZABBIX_SERVER=zabbix.yu.org
ZABBIX_MAJOR_VER=6.0
ZABBIX_VER=${ZABBIX_MAJOR_VER}-4URL="mirror.tuna.tsinghua.edu.cn/zabbix"
ZABBIX_HOSTNAME=web-`hostname -I`
. /etc/os-releasecolor () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOLOR_WARNING="echo -en \\033[1;33m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $" OK " elif [ $2 = "failure" -o $2 = "1" ] ;then ${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo
}install_zabbix_agent () {if [ $ID = "centos" -o $ID = "rocky" ];thenVERSION_ID=`echo $VERSION_ID|awk -F. '{print $1}'` wget https://$URL/zabbix/${ZABBIX_MAJOR_VER}/rhel/${VERSION_ID}/x86_64/zabbix-release-${ZABBIX_VER}.el${VERSION_ID}.noarch.rpmrpm -Uvh zabbix-release-${ZABBIX_VER}.el${VERSION_ID}.noarch.rpmif [ $? -eq 0 ];thencolor "YUM仓库准备完成" 0elsecolor "YUM仓库配置失败,退出" 1exitfised -i "s#repo.zabbix.com#${URL}#" /etc/yum.repos.d/zabbix.repoyum -y install zabbix-agent || { color "YUM安装失败,退出" 1; exit; } else wget https://$URL/zabbix/${ZABBIX_MAJOR_VER}/ubuntu/pool/main/z/zabbix-release/zabbix-release_${ZABBIX_VER}+ubuntu${VERSION_ID}_all.debif [ $? -eq 0 ];thencolor "APT仓库准备完成" 0elsecolor "APT仓库配置失败,退出" 1exitfidpkg -i zabbix-release_${ZABBIX_VER}+ubuntu${VERSION_ID}_all.debsed -i "s#repo.zabbix.com#${URL}#" /etc/apt/sources.list.d/zabbix.listapt updateapt -y install zabbix-agentfi
}config_zabbix_agent (){ sed -i "/^Server=127.0.0.1/c Server=$ZABBIX_SERVER" /etc/zabbix/zabbix_agentd.conf#sed -i -e "/^Server=127.0.0.1/c Server=$ZABBIX_SERVER" -e "/^Hostname=Zabbix server/c Hostname=${ZABBIX_HOSTNAME}" /etc/zabbix/zabbix_agentd.conf
}start_zabbix_agent () {systemctl enable zabbix-agent.servicesystemctl restart zabbix-agent.servicesystemctl is-active zabbix-agent.serviceif [ $? -eq 0 ];then echo "-------------------------------------------------------------------"color "Zabbix Agent 安装完成!" 0elsecolor "Zabbix Agent 安装失败" 1exitfi
}install_zabbix_agentconfig_zabbix_agentstart_zabbix_agent
6.完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。
#!/bin/bash# 配置 Zabbix API 连接信息
ZABBIX_URL="http://zabbix.example.com/zabbix/api_jsonrpc.php"
ZABBIX_USER="Admin"
ZABBIX_PASSWORD="zabbix" # 配置主机信息
HOSTNAME="zabbix-agent-host"
HOST_IP="192.168.0.100"
GROUP_NAME="Linux servers"
TEMPLATE_NAME="Template OS Linux by Zabbix agent" # 检查依赖
if ! command -v jq &>/dev/null; thenecho "[ERROR] jq 未安装,请安装后重试。"exit 1
fi# 登录获取 Token
get_auth_token() {local payloadpayload=$(cat <<EOF
{"jsonrpc": "2.0","method": "user.login","params": {"user": "$ZABBIX_USER","password": "$ZABBIX_PASSWORD"},"id": 1
}
EOF
)curl -s -X POST -H "Content-Type: application/json-rpc" -d "$payload" "$ZABBIX_URL" | jq -r '.result'
}# 获取主机组 ID,如果不存在则创建
get_group_id() {local group_name=$1local auth_token=$2local payloadpayload=$(cat <<EOF
{"jsonrpc": "2.0","method": "hostgroup.get","params": {"filter": {"name": "$group_name"}},"auth": "$auth_token","id": 1
}
EOF
)local group_idgroup_id=$(curl -s -X POST -H "Content-Type: application/json-rpc" -d "$payload" "$ZABBIX_URL" | jq -r '.result[0].groupid')if [ "$group_id" = "null" ]; thenpayload=$(cat <<EOF
{"jsonrpc": "2.0","method": "hostgroup.create","params": {"name": "$group_name"},"auth": "$auth_token","id": 1
}
EOF
)group_id=$(curl -s -X POST -H "Content-Type: application/json-rpc" -d "$payload" "$ZABBIX_URL" | jq -r '.result.groupids[0]')fiecho "$group_id"
}# 获取模板 ID
get_template_id() {local template_name=$1local auth_token=$2local payloadpayload=$(cat <<EOF
{"jsonrpc": "2.0","method": "template.get","params": {"filter": {"host": "$template_name"}},"auth": "$auth_token","id": 1
}
EOF
)curl -s -X POST -H "Content-Type: application/json-rpc" -d "$payload" "$ZABBIX_URL" | jq -r '.result[0].templateid'
}# 添加主机
create_host() {local hostname=$1local host_ip=$2local group_id=$3local template_id=$4local auth_token=$5local payloadpayload=$(cat <<EOF
{"jsonrpc": "2.0","method": "host.create","params": {"host": "$hostname","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "$host_ip","dns": "","port": "10050"}],"groups": [{"groupid": "$group_id"}],"templates": [{"templateid": "$template_id"}]},"auth": "$auth_token","id": 1
}
EOF
)curl -s -X POST -H "Content-Type: application/json-rpc" -d "$payload" "$ZABBIX_URL" | jq -r '.result.hostids[0]'
}# 主程序
main() {echo "[INFO] 获取 Token..."AUTH_TOKEN=$(get_auth_token)if [ -z "$AUTH_TOKEN" ]; thenecho "[ERROR] 获取 Token 失败,请检查用户或密码。"exit 1fiecho "[INFO] Token 获取成功。"echo "[INFO] 获取主机组 ID..."GROUP_ID=$(get_group_id "$GROUP_NAME" "$AUTH_TOKEN")if [ -z "$GROUP_ID" ]; thenecho "[ERROR] 获取主机组 ID 失败。"exit 1fiecho "[INFO] 主机组 ID: $GROUP_ID"echo "[INFO] 获取模板 ID..."TEMPLATE_ID=$(get_template_id "$TEMPLATE_NAME" "$AUTH_TOKEN")if [ -z "$TEMPLATE_ID" ]; thenecho "[ERROR] 模板 '$TEMPLATE_NAME' 不存在。"exit 1fiecho "[INFO] 模板 ID: $TEMPLATE_ID"echo "[INFO] 创建主机..."HOST_ID=$(create_host "$HOSTNAME" "$HOST_IP" "$GROUP_ID" "$TEMPLATE_ID" "$AUTH_TOKEN")if [ -z "$HOST_ID" ]; thenecho "[ERROR] 主机创建失败。"exit 1fiecho "[INFO] 主机创建成功,ID: $HOST_ID"
}main