第十二周作业

1. 总结zabbix安装过程(选择课程演示版本)。

#在ubuntu18.04 安装 Zabbix Server 5.0
#官网下载
[root@zabbix-server ~]#wget 
https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbixrelease_5.0-1+bionic_all.deb

#镜像下载
[root@zabbix-server ~]#wget 
https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/pool/main/z/zabbixrelease/zabbix-release_5.0-1+bionic_all.deb
[root@zabbix-server ~]#dpkg -L zabbix-release
/.
/etc
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/zabbix.list
/etc/apt/trusted.gpg.d
/etc/apt/trusted.gpg.d/zabbix-official-repo.gpg
/usr
/usr/share
/usr/share/doc
/usr/share/doc/zabbix-release
/usr/share/doc/zabbix-release/README.Debian
/usr/share/doc/zabbix-release/changelog.Debian
/usr/share/doc/zabbix-release/copyright
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main
deb-src http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main

#镜像加速
[root@zabbix-server ~]#sed -i.bak 
's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' 
/etc/apt/sources.list.d/zabbix.list
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
[root@zabbix-server ~]#apt update

#安装包
[root@zabbix-server ~]#apt -y install zabbix-server-mysql zabbix-frontend-php 
zabbix-apache-conf zabbix-agent zabbix-get 

#安装MySQL
[root@zabbix-server ~]#apt install mysql-server -y

#如果MySQL和ZabbixServer在同一台主机,此项可不改
[root@zabbix-server ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address        = 0.0.0.0 
[root@zabbix-server ~]#systemctl restart mysql.service

#准备数据库和用户
[root@zabbix-server ~]#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;

#初绐化数据库的表
[root@zabbix-server ~]#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | 
mysql -uzabbix -p123456 zabbix

#修改Zabbix Server 连接MySQL 
[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
DBPassword=123456

#修改PHP配置
[root@zabbix-server ~]#vim /etc/zabbix/apache.conf
   php_value date.timezone Asia/Shanghai 
[root@zabbix-server ~]#systemctl restart zabbix-server zabbix-agent apache2
[root@zabbix-server ~]#systemctl is-active zabbix-server zabbix-agent apache2
active
active
active
[root@zabbix-server ~]#systemctl enable zabbix-server zabbix-agent apache2

#安装中文包
[root@zabbix-server ~]#apt -y install language-pack-zh-hans
[root@zabbix-server ~]#systemctl restart apache2

#浏览器访问
http://server_ip_or_name/zabbix

2. 总结 zabbix主动模式和被动模式简介及实现

Zabbix 监控流程中 Agent 收集数据分为主动和被动两种模式

主动模式和被动模式都是相对 zabbix agent 而言的

Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次

主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任 务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式 只需要发送一次数据,大大提高了传输效率。

  • 被动模式: Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个 监控项,则需要100次交互
  • 主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给 server/proxy,如有100个监控项,只需要1次交互即可 

注意: 两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式

Zabbix 的主动和被动模式工作原理:

被动模式监测通信过程如下:

Server打开一个TCP连接

Server发送请求

agent.ping Agent接收到请求并且响应

Server处理接收到的数据

关闭TCP连接

被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很多端口,就会出现server端性能瓶颈问题。

主动模式监测通信过程如下:

zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据 值给server或者proxy。

zabbix多久获取一次active items?

它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重 试。

3. 总结 zabbix proxy主动及被动案例

Zabbix Proxy 也分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样

Zabbix Proxy的模式是从Zabbix Proxy 角度来说的

Zabbix Proxy在主动模式下要主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大幅降低Zabbix Server的压力,生产推荐使用

Zabbix Proxy在被动模式下要被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。

注意: Zabbix Proxy 的主动模式和被动模式和Agent的主动被动模式没有关系

4. 总结自定义监控,监控linux, nginx, 并基于短信/email报警。

 监控流程:

1 明确监控的内容

2 内置的模板中是否有内容的实现

3 如果没有,只能自定义

4 编写采集数据的命令程序实现

5 修改agent 配置,添加自定义监控项

6 创建模板

7 在模板创建监控项

8 主机上关联模板

自定义监控项配置

监控项键值的格式

客户端可以自定义监控项,在Zabbix Agent 配置文件添加内容,格式如下:

#cat /etc/zabbix/zabbix_agentd.conf 

#cat /etc/zabbix/zabbix_agent2.conf 

UserParameter=<key>,<shell command> Include=/etc/zabbix/zabbix_agentd.d/*.conf 

#或者创建独立的自定义文件

#cat /etc/zabbix/zabbix_agentd.d/*.conf 

#cat /etc/zabbix/zabbix_agent2.d/*.conf 

UserParameter=<key>,<shell command>

测试监控项:

在Zabbix Agent 上执行测试

#不需要重启服务: 

zabbix_agentd -t "在客户端定义的key名[arg1,arg2,...]" 

zabbix_agent2 -t "在客户端定义的key名[arg1,arg2,...]"

在Zabbix Server上可以使用zabbix_get工具获取自定义监控项

#需要重启服务:systemctl restart zabbix-agent2.service 

zabbix_get -s 客户端IP -p 10050 -k "在客户端定义的key名[arg1,arg2,...]"

监控 Nginx 服务

查看nginx状态页的宏定义路径:可以修改宏定义

#安装nginx

[root@ubuntu200406 ~]#apt install nginx -y

#然后配置nginx状态页

[root@ubuntu200406 ~]#vim /etc/nginx/sites-enabled/default

location /basic_status {      #basic_status是宏定义路径,Zabbix系统默认监控路径

            stub_status;

        }

#语法检查没有问题

[root@ubuntu200406 ~]#nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

#重新加载nginx即可

[root@ubuntu200406 ~]#nginx -s reload

此时,浏览器访问192.168.31.181/basic_status即可,如下图:

192.168.31.181再添加一个Nginx by Zabbix agent模版:

5. 完成部署zabbix agent脚本,可适配rocky和ubuntu系统。

[root@ubuntu1804 ~]#cat install_zabbix_agent_src.sh
#!/bin/bash

ZABBIX_VER=5.0.13
FILE=zabbix-${ZABBIX_VER}.tar.gz
INSTALL_DIR=/apps/zabbix_agent
SERVER=10.0.0.100
HOST=`hostname -I`
. /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(){
    wget https://cdn.zabbix.com/zabbix/sources/stable/${ZABBIX_VER%.*}/zabbix-$ZABBIX_VER
.tar.gz
[ -e ${FILE} ] || { color "$FILE 文件不存在,请检查" 1 ; exit 1; }
}

prepare (){
    if [ $ID = "centos" $ID = "rocky" ];then
        yum -y install gcc make pcre-devel || { color "zabbix agent 相关包安装失
败,请检查" 1 ;exit; }
    else
        apt -y install gcc make || { color "zabbix agent 相关包安装失败,请检查" 1
;exit; }
    fi
    id zabbix &> /dev/null || useradd -r zabbix
}

install() {
    tar xf $FILE
    cd zabbix-$ZABBIX_VER
    ./configure --prefix=${INSTALL_DIR} --enable-agent
    make && make install
}

config () {
    sed -i.bak -e "s/Server=127.0.0.1/Server=$SERVER/" -e "s/Hostname=Zabbix
server/Hostname=$HOST/" ${INSTALL_DIR}/etc/zabbix_agentd.conf
    echo 'PATH=${INSTALL_DIR}/bin/:${INSTALL_DIR}/sbin/:$PATH' >
/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}/etc/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 && color "Zabbix Agent 安装完成并启动"
0
}
check
prepare
install
config
service

​

6. 完成命令行脚本,可以基于zabbix api添加zabbix agent到zabbix web。

API添加主机前,需要预先知道要添加的主机IP、此主机预先安装并配置好zabbix agent、预先知道要关联
的模板ID/组ID等信息,然后同API提交请求添加

#批量添加主机

[root@zabbix-server ~]#vim ./zabbix-api-addhosts.sh
#!/bin/bash

ZABBIX_SERVER=10.0.0.100
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
NET=10.0.0

for HOST in $NET.{200..210};do

curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
    "host": "'$HOST'",
    "name": "'web-$HOST'",
    "interfaces": [
        {
        "type": 1,
        "main": 1,
        "useip": 1,
        "ip": "'$HOST'",
        "dns": "",
        "port": "10050"
        }
    ],
    "groups": [
        {
            "groupid": "2"
        }
    ],
    "templates": [
        {
            "templateid": "10001"
        }
    ]
 },
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php
done
[root@zabbix-server ~]#bash ./zabbix-api-addhosts.sh

7. 基于课程演示,构建一个漂亮的granfana大盘。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑哈哈666

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值