zabbix如何监控服务器

发布时间 2023-12-18 15:17:03作者: Mrterrific

1.zabbix架构图

 

zabbix核心概念

先记住如下zabbix中的核心几个概念

主机 ( HOST ) : 就是具体的一个监控对象,某一个被监控的实例,可以是一个数据库,也可以是一个操作系统。

模板 ( Template ):定义了具体一类监控对象的抽象,比如 Windows 模板,就是用来专门在监控Windows的时候,直接选择这个模板就可以实现开箱即用的数据采集。

监控项 ( ITEM ):监控项定义了具体的某一项采集指标,比如 CPU使用率,设备温度等,采集方式可以是多种支持的采集协议。

触发器 ( Trigger ):触发器是基于监控项存在的,通过WEB页面定义触发器表达式创建。比如 CPU温度大于90度,可以定义为:last(/zabbix_server/cpu_temp) > 90

动作 ( Action ):动作是基于触发器存在的,创建动作时可以选择具体的某个触发器,当触发器表达式满足要求时,会触发对应的Action执行,具体的动作定义可以执行 JavaScript,Shell脚本 等。

zabbix-server

Zabbix Server 是 C 语言开发的 Zabbix 服务端,有着 强悍的采集和计算性能,而且资源使用率很低。主要的功能如下:

定时读取 Zabbix 数据库,同步 Zabbix UI 配置的信息到缓存,下发到 Zabbix Agent 或者 Zabbix Proxy。

关于这俩不同的采集进程,可以通过(ps -ef|grep zabbix 查看进程列表)

对于被动采集(主动和被动是从设备侧角度来看的), Zabbix Server 会有专门的 Poller 线程去采集数据,可以定义特定的时间区间或者特定的频率。

对于主动采集,就是Agent或者设备主动上报数据,Zabbix Server 也会有专门的 Trapper 线程来接收数据,时间间隔或者频率取决于设备侧或者Agent上报配置。

接收到的历史数据(来自于 Agent、Proxy、设备侧),Zabbix Server 会缓存下来,进行告警表达式计算,进行动作触发,最终会同步到数据库的历史记录表,history开头的表。

zabbix-proxy

Zabbix Proxy 其实就是一个简化版的Zabbix Server,具备除了 Zabbix Server 有的告警相关的功能,其他的都是 Proxy 具备的

Zabbix Proxy 会定时把采集到的数据上报到 Zabbix Server,Zabbix Server 具备全量的数据,才可以做告警计算,复杂的告警计算可以跨设备。

针对大型监控采集环境,可以 通过 Proxy 来实现分布式采集 ,可以非常有效的减轻 Zabbix Server 的采集压力。

针对 弱网环境 ,就是网络质量不高的现场环境,Proxy 可以在本地采集,缓存本地,不断重试给Server发送数据,直到发送成功为止,可以大大降低现场的采集失败率。

Zabbix 官方文档给出的描述

 

更多更详细的可以看
https://www.zabbix.com/documentation/4.0/zh/manual/distributed_monitoring/proxies

2.zabbix快速监控主机(agent)

# 1.目标机器安装zabbix-agent 
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm

# 友情提醒,先做好时间同步!!
ntpdate -u ntp.aliyun.com



# 2.修改zabbix-agent配置文件

官网资料,关于配置文件的解释
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/config/zabbix_agentd


修改配置如下,保证和我一样先
[root@web-7 ~]#grep -E '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid 
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0                # 日志切割,不切割
Server=10.0.0.61      #    填写zabbix-server地址
Include=/etc/zabbix/zabbix_agentd.d/*.conf


3.启动agent
[root@web-7 ~]#systemctl start zabbix-agent 
[root@web-7 ~]#systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@web-7 ~]#


4.检查,agent的端口是10050
[root@web-7 ~]#netstat -tunlp|grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1644/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1644/zabbix_agentd

安装zabbix-get检查连接情况

1. 去服务端安装
[root@m-61 ~]#yum install zabbix-get -y


2. 试试和agent连得通吗?通就可以去管理了
# 友情提醒,要和zabbix_agent中填写的网段是同一个

[root@m-61 ~]#zabbix_get -s 10.0.0.7  -k agent.ping 
1

3.进入zabbix-ui添加web7机器

1.启动客户端机器的agent之后,以及指定了zabbix-server的地址,它俩就可以通信了

2.去zabbix-ui页面,创建主机


3.如果zabbix-server想监控自己,也要启动zabbix-agent
[root@m-61 ~]#systemctl start zabbix-agent
[root@m-61 ~]#systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@m-61 ~]#

 

添加主机

可以填写主机名,以及可见名称

只要监控agent的接口  10.0.0.7:10050 填对了就好

 

添加一个模板

 

最终结果

 

4.更细节的添加操作

在安装完毕zabbix-agent之后,我们想对某台机器进行监控,采集各种数据

还得进去zabbix-UI 进行主机添加,流程是

创建主机群组
创建主机
添加监控项
配置触发器
创建图形
告警配置

创建主机群组

 

添加一个web组,用于管理一组都属于web组的机器,如web7 web8 web9
接下来就是添加主机了

添加主机

 


 

关联模板

 

主机添加好之后,你就得定义要监考哪些内容了,是监控内存?CPU、磁盘、服务、还是其他?

问题是,你一台机器要添加这些、给你一百台机器,都手动反复的添加?

因此zabbix给了你模板的功能,这一堆需要监控的内容,被制作成了统一的模板,拿来即用,效率很高。

你只需要将主机和模板关联即可。

具体流程

1. 选择主机,进入主机详细
2. 进入模板选项,配置模板
3. 自己选择一个模板添加,一般直接加 template os linux即可
4. 注意要点击添加按钮。

 


 

小试牛刀,看看美观的图形

1.经过上述添加之后,web7机器的信息就已经被监控中了
执行如下命令,给cpu来点压力
[root@web-7 ~]#while true;do echo "www.yuchaoit.cn 超哥带你学linux";done


2.通过图形功能,进行cpu的监控图示

cpu图示

 

内存图示