基本介绍
Zabbix 是一个开源的企业级监控解决方案,用于监控 IT 基础设施,包括服务器、网络设备、应用程序和服务等。它提供了全面的监控功能、强大的图形化界面和灵活的报警系统,适合于大规模环境中的监控需求。
主要功能
网络监控:监控网络设备的性能,包括路由器、交换机、防火墙等,支持 SNMP 协议。
服务器监控:监控服务器的状态和性能,包括 CPU、内存、磁盘、网络等资源。
应用程序监控:支持对应用程序的状态和性能进行监控,包括 Web 应用、数据库等
报警和事件管理:支持多种通知方式,包括电子邮件、短信、脚本执行等。可以配置动作和自动化处理。
图形化展示:提供丰富的仪表板和图形化视图,方便用户查看监控数据和状态。
架构组件
Zabbix Server
- 核心组件:Zabbix Server 是系统的核心组件,负责数据收集、处理和存储。它管理所有的监控任务、触发器和报警。
Zabbix Agent
- 数据收集:Zabbix Agent 是安装在被监控主机上的代理,用于收集主机的性能和状态数据,并将数据发送到 Zabbix Server。
Zabbix Proxy
- 数据转发:Zabbix Proxy 用于在远程地点收集数据,并将数据转发到 Zabbix Server,适用于分布式监控场景。
Zabbix Frontend
- 用户界面:Zabbix Frontend 是基于 Web 的图形化用户界面,提供监控数据的可视化展示和管理功能。
优势
全面的监控功能:支持多种监控方式和数据源,适合复杂的监控需求。
强大的报警和事件管理:灵活的报警系统和自动化处理功能,适用于各种场景。
良好的图形化界面:直观的用户界面和丰富的可视化功能,帮助用户有效地管理和分析监控数据。
虚拟机方式部署
环境准备
卸载zabbix
rpm -qa | grep zabbix
yum remove zabbix-*
查看httpd状态,并启动
systemctl status httpd
关闭防火墙并设置开机不启动
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0
永久关闭selinux
vi /etc/selinux/config
SELINUX=disabled
部署zabbix-server
下载repo文件
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
修改yum源的地址为ailiyun
sed -i.bak ‘s#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#’ /etc/yum.repos.d/zabbix.repo
yum clean all
查看repo文件是否下载并下载zabbix
cd /etc/yum.repos.d
cat zabbix.repo
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
yum install zabbix-server-mysql zabbix-agent -y ( yum install epel-release -y)
安装前端
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache fast
yum -y install centos-release-scl
vim /etc/yum.repos.d/zabbix.repo
CentOS-SCLo-scl.repo:
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
CentOS-SCLo-scl-rh.repo:
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/x86_64/rh/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
安装前端环境
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
安装zabbix所需的数据库
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
yum install -y mysql-community-server
(若显示没有公钥导入:sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022)
配置数据库
启动mysql
systemctl start mysqld.service
获取MySQL临时用户名密码
grep ‘temporary password’ /var/log/mysqld.log
进入MySQL
mysql -u root -p
设置账号密码
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘密码’;
授权给其他的机器来连接
mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
刷新权限
mysql> FLUSH PRIVILEGES;
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by ‘Tgqs@123’;
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> exit;
设置mysql开机启动
systemctl enable mysqld
systemctl daemon-reload
设置MySQL的字符集为UTF-8,令其支持中文
vim /etc/my.cnf
[mysql]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-storage-engine=INNODB
character_set_server=utf8
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
重启一下MySQL,令配置生效
systemctl restart mysqld
systemctl enable mysqld
systemctl daemon-reload
zabbix导入数据库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix;
输入密码:
修改时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm这里如果是自己下载php73等其他版本,可能网页端会起不来
zabbix前端已经安装完成!超级用户名是Admin,密码是zabbix
agent客户端部署
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i ‘s#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#’ /etc/yum.repos.d/zabbix.repo
yum install zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -tunlp | grep zabbix
vim /etc/zabbix/zabbix_agentd.conf
LogFileSize=0
Server=172.16.208.12 #修改为server端主机IP
ServerActive=172.16.208.12 #修改为server端主机IP
Hostname=172.16.208.13 ##修改为本机agent主机名
测试联通性
yum install zabbix-get -y
#-s参数后面跟的时客户端的地址
zabbix_get -s ‘172.16.208.13’ -p 10050 -k “agent.ping”
zabbix_get -s ‘172.16.208.13’ -p 10050 -k “system.hostname”
cat /var/log/zabbix/zabbix_agentd.log
遇到问题:
1. zabbix web图形下面的字体不显示或乱码问题
yum install wqy-microhei-fonts wqy-zenhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/
zabbix/assets/fonts/graphfont.ttf
2. zabbix-server起不来的问题selinux是否打开
[root@ncayu101 data]# getenforce
Enforcing
1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
docker部署
针对zabbix监控部署,个人建议使用容器化部署,直接拉去镜像,因为通过前面的介绍已经发现,zabbix按照需要很多依赖项,前端,后端各种需要安装的依赖,如果版本选择的不对,很可能前功尽弃,非常的繁杂。
部署zabbix-server
docker pull zabbix/zabbix-web-nginx-mysql:5.0-centos-latest
docker pull zabbix/zabbix-server-mysql:5.0-centos-latest
docker pull zabbix/zabbix-agent:5.0-centos-latest
docker pull mysql:5.7
运行本地数据库
docker run --name zabbix-mysql -d \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="Tgqs@123" \
-p 3106:3306 \
--restart unless-stopped mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
启动 server 后端
docker run --name zabbix-server-mysql -d \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="Tgqs@123" \
--network=host \
--restart unless-stopped \
zabbix/zabbix-server-mysql:5.0-centos-latest
启动前端页面,默认端口是 8080
docker run --name zbbix-web-nginx-mysql -d \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="Tgqs@123" \
--network=host \
--restart unless-stopped \
zabbix/zabbix-web-nginx-mysql:5.0-centos-latest
启动 Agent
docker run --name zabbix-agent -d \
-e ZBX_HOSTNAME="local-agent" \
-e ZBX_SERVER_HOST="127.0.0.1" \
--network=host \
--restart unless-stopped \
zabbix/zabbix-agent:5.0-centos-latest
部署zabbix-agent
在需要被监控的主机上部署
docker pull zabbix/zabbix-agent:5.0-centos-latest
docker images
docker run --name zbx5-agent -d \
-e ZBX_HOSTNAME="172.16.208.13" \
-e ZBX_SERVER_HOST="172.16.208.12" \
--network=host \
--restart unless-stopped \
zabbix/zabbix-agent:5.0-centos-latest
注意事项
- docker部署的时候可以指定数据库,如果本地有mysql数据库,想使用不同版本,需要指定端口
启动完成后,通过 docker ps
查看所有容器已经正在运行,之后通过访问 http://ip:8080
即可访问!
默认用户名/密码是:Admin/zabbix
总结
Zabbix 是一个开源的企业级监控工具,以全面的监控能力、灵活的配置选项和强大的报警机制著称,适用于网络设备、服务器、应用程序等广泛的 IT 资源。它的主要优点在于其全面性和灵活性,能够为不同类型的企业提供定制化的监控解决方案,并且拥有活跃的开源社区支持,降低了使用成本。然而,Zabbix 的不足之处也较为明显。首先,部署和配置的复杂性较高,尤其是在大型环境中,需要投入大量时间进行初始设置和优化。其次,Zabbix 的用户界面相对传统且不够直观,尤其是在与现代监控工具如 Grafana 相比时,图表和仪表板的美观度和交互性上有所欠缺。此外,在处理海量数据和大规模分布式系统时,Zabbix 的性能可能需要进一步调优,这对经验不足的团队来说可能是一个挑战。总的来说,Zabbix 适合那些需要深入定制化监控的企业,但对于希望快速上手且注重用户体验的团队。
grafana安装
Grafana 是一个开源的多平台数据可视化工具,主要用于监控和分析应用程序和基础设施的性能数据。Grafana 能够从多种数据源(如 Prometheus、InfluxDB、MySQL、Elasticsearch 等)提取数据,并将其可视化为图表、仪表板和警报。它广泛应用于 DevOps、监控和数据分析领域,帮助团队和组织更好地理解和管理其系统性能和健康状况。当然,zabbix集成自己的图表可视化工具,但显示的美观性拓展性没有grafana好。
下载安装
wget https://dl.grafana.com/oss/release/grafana-8.0.3-1.x86_64.rpm
yum install grafana-8.0.3-1.x86_64.rpm
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server
默认账号/密码 admin/admin
浏览器输入http://172.16.208.12:3000
zabbix在低版本的grafana中需要下载插件
选择模板
https://grafana.com/dashboards
修改grafana背景的方法
安装插件
grafana-cli plugins install yesoreyeram-boomtheme-panel
重启grafana服务
systemctl restart grafana-server
https://github.com/themepark-dev/theme.park/tree/master/css/base/grafana 下载 grafana-base.css
https://github.com/themepark-dev/theme.park/blob/master/css/defaults/transparent.css 下载transparent.css
将下载的文件存放在/usr/share/grafana/public/css
修改grafana-base.css
vim /usr/share/grafana/public/css/grafana-base.css
在最开头添加:
@import url(“http://176.16.208.12:3000/public/css/transparent.css”);
并注释掉之前的import
获取主题
https://github.com/themepark-dev/theme.park/tree/master/css/theme-options 选择主题css文件下载
上传到/usr/share/grafana/public/css/目录,重启服务
如果还不行就将要添加的css文件也修改一下
编辑文件修改url指向本地
vim /usr/share/grafana/public/css/space.css
同样添加:
@import url(http://172.16.208.12:3000/public/css/grafana-base.css);
重启服务
systemctl restart grafana-server.service
在grafana网页端*
在External CSS URL下面
http://172.16.208.12:3000/public/css/space.css
效果展示:
常见的监控项
一、CPU
Context switches per second 每秒上下文切换
CPU usage
CPU guest nice time
CPU guest time
CPU softirq time 系统在处理软中断时候所花费的CPU时间
CPU interrupt time CPU中断时间
CPU steal time CPU被强制等待另外虚拟的CPU处理完毕花费的时间
CPU iowait time CPU花费在等待I/O操作上的时间
CPU nice time 系统花费在调整进程优先级上的时间
CPU user time CPU在用户态执行进程的时间
CPU system time CPU在内核运行的时间
CPU idle time CPU空闲时间
Interrupts per second 每秒中断
Processor load (1 min average per core) 处理器负载(每个核心平均1分钟)
Processor load (5 min average per core) 处理器负载(每个核心平均5分钟)
Processor load (15 min average per core) 处理器负载(每个核心平均15分钟)
二、文件系统
Free disk space on / /可用磁盘空间
Free disk space on / (percentage) /可用磁盘空间/(百分比)
Free disk space on /boot /boot上的可用磁盘空间
Free disk space on /boot (percentage) /boot上的可用磁盘空间(百分比)
Free inodes on / (percentage) /上的剩余inode(百分比)
Free inodes on /boot (percentage) /boot上的剩余inode(百分比)
Total disk space on / /上的总磁盘空间
Total disk space on /boot /boot上的总磁盘空间
Used disk space on / /使用的磁盘空间
Used disk space on /boot / boot上使用的磁盘空间
三、主机
Host boot time 主机启动时间
Host local time 主机本地时间
System information 系统信息
System uptime 系统正常运行时间
四、网络
Incoming network traffic on ens32 ens32的传入网络流量
Outgoing network traffic on ens32 ens32的传出网络流量
Interface eth0: Bits received
Interface eth0: Bits sent
Interface eth0: Outbound packets with errors
Interface eth0: Inbound packets with errors
Interface eth0: Outbound packets discarded
Interface eth0: Inbound packets discarded
五、内存
Available memory 可用内存
Free swap space 剩余swap空间
Free swap space in % 剩余swap空间百分比
Total memory 总内存
Total swap space 总swap空间
Number of processes 进程数
Number of running processes 正在运行的进程数
六、安全
Checksum of /etc/passwd / etc / passwd的校验和
Number of logged in users 登录用户数