监控平台Zabbix介绍与部署
一、Zabbix介绍
1.为什么要监控
-
在需要的时刻,提前预警即将出现的问题,避免故障发生
-
实时监控系统和业务,当出问题之后,通过发出告警,提醒相关人员,快速可以找到问题的根源,从而及时处理问题
-
可以实现网站,应用或者服务器的故障自愈,保证高可用性
-
以图形或者易观察的方式呈现当前以及过往的状态,便于分析和预测系统发展趋势
2.需要监控什么
监控一切需要监控的资源,包括:服务器、网络设备、业务应用、云服务等。
分类 | 实例内容 |
---|---|
硬件监控 | 通过远程控制卡: DeLL的iDRAC,HP的ILO和IBM的IMM等 使用IPMI来完成物理设备的监控工作。通常必须要监控包括温度、硬盘故障等 路由器,交换机(端口,光衰,日志),打印机等 |
系统监控 | cpu,内存,硬盘使用率,硬盘IO,系统负载,进程数 |
服务监控 | nginx,apache,php-fpm,mysql.memcache,redis ,tomcat,JVM,TCP连接数 |
性能监控 | 网站性能,服务器性能,数据库性能,存储性能 |
日志监控 | 系统会产生系统日志,应用程序会有应用的访问日志、错误日志,服务有运行日志等, 可以使用ELK来进行日志监控 |
安全监控 | 用户登录数,passwd文件变化,本地所有文件改动 Nginx+Lua编写一个WAF通过kibana可以图形化的展示不同的攻击类型的统计。 |
网络监控 | IP,端口,URL,DB,ping包,IDC带宽网络流量,网络流出速率,网络入流量, 网络出流量,网络使用率,SMTP.POP3 |
3.常见的监控工具
开源监控软件:cacti、nagios、zabbix、smokeping、open-falcon、nightingale等。
4.Zabbix功能
Zabbix是一个企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备,采集百万级监控指标,适用于任何IT基础架构、服务、应用程序和资源的解决方案。
Zabbix是一个高度成熟完善的网络监控解决方案,包含了多种功能,如下图所示:
数据收集
-
历史数据,即记录每个监控项采集到的每个监控值
-
趋势数据,主要保留某个监控项一个小时内历史数据的最大值、最小值和平
均值以及该监控项一个小时内所采集到的数据个数 -
可用性和性能检查;
-
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
-
自定义检查;
-
按照自定义的时间间隔采集需要的数据;
-
通过 Server/Proxy 和 Agents 来执行数据采集。
高度可配置化的告警
-
可以根据递增计划、接收者、媒介类型自定义发送告警通知;
-
使用宏变量可以使告警通知变得更加高效有用;
-
自动操作包含远程执行命令。
实时图形
- 使用内置图形功能可以将监控项实时绘制成图形。
Web监控功能
- Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
快捷的Web界面
-
基于 PHP 的 Web 前端;
-
可以从任何地方访问;
-
您可以定制自己的操作方式;
-
您可以通过审计日志来查看你的操作
5.Zabbix架构
Zabbix由如下主要的功能组件组成:
SERVER
-
Zabbix server 是 Zabbix 软件的核心组件
-
Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
-
Zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。
-
Zabbix server也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。
-
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
数据库
-
所有配置信息以及 Zabbix 采集到的数据都被持久存储在数据库中
-
可以支持MySQL,PostgreSQL,Oracle 等多种数据库
WEB 界面
WEB 界面是 Zabbix server 的一部分,用于实现展示和配置的界面通常(但不一定)和 Zabbix server 运行在同一台物理机器上基于 Apache(Nginx)+PHP 实现,早期只支持LAMP架构,从Zabbix5.0开始支持LNMP
AGENT
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix server。从Zabbix5.0开始支持Zabbix Agent2,zabbix agent2是用go语言开发的,支持更高并发。
PROXY
-
Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据
-
Zabbix Proxy 在 Zabbix 的部署是可选部分
-
Zabbix Proxy 的部署可以很好的分担单个Zabbix server的负载
Java 网关
Zabbix 要监控 tomcat 服务器和其它JAVA程序,需要使用 Java gateway 作为代理,才能从JAVA程序中获取数据
5.Zabbix端口号
- 客户端 zabbix agent 默认使用 10050 端口
部署在被监控的主机上,采集监控指标数据,并发送给zabbix server(数据采集支持主动模式和被动模式)
- 服务端 zabbix server 默认使用 10051 端口
zabbix服务端进程,用于配置和管理zabbix应用程序,也是监控系统的告警中心(需要配置监控项告警触发阈值和发送告警)
- 插件 java 默认使用 10052 端口
二、部署安排Zabbix
1.部署服务端zabbix-server
编译安装 Zabbix 4.0版本
1.1解决依赖关系
点击查看代码
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel libevent-devel java-1.8.0-openjdk-devel -y
1.2建立管理用户
点击查看代码
[root@node7 ~]# groupadd zabbix //添加组
[root@node7 ~]# useradd -g zabbix zabbix //添加用户 -g指定组
1.3解压包
点击查看代码
[root@node7 ~]# cd /data/ //切换到data目录下,上传安装包
[root@node7 data]# ls
zabbix-4.0.30.tar.gz
[root@node7 data]# tar xf zabbix-4.0.30.tar.gz //解压
[root@node7 data]# ls
zabbix-4.0.30 zabbix-4.0.30.tar.gz
1.4编译安装
点击查看代码
[root@node7 data]# cd zabbix-4.0.30/
[root@node7 zabbix-4.0.30]# ./configure --help //查看帮助
[root@node7 zabbix-4.0.30]# ./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
[root@node7 zabbix-4.0.30]# make
[root@node7 zabbix-4.0.30]# make install
1.5安装数据库
数据库可以安装在本地也可以分离
点击查看代码
[root@node7 zabbix-4.0.30]# yum install mariadb-server.x86_64 -y
[root@node7 zabbix-4.0.30]# systemctl start mariadb
[root@node7 zabbix-4.0.30]# mysql_secure_installation //安全加固脚本
//输入当前密码
//修改root密码
//移除匿名用户
//不让root远程登陆
//移除测试数据库
//刷新
[root@node7 zabbix-4.0.30]# mysql -uroot -p123 //登录数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
//创建一个名为 zabbix 的数据库,使用UTF-8字符集和utf8_bin校对规则
MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';
//在本地(即当前主机)创建一个名为 zabbix 的用户,并指定密码为 zabbix
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
//授予用户 zabbix 对"zabbix"数据库的所有权限
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
//设置全局系统变量的值为1,表示信任二进制日志中的函数创建者
MariaDB [(none)]> quit;
1.6导入zabbix数据库文件
点击查看代码
[root@node7 zabbix-4.0.30]# cd /data/zabbix-4.0.30/database/mysql
[root@node7 mysql]# ls
data.sql images.sql Makefile Makefile.am Makefile.in schema.sql
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql //-u用户 -p密码 数据库
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
//注意!必须最后导入 data.sql
1.7安装web apapche
点击查看代码
[root@node7 mysql]# yum install httpd -y
[root@node7 mysql]# systemctl start httpd
[root@node7 mysql]# systemctl status httpd
[root@node7 mysql]# cp -a /data/zabbix-4.0.30/frontends/php/ /var/www/html/zabbix/
//将前端页面拷贝过去
1.9升级php版本
如果在centos7上装zabbix 5.0版本 ,php版本要7.2以上
打开浏览器访问 192.168.100.11/zabbix
修改php软件的配置:
点击查看代码
[root@node7 mysql]# yum install php-gettext php-xml php-net-socket php-gd php-mysql -y
[root@node7 mysql]# vim /etc/php.ini
384 max_execution_time = 300
//定义了PHP脚本执行的最大时间(以秒为单位)。如果脚本在这个时间内没有执行完毕,就会被中断
394 max_input_time = 600
//定义了PHP脚本接受输入数据的最大时间(以秒为单位)。如果输入操作在这个时间内没有完成,就会被中断
672 post_max_size = 16M
//定义了HTTP POST数据的最大大小。它限制了通过POST方式发送到服务器的数据量,单位是字节(B)
878 date.timezone = Asia/Shanghai
//定义服务器使用的时区为 亚洲/上海
[root@node7 mysql]# systemctl restart httpd //重启服务
修改配置后刷新zabbix页面,皆显示ok
下载文件后,将其保存至指定路径
点击查看代码
[root@node7 data]# cp -a zabbix.conf.php /var/www/html/zabbix/conf/
复制号配置文件后,直接刷新页面
1.10准备service文件
点击查看代码
[root@node7 conf]# pkill zabbix_server //先停止 zabbix-server
[root@node7 conf]# vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
[root@node7 conf]# chown -R zabbix:zabbix /apps/zabbix_server/
[root@node7 conf]# systemctl daemon-reload
[root@node7 conf]# systemctl start zabbix-server.service
[root@node7 conf]# systemctl status zabbix-server.service
[root@node7 conf]# systemctl enable zabbix-server //开机自启
1.11修改中文
可以修改为中文界面
1.12修改字体 以及图表的中文乱码问题
去win主机的C盘C:\Windows\Fonts
点击查看代码
[root@node7 ~]# cd /var/www/html/zabbix/assets/fonts //上传楷体字体文件到该目录下
[root@node7 fonts]# ls
DejaVuSans.ttf SIMKAI.ttf
[root@node7 fonts]# vim /var/www/html/zabbix/include/defines.inc.php
72 define('ZBX_GRAPH_FONT_NAME', 'SIMKAI'); // font file name
113 define('ZBX_FONT_NAME', 'SIMKAI');
2.部署客户端zabbix-agent
2.1安装依赖环境
点击查看代码
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel libevent-devel java-1.8.0-openjdk-devel -y
2.2解压安装包 编译
点击查看代码
[root@node6 ~]# cd /opt
[root@node6 opt]# tar xf zabbix-4.0.30.tar.gz //解压
[root@node6 opt]# ls
rh zabbix-4.0.30 zabbix-4.0.30.tar.gz
[root@node6 opt]# cd zabbix-4.0.30/
[root@node6 zabbix-4.0.30]# ./configure --prefix=/apps/zabbix --enable-agent
[root@node6 zabbix-4.0.30]# make -j2 && make install
2.3准备service文件
点击查看代码
[root@node6 zabbix-4.0.30]# useradd zabbix -s /sbin/nologin
[root@node6 zabbix-4.0.30]# vim /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
[root@node6 zabbix-4.0.30]# systemctl daemon-reload
[root@node6 zabbix-4.0.30]# systemctl start zabbix-agent.service
[root@node6 zabbix-4.0.30]# systemctl status zabbix-agent.service
2.4修改配置文件
点击查看代码
[root@node6 zabbix-4.0.30]# cd /apps/zabbix/
[root@node6 zabbix]# tree
.
├── bin
│ ├── zabbix_get
│ └── zabbix_sender
├── etc
│ ├── zabbix_agentd.conf
│ └── zabbix_agentd.conf.d
├── lib
│ └── modules
├── sbin
│ └── zabbix_agentd
└── share
└── man
├── man1
│ ├── zabbix_get.1
│ └── zabbix_sender.1
└── man8
└── zabbix_agentd.8
10 directories, 7 files
[root@node6 zabbix]# cd etc/
[root@node6 etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@node6 etc]# cp -a zabbix_agentd.conf zabbix_agentd.conf.bak //备份
[root@node6 etc]# vim zabbix_agentd.conf
94 Server=192.168.204.70 //指向当前zabbix server
119 StartAgents=3 //启动3个进程收集数据
146 Hostname=192.168.204.60 //指定名称,一般使用IP地址,等会手动添加主机会用到
[root@node6 etc]# systemctl restart zabbix-agent.service
[root@node6 etc]# systemctl status zabbix-agent.service
3.将客户端加入服务端的监控主机中
3.1在zabbix web管理界面添加被监控主机
3.2添加模板,添加模板是不会监控的
3.3添加模板后过段时间ZBX就会被点亮变绿
3.4可以查看检测情况
3.5使用get命令获取数据
-
-s 指明主机
-
-p 指明端口
-
-k 指明监控项
点击查看代码
//在server服务端执行 get 命令
[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "agent.ping"
1
[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "agent.version"
4.0.30
[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "vm.memory.size"
8185933824
//如果能获得值,代表两者之间是通的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通