架构师第二周作业

1. 总结各系统版本的zabbix安装。

Zabbix Server 提供了三种安装方法

  • 二进制包安装: 官方提供了二进制包安装的方法,可以支持CentOS和Debian/Ubuntu的安装
    注意:Ubuntu22.04 不支持 Zabbix Server 5.0,只支持 Zabbix Server 6.0以上版本
  • 源码编译安装: 部署繁琐,生产环境定制安装可以使用
  • 基于容器安装: 测试环境使用,参考链接如下
    https://www.zabbix.com/documentation/6.0/zh/manual/installation/containers
    https://www.zabbix.com/documentation/5.0/zh/manual/installation/containers
    https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

安装 Zabbix Server 包:访问链接: https://www.zabbix.com/download 找到仓库的源

#CentOS8安装Zabbix5.0
https://www.zabbix.com/download?
zabbix=5.0&os_distribution=centos&os_version=8&db=mysql&ws=apache

#Ubuntu18.04安装Zabbix5.0
https://www.zabbix.com/download?
zabbix=5.0&os_distribution=ubuntu&os_version=18.04_bionic&db=mysql&ws=apache
#CentOS8安装Zabbix4.0
https://www.zabbix.com/download?
zabbix=4.0&os_distribution=centos&os_version=8&db=mysql&ws=apache
#Ubuntu18.04安装Zabbix4.0
https://www.zabbix.com/download?
zabbix=4.0&os_distribution=ubuntu&os_version=18.04_bionic&db=mysql&ws=apache

在ubuntu18.04 安装 Zabbix Server 5.0
#官网下载
[root@zabbix-server ~]#wget
https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-
release_5.0-1+bionic_all.deb
#镜像下载
[root@zabbix-server ~]#wget
https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/pool/main/z/zabbix-
release/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

#浏览器访问
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, 并基于短信/微信报警。

监控流程:

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. 完成1键安装zabbix agent脚本,可以用于ubuntu系统。

#CentOS和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. 完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。

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

#添加一台主机

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

ZABBIX_SERVER=10.0.0.100
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=10.0.0.106
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
    "host": "'web-api-$HOST'", #创建主机名称
    "name": "'web-api-$HOST'", #可见的名称
    "interfaces": [
        {
        "type": 1, #类型为1表示agent,2是SNMP,3是IPMI,4是JMX
        "main": 1, #主要接口
        "useip": 1, #0是使用DNS,1是使用IP地址
        "ip": "'$HOST'", #添加的zabbix agent的IP地址
        "dns": "",
        "port": "10050" #agent使用的端口
        }
    ],
    "groups": [
        {
            "groupid": "2" #添加到的组的ID
        }
    ],
    "templates": [
        {
            "templateid": "10001" #关联的模板的ID
        }
    ]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php | python3 -m json.tool

[root@zabbix-server ~]#./zabbix-api-addhost.sh
{
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10273"
        ]
    },
    "id": 1
}
[root@zabbix-server ~]#./zabbix-api-gethostlist.sh
{
    "jsonrpc": "2.0",
    "result": [
        {
            "hostid": "10084",
            "host": "Zabbix server"
        },
        {
            "hostid": "10270",
            "host": "10.0.0.105"
        },
        {
            "hostid": "10273",
            "host": "10.0.0.106"
        }
    ],
    "id": 1
}
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笑哈哈666

您的鼓励是我创作的源泉

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

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

打赏作者

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

抵扣说明:

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

余额充值