一、Zabbix简介
zabbix是一个基于WEB界面的、可以提供分布式监控以及网络监视功能的企业级的开源监控工具,具有非常强大数据收集、数据存储、绘图可视化的功能,在Linux常用的系统监控中具有非常大的优势和地位。zabbix能监视各种网络参数、保证服务器系统的安全运营;并提供灵活的通知机制或远程命令让管理员能快速定位,解决系统当前存在的各类问题
zabbix的主要特点:
安装与配置简单,学习成本低
支持多语言(包括中文)
免费开源
自动发现服务器与网络设备
分布式监视以及WEB集中管理功能
可以无agent监视
用户安全认证和柔软的授权方式
通过WEB界面设置或查看监视结果
email等通知功能
zabbix监控的主要功能:
CPU负荷
内存使用
磁盘使用
网络状况
端口监视
日志监视
二、Zabbix的监控流程与常用术语
监控常用组件与每个组件的作用:
Zabbix Server:负责接收agent端发送的报告信息数据的核心组件,所有的配置,统计数据及操作数据都由该组件进行;
Zabbix Agent:部署于被监控主机上,负责收集本地主机的数据信息发送到server端或proxy端;
Database Stroage:主要负责存储由agent端发送到本机的信息数据;
Web Interface:提供一个可视化的web接口,可以非常清晰的看到每个数据指标的信息变化,与server运行在同一台主机上;
Zabbix Proxy:常用于分布式监控环境中,代理server去收集被监控主机的数据,并定时发送数据到server端;
Zabbix常用术语:
主机(host):需要监控的设备,可以是IP或DNS名称指定;
主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不
不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控对象;item是zabbix
进行数据收集的核心,没有item,将没有数据;相对于某监控对象来说,每
个item都由"key"进行标识;
触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合
理范围内,即为阈值;接收到的数据量大于或者超出所设定的阈值时,触
发器的状态将从"OK"转变为"Problem",当数据量再次回归到所设定的合理
范围内时,其状态又将从"Problem"状态变回为"Ok";
事件(event):即发生的一个值得关注的事情,例如触发器的状态的转变,新的agent或上线
的agent的自动注册等;
动作(action):指对于特定的事件事先定义的处理方法,通过包含操作(如发送通知)和条件
(何时执行操作);
报警升级(escalation):发送报警或执行远程命令的自定义方案,如每隔5分钟发送一次报警
共发送5次;
媒介(media):发送的通知的手段或通道,如Email、Jabber或SMS等;
通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command):预定义的命令,可以在被监控主机处于某触发条件下自动执
行的命令;
模板(template):用于快速定位被监控主机的预设条目集合,通常包含了item、trigger、gra
ap、screen、application以及low-level discovery rule;模板可以直接链接至
某单个主机;
应用(application):一组item的集合;
web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
前端(frontend):zabbix的web接口;
zabbix逻辑架构图
三、zabbix的配置文件
服务器端配置文件(/etc/zabbix/zabbix_server.conf)
客户端配置文件(/etc/zabbix/zabbix_agentd.conf)
zabbix代理配置文件(/etc/zabbix/zabbix_proxy.conf)
服务器端配置文件zabbix_server.conf常用的配置参数:
参数 | 作用 |
Logfile | 设置服务器端日志文件的存放路径 |
ListenIP | 设置服务器端监听IP |
ListenPort | 设置服务器端监听的端口号 |
PidFile | 设置服务器端进程号文件存放路径 |
DBHost | 指定zabbix的数据库服务器IP |
DBName | 指定zabbix使用数据库库名 |
DBUser | 指定zabbix数据库登录用户名 |
DBPassword | 指定zabbix登录数据库密码 |
DBPort | 指定zabbix数据库端口号 |
User | 指定zabbix以什么用户的身份运行 |
AlertScriptsPath | 设置告警脚本存放路径 |
ExternalScripts | 外部脚本存放路径 |
客户端配置文件zabbix_agent.conf常用配置参数:
参数 | 作用 |
Server | 指定zabbix服务器的IP或域名 |
ServerActive | 指定zabbix服务器的IP或域名 |
Hostname | 指定本机的主机名,此项必须与web界面配置项一致 |
UnsafeUserParameters | 是否启用自定义监控项,可选值{1 |
UserParameter | 指定自定义监控脚本参数 |
LogFile | 设置客户端日志文件存放路径 |
环境配置
角色 | IP地址 |
服务端 | 192.168.43.128(安装lamp架构) |
yum源 | wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
zzbbix源 | rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm |
客户端 | 192.168.43.129 |
yum源 | wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo |
zabbix源 | rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm |
服务端配置,提前安装lamp架构
[root@server yum.repos.d]# ss -tnl | egrep '80|3306|9000'
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 :::80 :::*
测试php是否,是否安装成功。
配置zabbixyum源
[root@agent yum.repos.d]# ls
CentOS-Base.repo zabbix.repo
[root@agent yum.repos.d]# cat zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.2/rhel/6/$basearch/
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://repo.zabbix.com/zabbix/4.2/rhel/6/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-deprecated]
name=Zabbix Official Repository deprecated - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.2/rhel/6/$basearch/deprecated
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
创建zabbix数据库和授权zabbix用户
[root@server ~]# mysql -uroot -predhat
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| mysql |
| performance_schema |
| user |
| wpd |
+--------------------+
6 rows in set (0.00 sec)
MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to 'zabuser'@'%' identified by 'zabpass';
Query OK, 0 rows affected (0.09 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| mysql |
| performance_schema |
| user |
| wpd |
| zabbix |
+--------------------+
7 rows in set (0.00 sec)
MariaDB [(none)]> exit
Bye
安装服务端所需组件
[root@server ~]# yum install zabbix-server zabbix-server-mysql zabbix-get zabbix-sender zabbix-web zabbix-web-mysql -y
[root@server zabbix]# cd /usr/share/doc/zabbix-
zabbix-agent-4.2.6/ zabbix-proxy-pgsql-4.2.7/ zabbix-sender-4.2.6/
zabbix-proxy-mysql-4.2.7/ zabbix-release-4.2/ zabbix-server-mysql-4.2.7/
[root@server zabbix]# cd /usr/share/doc/zabbix-server-mysql-4.2.7/
[root@server zabbix-server-mysql-4.2.7]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@server zabbix-server-mysql-4.2.7]# gunzip create.sql.gz
[root@server zabbix-server-mysql-4.2.7]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@server zabbix-server-mysql-4.2.7]# mysql zabbix < create.sql
[root@server zabbix-server-mysql-4.2.7]# cd /etc/zabbix
[root@server zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[root@server zabbix]# vim zabbix_server.conf
DBHost=192.168.43.131 //连接所需数据库地址
DBName=zabbix //连接的数据库名称
DBUser=zabuser //通过这个用户进行连接
DBPassword=zabpasswd //所需要验证的密码
DBSocket=/var/lib/mysql/mysql.sock //数据库的库文件套接字
DBPort=3306 //数据库连接端口号
[root@server zabbix]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10051 :::*
[root@server zabbix]#
进入zabbix安装界面
配置agent端
[root@agent zabbix]# yum install zabbix-agent zabbix-sender -y
[root@agent zabbix]# ls
zabbix_agentd.back zabbix_agentd.conf zabbix_agentd.d
[root@agent zabbix]# vim zabbix_agentd.conf
Server=192.168.43.131 //表示zabbix服务端
ServerActive=192.168.43.131 //表示向服务端发送数据。
Hostname=agent //表示本主机的主机名,必须唯一
[root@agent zabbix]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::10050 :::*
LISTEN 0 128 *:10050 *:*
如何监控请看下述
监控一台主机的具体步骤:创建主机群组---->创建主机----->创建应用application----->创建一个监控项item----->创建触发器trriger--------触发之后的动作action
2,定义主机组名称
3,创建一个被监控的主机
4,定义主机名称
5,定义一个application
6,创建一个item监控项
7,定义一个监控项
8,创建一个触发器,用对比item的合理值。
9,定义一个触发器,与收集key的值进行对比
10,创建一个图形来形象的展示所取key值的变化
11,可以看出来数据有着明显的变化
12,关闭HTTPD服务,数据有这明显的变化,trriger从OK------->FROBLEM(发生问题)
[root@centos6 ~]# service httpd stop
Stopping httpd: [ OK ]
[root@centos6 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
12,当发生server采集到的数据(或key值)不在trrger定义的合理范围之内,就发生一个event事件,这样我们就可以定义媒介发送消息了,在这里我就不定义请看下部。