第十二周作业

目录

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

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

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

3.1 Ubuntu 安装 Zabbix Proxy 6.0

3.2 准备数据库 

3.3 修改proxy配置文件

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

4.1 监控linux

4.2 监控nginx

4.3  邮箱告警

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

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

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


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

#官网选择版本下载zabbix安装包        

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
 

#安装Zabbix server,Web前端,agent

apt update & apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

#创建初始数据库

mysql -uroot -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '123456';
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进程

systemctl enable  --now zabbix-server zabbix-agent nginx php8.1-fpm


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

Zabbix 有两种工作模式 : 主动和被动模式,默认为被动模式
无论是模式还是被动模式,都是站在 zabbix agent 角度来说的工作模式
  • 被动模式: Server Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100监控项,则需要100次交互
  • 主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,如有100个监控项,只需要1次交互即可

实现zabbix主动模式

#在 Zabbix Agent 配置主动模式

vim /etc/zabbix/zabbix_agentd.conf

Server = 10 .0.0.100          # 被动模式指向 Zabbix Server IP FQDN
ServerActive = 10 .0.0.100         # 主动模式指向 Zabbix Server IP FQDN
Hostname = 10 .0.0.200              # 当前主机的 IP, 此项必须和 Zabbix Server 中设置的主机名称相
Timeout = 30                       # 建议修改
#重启服务
systemctl restart zabbix-agent.service
使用主动模式需要将主机监控项也更改为主动模式的监控项


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

zabbix 作为一个分布式监控系统 ( 分布式监控解决方案 ) ,支持通过代理 (proxy) 收集 zabbix agent 的监控 数据, 然后由 zabbix proxy 再把数据发送给 zabbix server ,也就是 zabbix proxy 可以代替 zabbix server 收集监控数据,然后把数据汇报给zabbix server ,所以 zabbix proxy 可以在一定程度上分担了 zabbix server的数据收集压力,从而降低了数据的采集时间、也相应的增加了 zabbix server 的监控能力。
Zabbix Proxy 使用场景:
  • 监控远程区域设备,尤其是多机房和多个云环境时
  • 监控网络不稳定区域,避免跨网段监控的告警不及时
  • 当需要监控设备众多时,使用它来减轻 Zabbix Server 的压力
  • 简化分布式监控的维护,无需各位创建 Zabbix Server,统一管理策略
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的大版本必须要和zabbix server版本相同,否则很可能会导致出现 zabbix server与zabbix proxy不兼容问题, 所有主机的主机名要唯一,否则被动模式可能会影响数据采集

3.1 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

3.2 准备数据库 

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 ~] #zcat /usr/share/doc/zabbix-proxy
mysql/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

3.3 修改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
#在 Zabbix Server 上配置 Zabbix Agent 使用主动代理或被动代理

 

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

如果内置的监控项无法满足要求 , 可以自定义监控项
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>

 范例:取根文件系统的空间利用率

[root@centos8 ~] #cat /etc/zabbix/zabbix_agentd.d/test.conf
[root@centos8 ~] #cat /etc/zabbix/zabbix_agent2.d/test.conf
UserParameter = root_filesystem_use,df|awk -F ' +|%' '$7 == "/" {print $5 }'
# 客户端测试
[root@centos8 ~] #zabbix_agent -t root_filesystem_use
[root@centos8 ~] #zabbix_agent2 -t root_filesystem_use
# 重启服务后服务器端才能获取数据
[root@centos8 ~] #systemctl restart zabbix-agent.service
# 服务器端测试
[root@zabbix-server ~] #yum -y install zabbix-get
[root@zabbix-server ~] #apt -y install zabbix-get
[root@zabbix-server ~] #zabbix_get -s 10.0.0.38 -p 10050 -k
"root_filesystem_use"

 可以创建自定义模板,灵活配置主机

使用流程:

  • 创建模板,模板必须属于某个主机组(一般属于主机组Templates)
  • 在模板中创建监控项、图形、触发器
  • 创建需要监控的主机,然后关联对应的模板
  • 更改模板的监控项目,所以使用模板的都会自动更改
  • 导出模板,后期可以至其他系统继续使用

 4.1 监控linux

 #添加主机

#关联内置模板

#确认成功

#查看监控数据

4.2 监控nginx

#安装和配置nginx 

#Ubuntu 系统
[root@ubuntu2204 ~] #apt update && apt -y install nginx
[root@ubuntu2204 ~] #vim /etc/nginx/sites-enabled/default
server {
  .....
    # 添加下面三行, Zabbix 默认监控 /basic_status, 此处为 /status ,需要和 zabbix 的模板定义的路
径要保持一致  
  location /status {
      stub_status;
  }
  ......
}
[root@ubuntu2204 ~] #nginx -s reload
# 红帽系统
[root@centos8 ~] #yum -y install nginx
[root@centos8 ~] #vim /etc/nginx/nginx.conf
http {
  server {
location / {
      }
        # 添加下面三行, Zabbix 默认监控 /basic_status, 此处为 /status ,需要和 zabbix 的模板定义
的路径要保持一致  
              location = /status {    
                  stub_status;
                }

        }
}
[root@centos8 ~] #systemctl enable --now nginx

#关联内置模板,修改宏定义

 

 

Zabbix 内置宏定义{$NGINX.STUB_STATUS.PATH}默认值为 basic_status,修改为nginx配置文件中的status 

#查看监控数据

4.3  邮箱告警

  1. 在邮箱上开启SMTP功能,利用此邮箱实现发送报警邮件
  2. 创建报警媒介类型实现发信人功能:管理-->报警媒介类型-->创建报警媒介类型
添加消息模板用于发送信息

 

# 可以修改两个消息模板
# 问题
主题 : 告警 : {EVENT.NAME}
告警主机: {HOST.NAME1}
告警服务 : {ITEM.NAME1}
告警 Key1: {ITEM.KEY1} {ITEM.VALUE1}
告警 Key2: {ITEM.KEY2} {ITEM.VALUE2}
严重级别 : {TRIGGER.SEVERITY}
# 恢复 Problem Recovery
主题 : 恢复 : {EVENT.DURATION}: {EVENT.NAME}
恢复主机: {HOST.NAME1}
恢复服务: {ITEM.NAME1}

恢复 Key1 {ITEM.KEY1} {ITEM.VALUE1}
恢复 Key2: {ITEM.KEY2} {ITEM.VALUE2}

 

 创建完成,可以看到下面信息

 测试是否邮件正常,有时QQ邮箱不成功,可以尝试其它邮箱,如163邮箱

成功可以收下邮件和提示

 


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

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=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,

        "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. 基于课程演示,构建一个漂亮的grafana大盘。

# 下载安装grafana

wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.1.0_amd64.deb

apt-get install -y adduser libfontconfig1 musl
dpkg -i grafana-enterprise_11.1.0_amd64.deb

#启动服务,默认监听端口3000

systemctl enable --now grafana-server.service

页面展示

 

#官方网站下载zabbix插件

 

#下载指令

grafana-cli plugins install alexanderzobnin-zabbix-app 

#添加目录权限,否则grafana页面不会显示安装成功

chown -R  grafana.grafana /var/lib/grafana/plugins/

#重启服务

systemctl restart grafana-server.service 

 #在grafana界面启动zabbix插件

 

 

 #添加数据源

 URL填写以下信息:

# 基于 nginx
http: //zabbix-server/api_jsonrpc.php
# 基于 apache
http: //zabbix-server/zabbix/api_jsonrpc.php

 填写zabbix账号密码,点击保存和测试,显示成功

 上面页面-dashboards,导入自带的dashboards

 官网导入其他制作好的模板

https://grafana.com/grafana/dashboards

 寻找合适模板,导入ID或下载文件拖入

 

 界面如下,根据需要调整监控项

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值