第13周作业

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端验证
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值