Day04-zabbix补充项目案例

13.2 自动注册

  • 应用场景,经常性添加主机。

  • 准备:

    • 关闭 自动发现 规则
    • 关闭 自动发现 动作
    • 自动发现的主机 删除
  • zbx客户端配置: 修改zabbix客户端配置文件: ServerActive=服务端ip 和Hostname=… …

  • web页面,动作–>自动注册 autoreg…

在这里插入图片描述

在这里插入图片描述

1)zbx客户端配置文件

  • 客户端主动把自己的信息,提供给服务端。
  • 服务端收到数据后通过 自动注册动作,判断与添加。
客户端的配置说明
Server=172.16.1.63服务端地址。
ServerActive=172.16.1.63主动模式下的服务端ip地址。
#Hostname=web01当前主机名,这个可以注释掉或使用ansible配置。建议注释使用下面的内容,自动获取主机名
HostnameItem=system.hostname通过后面指定的键值获取主机名。 ⚠ Hostname和HostnameItem2选1.Item监控项、键值
HostMetadataItem=system.uname主机的 元数据 键值,类似于自动发现中的system.uname判断存活和获取主机信息
  • HostMetadataItem=system.uname

在这里插入图片描述

  • zbx客户端配置(通用)
[root@web01 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.62
ServerActive=172.16.1.62
HostnameItem=system.hostname
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
[root@web01 ~]# systemctl restart zabbix-agent2.service 

2)web页面,动作–>自动注册

  • 与自动发现类似,客户端找到服务端后提交自己信息。

  • 服务端通过自动注册动作进行判断与添加即可。

  • 进入自动注册动作配置页面

在这里插入图片描述

  • 创建自动注册动作

在这里插入图片描述

  • 配置自动注册动作

在这里插入图片描述

在这里插入图片描述

  • 配置自动注册操作

在这里插入图片描述

  • 完成与等待

在这里插入图片描述

在这里插入图片描述

  • 可以选择重启客户端或者服务端的zabbix服务来加快显示

在这里插入图片描述

3)小结

  • 整体流程与自动发现类似,但是自动注册无法再web页面直接查看是否发现了主机,只能看是否添加主机。
  • 自动注册,web页面没有地方配置规则,自动注册把规则写入到了客户端配置文件中的。
  • web页面只需要配置,自动注册动作即可。

14. 来点大的-分布式监控

14.1 分布式监控概述及应用场景

  • zabbix分布式监控应用场景: 监控多个地区/多个机房的服务器,服务器之间内网不通
多个节点(区域、机房)zbx监控问题方案01:客户端直接写服务端公网ip方案02:使用分布式监控
带宽
网络稳定性问题
可能存在误报
  • 应用场景

在这里插入图片描述

14.2 分布式监控实战

  • 目标:
    • 应对公司网站服务器较多场景.
    • 公司网站服务器分散在不同的机房或地区(跨机房)

1) 分布式监控搭建

在这里插入图片描述

2) zbx-代理

  • 安装zbx-proxy-mysql 代理
  • 安装数据库
  • 配置
1. 安装代理
yum install -y https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-proxy-mysql-6.0.29-release1.el7.x86_64.rpm
rpm -qa |grep zabbix
zabbix-proxy-mysql-6.0.5-1.el7.x86_64
zabbix-agent2-6.0.5-1.el7.x86_64

2. 安装与启动数据库
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
yum install -y mariadb-server
检查版本
rpm -qa |grep -i mariadb

systemctl enable --now mariadb
mysql_secure_installation 执行后根据提示yes或no
   Switch to unix_socket authentication [Y/n] N
   Change the root password? [Y/n] n
   Remove anonymous users? [Y/n] Y
   Disallow root login remotely? [Y/n] Y
   Remove test database and access to it? [Y/n] Y
   Reload privilege tables now? [Y/n] Y
   
3. 进入数据库创建库,创建用户。
zibbix_proxy 
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';

4. 导入数据库(初始化zbx_proxy)
mysql -uroot zabbix_proxy <schema.sql
mysql -uroot -e 'show tables from zabbix_proxy;'

zabbix_proxy 初始化脚本说明

zbx 5.x 初始化脚本在软件包中有。

zcat /usr/share/doc/zabbix-proxy-mysqlՎʺschema.sql.gz | mysql -uzabbix -p123456 zabbix_proxy

zbx 6.x 需要使用源码包中database/mysql/schema.sql,使用这1个就行。

  • 修改代理配置文件
5. 修改zbx_proxy配置文件
[root@web01 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=172.16.1.63
Hostname=shanghai_proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
systemctl enable --now zabbix-proxy.service

6. 查看代理日志 报错
cannot send proxy data to server at "172.16.1.63": proxy "shanghai_proxy" not found
  • web页面添加代理

在这里插入图片描述

  • 配置代理
    • 注意名字与代理配置中一致。

在这里插入图片描述

在这里插入图片描述

  • web页面可以看到最近出现时间(只要有时间即可)
    • 如果长时间没有出现,可以查看代理日志,如果持续出现not found 情况。可以重启下代理和服务端。

在这里插入图片描述

3) zbx-客户端修改

  • 修改配置文件
[root@nfs01 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.66
ServerActive=172.16.1.66
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
[root@nfs01 ~]# systemctl restart zabbix-agent2.service 
[root@m03-zbx-server mysql]# systemctl restart zabbix-proxy.service

在这里插入图片描述

  • web页面修改,修改这些服务器通过代理获取数据的。修改为

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

14.3 小结

  • zbx分布式监控应用场景

  • 使用流程.

15. 低级自动发现

  • 自动发现、自动注册用于发现主机。
  • LLD 低级自动发现,用于发现 监控项 (触发器,图形),一般用于发现网卡,发现磁盘分区。。。。

16. zbx api

1)api概述

  • api Application Programming Interface 应用程序编程接口 (相当于是shell函数作用)

  • api接口应用场景: 发送企业微信消息,人脸识别,短信验证,身份验证 使用第3方,功能即可.

  • 使用与调用:

    • 自己写程序调用:直接通过程序代码进行调用(shell,python,golang,),需要参考对方的api接口文档(请求参数,要求的格式)
    • api接口调试工具:apipost,postman
    • 官方写好的你来使用(SDK 一般指软件开发工具包): 通过sdk样例快速调用和使用即可.

2)zabbix api

  • 开源软件/商业软件的的api接口: 进行二次开发.
  • cmdb (存储与管理企业IT架构中设备的各种配置信息):自动化运维平台,web页面管理(Golang,Python)

3)zbx api使用流程

  • api接口使用流程:

    • 根据zabbix用户名和密码,获取token(令牌)
    • 使用token,访问或调取zabbix资源
    • zabbix-api-各种方法
  • 方法01 curl命令

  • 方法02 api测试工具

  • curl

  • zbx 6.x

token令牌
21ac48b7ef3d033b16cf202812fd0cbeaf9f6d9104202cbe299fdd0232de97d7
  • 准备获取令牌

在这里插入图片描述

  • 获取令牌

在这里插入图片描述

  • 显示令牌( 注意仅显示1次 )

在这里插入图片描述

  • 通过api获取主机列表
#案例01 通过zabbix api 获取主机列表

curl -X POST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
    "output": [
        "hostid",
            "host"
       ],
       "selectInterfaces": [
           "interfaceid",
           "ip"
       ]
   },
   "id": 2,
   "auth": "21ac48b7ef3d033b16cf202812fd0cbeaf9f6d9104202cbe299fdd0232de97d7"
}'  http://zbx.oldboylinux.cn/api_jsonrpc.php | jq

-X 指定请求方法
-H 修改请求头
-d 发出POST请求,要上传的内容。

4)小结

  • 会创建zbx api的token
  • 一般对zabbix二次开发.
  • grafana会使用zabbix api获取数据.

17. zabbix性能优化

1)优化概述

  • performance tunning 性能调优
    • 网站架构调整: 尽量让用户的请求往前推(用户请求不要到达你的网站走cdn,各种缓存,消息队列)
    • 读? 写? 拆分思想.
    • 穷则战术穿插,富则火力覆盖

2)硬件优化

  • 硬件优化 : cpu,内存,磁盘,网卡(10G万兆网卡,光纤 ),raid

3)zabbix服务端配置优化

  • zabbix参数的配置: 缓存和进程数量

    • xxxxcache 用于zabbix服务端缓存获取的各类数据 (历史数据,趋势数据…)
    • poller zabbix用于数据采集进程 (接收agent的数据的进程 接收snmp 接收jmx 接收ipmi…)
  • 缓存配置

vim /etc/zabbix/zabbix_server.conf
# 用于存储主机、监控项、触发器数据的共享内存大小
CacheSize=8M  #512M 边调节边看监控 Zabbix server: Zabbix cache usage, % free

# 历史数据缓存
HistoryCacheSize=16M
#历史数据索引的缓存
HistoryIndexCacheSize=4M
#趋势数据缓存
TrendCacheSize=4M
#值的缓存
ValueCacheSize=8M
  • 根据图形调整缓存,进行数量。调整缓存大小之前

在这里插入图片描述

  • 调整缓存大小之后

在这里插入图片描述

在这里插入图片描述

  • 进程数量调整
vim /etc/zabbix/zabbix_server.conf
# 收集数据进程的数量
StartPollers=5

# 客户端/主机 不可达 可达主机 (包括IPMI 和 Java)的轮询进程的初始实例数量
StartPollersUnreachable=1

#用于接收http客户端的数据   
StartHTTPPollers=1

#用于收集客户端jmx的数据 (默认是0) java-gateway的时候使用
StartJavaPollers=5

#用于收集zabbix proxy代理的数据的进程数 默认是1 
StartProxyPollers=1

#收集ipmi客户端数据
StartIPMIPollers=0
  • 修改 poller进程数 对 zabbix服务端收集数据的进程 使用率的 影响

在这里插入图片描述

4)Zabbix客户端配置优化

  • 调整zbx客户端的模式。默认是被动模式,改为主动模式。 zbx被动模式简单,zbx服务端压力大。zbx主动模式,适用于大量主机监控。
  • 主动模式注意事项:
    • 改完配置后,主机客户端类型也要改(zbx客户端主动模式),web模板也要修改
    • 不绿了。如果监控中只有主动模式,不绿了。
主动模式配置
grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.62
ServerActive=172.16.1.62         # 修改为服务端ip 
#Hostname 这个注释掉
HostnameItem=system.hostname     # 修改为键值
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf

# 重启客户端
systemctl restart zabbix_agent2.service
  • 关联主动模式zbx模板

在这里插入图片描述

  • zabbix客户端
    • 不在使用客户端的默认的被动模式
    • 使用主动模式 Server 和 ServerActive web页面选择 zabbix客户端(主动模式)

5)Zabbix键值与监控项优化

  • zabbix 键值与监控项处理:

    • 增加更新间隔时间5m 10m
    • 推荐使用自定义模板,控制功能全面监控,监控项少,精简监控项 (精简)
    • 历史数据保留时长减少 设置为30d或7d, 增加趋势存储时间保留时间 365d
  • zabbix网站架构容量评估

#zabbix占用磁盘空间的计算

######关于历史数据的管家设置

Zabbix 将接收到的值保存一段固定的时间,通常为几周或几个月。每个新值都需要一定量的磁盘空间用于数据和索引。

所以,如果我们每秒收到 50 个值,且希望保留 30 天的历史数据,值的总数将大约在 (30*24*3600)* 50 = 129,60 0,000,即大约130M 个值。

根据所使用的数据库引擎,接收值的类型(浮点数、整数、字符串、日志文件等),单个值的磁盘空间可能在 40 字节到数百字节之间变化。 通常,数值类型的每个值大约为 90 个字节。

在上面的例子中,这意味着 130M 个值需要占用 1 3000 0000 * 90 bytes = 10.9GB 磁盘空间。

文本和日志类型的监控项值的大小是无法确定的,但可以以每个值大约 500 字节来计算。

#####趋势数据的管家设置

Zabbix 为表 trends 中的每个项目保留1小时的最大值 / 最小值 / 平均值 / 统计值。 该数据用于趋势图形和历史数据图形。 这一个小时的时间段是无法自定义。

Zabbix数据库,根据数据库类型,每个值总共需要大约90个字节。

假设我们希望将趋势数据保持5年。 3000 个监控项的值每年需要占用3000*24*365* 90 = 2.2GB 空间,或者5年需要占用 11GB 空间。
  • zabbix 触发器
    • 尽量使用 .last() (最新数据) .nodata() (是否有数据)
    • 避免使用需要计算函数 .max() .min() .avg()
    • 整体目标:不要让zabbix服务端进行计算/数据库进行计数,需要计算的内容放在客户端(自定义监控项)
zbx  5.x
{Template OS Linux by Zabbix agent:vfs.file.cksum[/etc/passwd].diff()}>0

zbx 6.x 
diff(/Template OS Linux by Zabbix agent/vfs.file.cksum[/etc/passwd]/) = 1

6)zabbix数据库优化

  • 根据业务类型调整:读少写多
    • 1:zabbix是一个写多读少的业务,优化数据库的写入性能,建议使用InnoDB存储引擎或tokudb存储引擎
    • 2:数据库分离或数据库拆分

7)小结

  • zabbix服务端架构与硬件优化
  • zabbix服务端配置 : 缓存,进程数
  • zabbix客户端配置 : 主动模式、被动模式
  • zabbix监控项与键值 更新间隔,历史数据,趋势数据保留时长
  • zabbix触发器 :避免使用计算的函数max(),min(),avg()
  • zabbix使用数据库优化

18. Zabbix高可用与升级

18.1 高可用

  • zbx 6.x 之前-zbx_server 多个+keepalived实现高可用即可。

  • zbx 6.x 开始 自带ha功能

[root@m03-zabbix-server-lidao996 ~]# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:
   # ID                       Name                 
    Address                       Status     Last Access
   1. cl43tm4p400010zult1zb275p <standalone server>   
    localhost:10051               active     3s
环境准备说明
m02zbx主
m03zbx 服务端的备 或者使用新的主机64
  • 添加远程连接zbx数据库的用户
grant all on zabbix.* to 'zabbix'@'172.16.1.%' identified by 'zabbix'; 
  • 准备web04的 zbx服务端的环境
1. 分发zbx -server命令
2. 分发zbx server的配置文件
3. 分发zbx server 启动配置文件 systemctl daemon-reload 添加用户zabbix
4. 安装依赖。
scp /usr/local/sbin/zabbix_server 10.0.0.10:/usr/local/sbin/
scp zabbix-6.0-all-rpms-lidao996.tar.gz 10.0.0.10:~
scp -r zabbix/   10.0.0.10:/etc/
scp /usr/lib/systemd/system/zabbix-server.service 10.0.0.10:/usr/lib/systemd/system/
  • 开始配置
第1台 zbx服务端
[root@m03-zabbix-server-lidao996 /etc]# grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
HANodeName=m02-zabbix-server
NodeAddress=172.16.1.62:10051

第2台zbx 服务端
[root@m03 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=172.16.1.63
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
HANodeName=m03-zabbix_server_backup
NodeAddress=172.16.1.63:10051
  • 检查当前高可用情况(主节点检查) 和检查高可用情况(备节点)

在这里插入图片描述

zabbix_server -R ha_status

在这里插入图片描述

  • web页面查看

在这里插入图片描述

  • 客户端配置
[root@web03 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.63,172.16.1.62           #多个服务端ip、主机名要用逗号分隔。
ServerActive=172.16.1.63;172.16.1.62     #多个ha集群节点名字或ip,要用分号分隔。
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
  • 配置仪表盘显示高可用状态信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 补充

在这里插入图片描述

  • 核心:
    • zbx高可用架构:
    • 前端(可以配置多个做负载均衡(相当于是高可用))
    • 数据库(数据库专用的高可用服务MHA)
    • zabbix 6.0开始HA功能.之前的版本通过keepalived+监控脚本实现高可用.
    • 使用的时候注意数据库连接,数据库用户授权.
    • HA状态检查 zabbix_server -R ha_status

18.2 升级

  • 服务端升级zbx 2.x 3.x 4.x 5.x --> zbx 6.x

  • 升级流程

    • 1.准备好新的数据库,备份好旧的数据库内容。
    • 2.按照数据库升级 要求变更数据库内容
    • 3.准备新的zabbix_server(rpm包)、命令和配置文件。
    • 4.备份,替换旧的zbx_server命令.检查。
    • 5.前端页面,根据要求准备好php对应版本即可。
    • 6.备份,放入新的前端代码即可。
    • 7.调试。

链接: https://www.zabbix.com/documentation/current/zh/manual/appendix/install/db_primary_keys

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值