1.总结zabbix 手动部署过程。
选择使用二进制安装 zabbix 6.0 LTS版本、OS选择ubuntu2204、 数据库选择MySQL,WEB-Server选择 Nginx
参考官方在线安装向导:https://www.zabbix.com/cn/download



补充:需要安装MySQL,可选安装中文支持包
apt install -y mysql-server
apt -y install language-pack-zh-hans
切换语言

2.总结 zabbix主动模式和被动模式简介及实现
Zabbix 有两种工作模式:主动模式和被动模式(站在Zabbix Agent角度)
- 被动模式:
- 默认模式,server端发起,端口随机;Agent 端口固定为10050
- agent 不关心监控项和数据采集周期间隔时间
- 适用监控500台以下的场景,过多会增加Zabbix_Server的负载
- 主动模式:
- 由zabbix_agent 打开本机的随机端口,主动向zabbix_server的 10051端口发起tcp连接请求
- 主动模式下必须在 zabbix_agent 配置文件中指定 zabbix_server的IP或者主机名
- 连接zabbix_server前 agent不知道监控项和采集间隔周期,连接后获取。
- 减轻zabbix_server的负载压力,可监控2000台以上主机
被动模式实现:
- 默认的模式
- Zabbix_server 通过Poller进程实现被动模式
- zabbix_agent 修改配置文件,指定zabbix_server的IP地址
- vim /usr/local/zabbix_agent/conf/zabbix_agentd.conf
- Server=10.0.0.214
- systemctl restart zabbix-agent
主动模式实现:
- Zabbix_server 通过 trapper 进程实现主动模式
- 在Zabbix Agent 配置主机模式相关配置
vim /usr/local/zabbix_agent/conf/zabbix_agentd.conf
Server=10.0.0.214
ServerActive=10.0.0.214
Hostname=tomcat-2
Timeout=30
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
- 在Zabbix Server 创建配置有主动模式监控项的模板
- 关联主动模板至支持主动模式的 Agent主机,主机名称必须与配置文件中一致


3.总结 zabbix proxy主动及被动案例
1)安装zabbix proxy
参考官方向导
2)主动模式配置
- 修改proxy配置文件 (重启zabbix_proxy服务)

- 修改zabbix agent 配置文件为主动模式(重启服务)
- 在 Zabbix Server 上添加代理 Proxies

- 在Zabbix Server 上配置 Zabbix Agent 使用主动代理

- 主机验证


3)被动模式配置
- 修改proxy配置文件(需要重启服务)

- 修改agent配置(需要重启服务)

- 在Zabbix Server 上添加代理 Proxies(注意:选中被动模式和端口10051)

- 在Zabbix Server 上配置Zabbix Agent 使用被动代理
- 模板也要使用被动模板

4.总结自定义监控,监控win, nginx, 并基于短信/微信报警。
1)总结自定义监控
监控项键值的格式(包括键值的参数)必须遵循语法规则。以下插图描述了支持的语法。可以通过跟随箭头来确定每个点上允许的元素和字符 - 如果可以通过线到达某个块,则允许,否则 - 不允许。

-
在Zabbix 被监控主机上安装Agent
-
在 /etc/zabbix/zabbix_agentd.d/ 下创建 *.conf
-
UserParameter=,
-
key 必须整个系统唯一。注意大小写是敏感的, Key名允许的字符(0-9a-zA-Z_-.)
-
key 使用 [*] 用于定义该key接受括号内的参数。参数需在配置监控项时给出;
-
Command:命令用于生成key对应的值。
-
范例:UserParameter=tcp_conn[*],netstat -ant|grep -c $1
-
在agent上测试: zabbix_agentd -t ‘tcp_conn[LISTEN]’
-
重启服务后在Zabbix Server端测试:zabbix_get -s 10.0.0.157 -k ‘tcp_conn[ESTABLISHED]’
-
在Zabbix 被监控主机上编写自定义监控项的取值的脚本,并添加执行权限
-
创建脚本:vim /etc/zabbix/zabbix_agentd.d/ tcp_conn.sh
UserParameter=tcp_conn[*],netstat -ant|grep -c $1 -
安装zabbix-get 在zabbix-server测试:apt install zabbix-get
-
给脚本添加执行权限: chmod a+x tcp_conn.sh
-
将脚本和独立的配置文件分发给其他需要监控的Agent(同OS同Agent版本)
-
在Zabbix 被监控主机上的Agent配置文件中添加自定义监控项,指定 key 和 对 key 赋值的脚本及参数
-
在Zabbix Server 上使用 zabbix_get 工具测试是否能取到自定义监控项信息
-
zabbix_get -s 10.0.0.157 -k ‘tcp_conn[ESTABLISHED]’
-
在Zabbix Web 创建模板,在模板中添加自定义监控项
-


-
在Zabbix Web 将模板关联至被监控的主机
-

3)监控windows
-
下载agent2的安装包

-
下载地址:
https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.7/zabbix_agent2-7.0.7-windows-amd64-openssl.msi -
开始安装







-
zabbix-server 添加windows主机; 模板使用内置模板;主机群组新建


4)监控nginx
- 自定义监控项监控 nginx 状态页
vim /etc/nginx/sites-available/default
#加入以下行
location /nginx_status {
stub_status;
access_log off;
allow 127.0.0.1;
deny all;
}
#重启服务
systemctl restart nginx
- 配置agent
[root@client: ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/bash
# Description: zabbix监控nginx性能以及进程状态
HOST="127.0.0.1"
PORT="80"
URL=nginx_status
#检测nginx进程是否存在
case $1 in
ping)
pidof nginx | wc -l
;;
#检测nginx性能
active)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==1{print $NF}'
;;
reading)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==4{print $2}'
;;
writing)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==4{print $4}'
;;
waiting)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==4{print $6}'
;;
accepts)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==3{print $1}'
;;
handled)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==3{print $2}'
;;
requests)
curl -s "http://$HOST:$PORT/$URL/" |awk 'NR==3{print $3}'
;;
*)
echo "Usage `basename $0` {ping | active | reading | writing | waiting | accepts | handled | requests }"
esac
#添加可执行权限
chmod +x /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#添加监控配置
vim /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1
#agent 测试
[root@client: ~]# zabbix_agenzabbix_agentd -t nginx.status[ping]
nginx.status[ping] [t|1]
#服务器测试:
[root@zabbixserver7: ~]# zabbix_get -s 10.0.0.211 -k nginx.status[ping]
1
- 配置zabbix web
-
创建模板
-
创建8个监控项

-
创建触发器(为ping设定监控项)
配置单条件触发器:ping不通需要告警通知,ping恢复算恢复

-
创建触发器动作

-
关联对应主机
- 配置告警 -
开启前端通知

-
创建报警媒介(邮箱)

-
给指定用户添加报警媒体(发送到指定邮箱)

-
5.完成1键安装zabbix agent脚本,可以用于ubuntu系统。
#!/bin/bash
ZABBIX_SERVER=10.0.0.214
ZABBIX_MAJOR_VER=7.0
ZABBIX_VER=${ZABBIX_MAJOR_VER}.7
ZABBIX_AGENT_FILE=zabbix_agent-${ZABBIX_VER}-linux-3.0-amd64-static.tar.gz
URL="mirror.tuna.tsinghua.edu.cn/zabbix"
ZABBIX_HOSTNAME=`hostname`
. /etc/os-release
color () {
RES_COL=60
MOVE_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_COL
echo -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
}
check (){
if [ -e ${ZABBIX_AGENT_FILE} ];then
color "相关文件已经准备好" 0
else
color "开始下载 zabbix_agent 二进制包" 0
wget https://cdn.zabbix.com/zabbix/binaries/stable/${ZABBIX_MAJOR_VER}/${ZABBIX_VER}/zabbix_agent-${ZABBIX_VER}-linux-3.0-amd64-static.tar.gz
[ $? -ne 0 ] && { color "下载 ${ZABBIX_AGENT_FILE}文件失败" 1; exit; }\
fi
}
install_zabbix_agent () {
color "开始安装 zabbix_agent " 0
if id zabbix &> /dev/null;then
color "zabbix 用户已存在" 1
else
useradd -s /sbin/nologin -r zabbix
color "创建用户 zabbix" 0
fi
mkdir /usr/local/zabbix_agent -pv
INSTALL_DIR=/usr/local/zabbix_agent
tar xf ${ZABBIX_AGENT_FILE} -C ${INSTALL_DIR}
}
config_zabbix_agent (){
sed -i "/^Server=127.0.0.1/c Server=$ZABBIX_SERVER" ${INSTALL_DIR}/conf/zabbix_agentd.conf
sed -i "/^Hostname=Zabbix server/c Hostname=$ZABBIX_HOSTNAME" ${INSTALL_DIR}/conf/zabbix_agentd.conf
echo 'PATH=${INSTALL_DIR}/bin:${INSTALL_DIR}/sbin:$PATH' > /etc/profile.d/zabbix_agent.sh
source ./etc/profile.d/zabbix_agent.sh
}
service (){
cat > /lib/systemd/system/zabbix-agent.service << EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c ${INSTALL_DIR}/conf/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now zabbix-agent.service
systemctl is-active zabbix-agent.service
if [ $? -eq 0 ];then
echo "-------------------------------------------------------------------"
color "Zabbix Agent 安装完成!" 0
else
color "Zabbix Agent 安装失败" 1
exit
fi
}
check
install_zabbix_agent
config_zabbix_agent
service
6.完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。
- 创建获取token的脚本
vim zabbix-api-token.sh
#!/bin/bash
ZABBIX_SERVER=10.0.0.214
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin", #更新为username, 之前版本是user
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php
- 创建添加主机的脚本
- 创建列出模板的脚本获取指定模板的id
- 创建列出主机的脚本验证主机添加结果
#!/bin/bash
ZABBIX_SERVER=10.0.0.214
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=10.0.0.211
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'$HOST'",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'$HOST'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "19"
}
],
"templates": [
{
"templateid": "10655"
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php | python3 -m json.tool
- 运行脚本并验证

- zabbix Web端验证


822

被折叠的 条评论
为什么被折叠?



