第十二周作业

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

#上官网选择对应系统版本
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=ubuntu&os_version=22.04&components=proxy&db=mysql&ws=

添加仓库路径包安装

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
#安装包
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent zabbix-get
创建初始数据库
root@ubuntu2:~# apt install mysql-server -y
 mysql -uroot -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

关闭变量

mysql> set global log_bin_trust_function_creators = 0;
mysql> exit;

配置数据库

vim /etc/zabbix/zabbix_server.conf
DBPassword=123456

配置php

vim /etc/zabbix/nginx.conf
listen 8080;
server_name zabbix.huang.com;
启动Zabbix server和agent进程
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm

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

Zabbix 有两种工作模式: 主动和被动模式

无论是模式还是被动模式,都是站在zabbix agent 角度来说的工作模式

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 Agent 配置主动模式
vim /etc/zabbix/zabbix_agentd.conf
Server = 192.168.10.105          # 被动模式指向 Zabbix Server 的 IP 或 FQDN
ServerActive = 192.168.10.105        # 主动模式指向 Zabbix Server 的 IP 或 FQDN
Hostname = 192.168.10.106              # 当前主机的IP,此项必须和Zabbix Server中设置的主机名称相
同
Timeout = 30                       # 建议修改
#重启服务
systemctl restart zabbix-agent.service

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

注意: Zabbix Proxy的大版本必须要和zabbix server版本相同,否则很可能会导致出现 zabbix server与

zabbix proxy不兼容问题

Ubuntu 安装 Zabbix Proxy 6.0

[root@ubuntu2204 ~] #wget
https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix
release_6.0-4%2Bubuntu22.04_all.deb
[root@ubuntu2204 ~] #dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
[root@ubuntu2204 ~] #sed -i.bak
's/repo.zabbix.com/mirrors.tuna.tsinghua.edu.cn\/zabbix/'
/etc/apt/sources.list.d/zabbix.list
[root@ubuntu2204 ~] #apt update
[root@ubuntu2204 ~] #apt -y install zabbix-proxy-mysql zabbix-sql-scripts

准备数据库

为Zabbix Proxy 创建一个单独的数据库

注意:Zabbix server和Zabbix proxy不能使用相同的数据库。 如果它们安装在同一主机上,则proxy数

据库必须具有不同的名称

[root@zabbix-proxy-active ~]#apt -y install mysql-server
[root@zabbix-proxy-active ~]#mysql
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17   |
+-----------+
1 row in set (0.00 sec)
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin;
mysql> create user proxy@'localhost' identified by '123456';
mysql> grant all on zabbix_proxy_active.* to proxy@'localhost' ;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
[root@zabbix-proxy-active ~]#yum -y install mysql
[root@zabbix-proxy-active ~]#apt -y install mysql
#包安装的路径
[root@zabbix-proxy-active ~]#zcat /usr/share/doc/zabbix-proxymysql/schema.sql.gz | mysql -uproxy -p123456 -h10.0.0.101 zabbix_proxy_active
[root@ubuntu2204 ~]#mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> exit

修改proxy配置文件

[root@zabbix-proxy-active ~] #grep '^[^#]' /etc/zabbix/zabbix_proxy.conf
ProxyMode = 0                         # 主动模式为 0 ,被动模式为 1, 默认为 0 即主动模式
Server = 10 .0.0.100                   # 指向 Zabbix Server
Hostname = zabbix-proxy-active         # 此名称必须和后面 Web 管理页的 agent 代理程序名称相同
DBHost = localhost                     #MySQL 服务器地址
DBName = zabbix_proxy_active           #MySQL 数据库名
DBUser = proxy                         # 连接 MySQL 的用户
DBPassword = 123456                   # 连接 MySQL 的用户密码
LogFile = /var/log/zabbix/zabbix_proxy.log
LogFileSize = 0
DebugLevel = 4                         # 指定日志级别,默认为 3 ,值越大日志越详细
EnableRemoteCommands = 1               # 开启远程命令,允许 server 到 proxy 上执行命令,在故障自愈时使用
PidFile = /var/run/zabbix/zabbix_proxy.pid
SocketDir = /var/run/zabbix
ProxyLocalBuffer = 360             # 当 proxy 将数据发送给 server 后将数据仍在本地保存多少时间 ,
默认不保留
ProxyOfflineBuffer = 720           # 当 proxy 和 server 无法连接时将数据在本地保存多长时间 , 默认
1 小时
HeartbeatFrequency = 60             #server 端用来检测 proxy 可用性的心跳信息的时间间隔 , 被动模式无效
ConfigFrequency = 60               # 每间隔多少时间到 server 获取监控项,在 agent 更新端监控
项,只在主动模式有效 , 默认 3600s
DataSenderFrequency = 60           # 数据发送的间隔时间,只在主动模式有效 , 默认 1s, 建议加长
JavaGateway = 10 .0.0.101           # 指向 JAVA gateway 主机
StartJavaPollers = 10               # 指定开启的进程数 , 默认为 0 ,即不开启
SNMPTrapperFile = /var/log/snmptrap/snmptrap.log
CacheSize = 8M                       # 当主机数量很多时,会将获取的监控项存放在缓存中,生产中
设置 2G
StartDBSyncers = 4                   # 启动多少个线程和数据库连接
HistoryCacheSize = 16M               # 保存 agent 发送过来的监控数据的内存空间大小,生产中设置2G
HistoryIndexCacheSize = 4M           # 历史数据的索引
Timeout = 30                         # 获取数据的最长等待时间
ExternalScripts = /usr/lib/zabbix/externalscripts
LogSlowQueries = 3000               # 慢查询时长
# 默认 zabbix-proxy.service 不自动启动,设置服务开机自启
[root@zabbix-proxy-active ~] #systemctl enable --now zabbix-proxy.service

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

从163中开启服务,保存授权码,163的账号密码为授权码,按照图下面的设置完成后返回进行测试

image-20240721222042886

image-20240721222335374

image-20240721222320627

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

[root@ubuntu1804 ~]#cat install_zabbix_agent_src.sh 
#!/bin/bash
#********************************************************************
#Author:           wangxiaochun
#QQ:               29308620
#Date:             2020-08-27
#FileName:         install_zabbix_agent_src.sh
#URL:               http://www.wangxiaochun.com
#Description:       The test script
#Copyright (C):     2020 All rights reserved
#********************************************************************
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。

ZABBIX_SERVER=zabbix.wang.org
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=192.168.10.105
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,
        "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 | python3 -m json.tool

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

#安装
apt-get install -y adduser libfontconfig1 musl
root@ubuntu: ~$ wget https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana-enterprise/grafana-enterprise_9.5.9_amd64.deb
dpkg -i grafana-enterprise_9.5.9_amd64.deb

#启动
root@ubuntu: ~$ systemctl enable --now grafana-server.service 

image-20240721224829869

安装zabbix插件(Zabbix plugin for Grafana | Grafana Labs

grafana-cli plugins install alexanderzobnin-zabbix-app

image-20240721225650717

启用

image-20240721225718665

添加地址和密码

image-20240721230426399

image-20240721230456449

保存测试

添加模板

image-20240721231259225

image-20240721231329729

image-20240721231509457

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值