zabbix如何监控服务器
zabbix架构图
zabbix架构理念
Server 服务端
Zabbix Server 是 Zabbix 的核心组件,其功能为将 Agent 采集到的数据持久化 存储到数据库里。
数据库存储
存储所有由 Agent 采集到的数据,Zabbix 支持多种数据存储,例如:
Mysql,Oracle,PostgreSQL,Elasticsearch 等。
Web 界面
Zabbix 提供了友好的 Web 界面方便我们操作,Web 界面的运行环境可以是 Nginx+PHP或者Apache+PHP服务组成。
Web界面也是ZabbixServer的一部分。
Proxy 代理端
对于分布式环境,Zabbix 也提供了代理的方案,可以代替 Zabbie Server 收集 多个 Agent 的数据,然后在将收集到的数据汇总到 Zabbix Server,Proxy 可以 起到分担 Zabbix Server 负载的作用。
Agent 客户端
Zabbix Agent 被部署在需要监控主机上,用于采集监控数据并发送到 Zabbix Server 端。
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添加主机去监控---------------------------
1:zabbix-server监控自己
给zabbix-server机器安装上agent进程,改配置,启动即可
1.修正时间
# 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.71
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
5. 小结
zabbix-server 地址是 10.0.0.71::10051
zabbix-agent 地址是 10.0.0.71:10050
2:agent装好后,查看最新数据
zabbix-agent装好之后,就已经有了采集数据的功能,继续来看zabbix-UI的操作,如何查看到采集了什么数据
给db51,db-52都给监控上
1:先在服务器上做好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
cat > /etc/zabbix/zabbix_agentd.conf <<'EOF'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
systemctl start zabbix-agent && systemctl enable zabbix-agent
# 检查
netstat -tunlp|grep zabbix
2:去zabbix-UI界面去添加了
2.1 添加主机群组
2.2 添加主机
2.3 添加一个模板
在安装完毕zabbix-agent之后,我们想对某台机器进行监控,采集各种数据
还得进去zabbix-UI 进行主机添加,流程是
创建主机群组
创建主机
添加监控项
配置触发器
创建图形
告警配置
安装zabbix-get命令,检测是否通信了
yum install zabbix-get -y
通过自带的zabbix key 检查 server和agent是否通信
[root@zabbix-server-71 ~]#zabbix_get -s 10.0.0.52 -k agent.ping
zabbix_get只能在服务端使用
应用集和监控项的解释
应用集就是对监控项的分类,分组
基于命令行,主动采集数据
zabbix_get -s 目标agent的地址 -k zabbix提供的key,或者自定义的key
自定义监控项
linux下的socket是什么作用?
ip:port 网络套接字链接,2台机器之间建立的链接,称之为socket链接
机器A 访问机器B的 nginx
机器A-ip:随机端口
10.0.0.7:44154 > 10.0.0.8:80
这就是一个socket链接记录,可以通过netstat看到,是谁,连接了web8这个机器
听懂1111
# -a 显示所有socket、-t显示tcp协议连接 -n 只显示ip(系统打印主机名)
[root@web-7 ~]#netstat -ant
zabbix自定义监控11种TCP状态全操作
1. 思考清楚,11种状态如何采集的命令
netstat -ant |grep -c 'TCP状态'
2. 编写zabbix-agent的配置文件,自定义key的配置文件
cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=tcp_status[*],netstat -ant|grep -c $1
EOF
3重启agent
systemctl restart zabbix-agent.service
4去服务端zabbix_get 验证下
[root@zabbix-server-71 ~]#zabbix_get -s 10.0.0.7 -k tcp_status[LISTEN]
5去图形化页面添加监控项
图形化添加监控项的步骤
查看最新数据
添加图形
触发器的添加