Zabbix是由Alexei Vladishev 开发的一种网络监视、管理系统,基于Server-Client架构。可用于监视各种网络服务、服务器和网络机器等状态。
使用各种Database-end 如 MySQL,PostgreSQL,SQlite,Oracle 或IBMDB2储存资料。Server端基于C语言、Web管理端frontend则是基于PHP所制作的。
Zabbix可以使用多种方式监视。可以只使用Simple Check不需要安装
Client端,亦可基于SMTP或HTTP… 各种协议定制监视。
在客户端如UNIX,Windows 中安装Zabbix Agent之后,可监视CPULoad、网络使用状况、硬盘容量等各种状态。而就算没有安装Agent 在监视对象中,Zabbix 也可以经由SNMP、TCP、ICMP、利用IPMI、SSH、telnet 对目标进行监视。
Zabbbix自带的Item足够满足普通小公司的监控需求,对于大公司也可以设定自定义的Item,自动生成报表,也有API可以和其他系统集成。
Zabbix就是可以满足理想化的监控系统需求
- 支持自定义监控脚本,提供需要输出的值即可
- Zabbix存储的数据库表结构稍有复杂但是逻辑清晰
- Zabbix存在模板的概念,可以方便的将一组监控项进行部署
- Zabbix每一个item也就是监控项,都可以看到历史记录,且web界面友好
- Zabbix有强大的Trigger(触发器)定义规则,可以定义复杂的报警逻辑
- Zabbix提供了ack报警确认机制
- Zabbix支持邮件,短信,微信等告警
- Zabbix在触发告警后,可以远程执行系统命令
- Zabbix有原生的PHP绘图模块
对于英文的掌握,是IT人员必须学习的技能,以下是使用zabbix必须掌握的一些关键词
- zabbix server,服务端,收集数据,写入数据
- zabbix agent,部署在被监控的机器上,是一个进程和zabbix server进行交互,以及负责执行命令
- Host,服务器的概念,指zabbix监控的实体,服务器,交换机等
- Hosts,主机组
- Applications,应用
- Events,事件
- Media,发送通知的通道
- Remote command,远程命令
- Template,模板
- Item,对于某一个指标的监控,称之为Items,如某台服务器的内存使用状况,就是一个item监控项
- Trigger, 触发器,定义报警的逻辑,有正常,异常,未知三个状态
- Action, 当Trigger符合设定值后,zabbix指定的动作, 如发个邮件给运维,说服务器有问题了。
- zabbix_server,服务端守护进程
- zabbix_agentd,agent守护进程
- zabbix_proxy,代理服务器
- zabbix_database,存储系统,mysql,pgsql
- zabbix_web,web GUI图形化界面
- zabbix_ get,命令行工具,测试向agent发起数据采集请求
- zabbix_sender,命令行工具,测试向server发送数据
- zabbix_ java_ gateway,java网关
官网文档介绍了所需环境
https://www.zabbix.com/documentation/current/manual/installation/requirements
# 环境准备
# 关闭防火墙
[root@Zabbix ~]# systemctl disable --now firewalld
# 关闭selinux
[root@Zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 1.获取zabbix官方源
[root@Zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
package zabbix-release-6.2-1.el8.noarch is already installed
[root@Zabbix ~]# yum clean all
# 2.安装php7.4,6.2版本需要php7.4
[root@Zabbix ~]# yum module switch-to php:7.4
# 3.安装zabbix server web前端和agent
[root@Zabbix ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent -y
# 4.安装zabbix所需的数据库,zabbix6.2所需mariadb版本至少为10.5,系统自带10.3版本,需要先卸载旧版本再安装新版本
# 备份数据库
[root@Zabbix ~]# mysqldump -u root -p --all-databases > /home/alldb.sql
Enter password:
# 备份配置
[root@Zabbix ~]# mv /etc/my.cnf /etc/my.cnf.bak
# 停止并卸载旧版本数据库
[root@Zabbix ~]# systemctl stop mariadb
[root@Zabbix ~]# yum remove mariadb mariadb-server
# 添加yum源,这里作者添加的是10.5版本
[root@Zabbix ~]# cat /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.5 CentOS repository list - created 2021-06-23 09:53 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# 清除yum源缓存并建立数据源
[root@Zabbix ~]# yum clean all && yum makecache
# 安装新版本mariadb并设置开机自启
[root@Zabbix ~]# yum install mariadb mariadb-server -y
[root@Zabbix ~]# systemctl start mariadb
[root@Zabbix ~]# systemctl enable mariadb
# 查看版本是否正确
[root@Zabbix ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.16-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
# 检查并更新数据库表
[root@Zabbix ~]# mysql_upgrade -uroot -p --force
Enter password:
Phase 1/7: Checking and upgrading mysql database
Processing databases
# 数据恢复
[root@Zabbix ~]# mysql -u root -p
# 5.配置数据库
# 建立zabbix数据库,注意编码,在数据库执行
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; # 创建zabbix数据库
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix'; # 创建zabbix用户和密码
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost; # 赋予zabbix用户可以使用zabbix数据库的权限
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit
Bye
# 6.导入zabbix数据,系统将提示您输入新创建的密码(这里的密码是zabbix用户的密码,上面设置的)
[root@Zabbix ~]# zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
Enter password:
# 7.为Zabbix server配置数据库
[root@Zabbix ~]# vim /etc/zabbix/zabbix_server.conf
# 将第129行(vim查看行数命令:set nu)改为
DBPassword=zabbix #我的账号密码都是zabbix
# 8.启动Zabbix server和agent进程,设置开机自启
[root@Zabbix ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
[root@Zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
# 9.查看前端
http://ip/zabbix
1.选择语言,只有两项,后续可以自己安装需要的语言
2.检查requisites,确保全OK再进行下一步
3.配置数据库连接,输入密码即可
4.填写Zabbix server name,也可以不填,填了之后可以显示在菜单栏和页面标题中
5.登录,默认账号Admin,密码zabbix
为了在Zabbix界面使用其他语言,需要进行扩展。
# 1.展示已安装语言
[root@Zabbix ~]# locale -a
C
C.utf8
en_AG
en_AU
......
en_ZM
en_ZW
en_ZW.utf8
POSIX
# 2.安装中文
[root@Zabbix ~]# yum install glibc-langpack-zh.x86_64 -y
[root@Zabbix ~]# echo LANG=zh_CN.UTF-8 > /etc/locale.conf
[root@Zabbix ~]# source /etc/locale.conf
准备一台新的机器,部署Zabbix客户端。
# 关闭防火墙
[root@Zabbix-agent ~]# systemctl disable --now firewalld
# 配置时区
[root@Zabbix-agent ~]# mv /etc/localtime{,.bak}
[root@Zabbix-agent ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 配置源文件
[root@Zabbix-agent ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
warning: /var/tmp/rpm-tmp.EW7vEG: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-6.2-1.el8 ################################# [100%]
[root@Zabbix-agent ~]# yum clean all && yum makecache
# 安装客户端
[root@Zabbix-agent ~]# yum install zabbix-agent2 -y
默认配置文件为 /etc/zabbix/zabbix_agent2.conf
默认二进制文件为 /usr/sbin/zabbix_agent2
# 启动设置开机自启
[root@Zabbix-agent ~]# systemctl enable --now zabbix-agent2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
# 检查端口
[root@Zabbix-agent ~]# netstat -tunlp|grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 58168/zabbix_agent2
# 查看systemctl管理的单元文件,修改填写服务端ip和主机名
[root@Zabbix-agent ~]# vi /lib/systemd/system/zabbix-agent2.service
[root@Zabbix-agent ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=******* #填写服务端IP(作者用的是云服务器,不方便写在这)
ServerActive=******* #填写服务端IP
Hostname=Zabbix-agent #填写主机名
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
# 重启agent2
[root@Zabbix-agent ~]# systemctl restart zabbix-agent2
在服务端操作
[root@Zabbix ~]# yum install zabbix-get -y
[root@Zabbix ~]# zabbix_get -s '客户端IP' -p 10050 -k "system.hostname"
Zabbix-agent
上图括号里是乱码,因为语言为中文,没有安装字体(这里很尴尬,作者这里发现zabbix没有数据,一番查找发现是conf文件里忘记写DBpassword了!!!)
[root@Zabbix zabbix]# yum -y install wqy-microhei-fonts
[root@Zabbix zabbix]# \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
----根据于超老师视频讲解进行笔记,做了相对更改,如有侵权请联系作者删除。