一、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_数据


三、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是否,是否安装成功。

运维监控硬件指标 运维监控工具 zabbix_mysql_02


配置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安装界面

运维监控硬件指标 运维监控工具 zabbix_mysql_03


运维监控硬件指标 运维监控工具 zabbix_数据库_04


运维监控硬件指标 运维监控工具 zabbix_mysql_05


运维监控硬件指标 运维监控工具 zabbix_mysql_06


运维监控硬件指标 运维监控工具 zabbix_运维监控硬件指标_07


运维监控硬件指标 运维监控工具 zabbix_数据_08


运维监控硬件指标 运维监控工具 zabbix_mysql_09


运维监控硬件指标 运维监控工具 zabbix_数据_10


配置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

运维监控硬件指标 运维监控工具 zabbix_数据库_11


2,定义主机组名称

运维监控硬件指标 运维监控工具 zabbix_mysql_12


3,创建一个被监控的主机

运维监控硬件指标 运维监控工具 zabbix_mysql_13


4,定义主机名称

运维监控硬件指标 运维监控工具 zabbix_数据_14

运维监控硬件指标 运维监控工具 zabbix_mysql_15


5,定义一个application

运维监控硬件指标 运维监控工具 zabbix_数据_16

运维监控硬件指标 运维监控工具 zabbix_运维监控硬件指标_17


运维监控硬件指标 运维监控工具 zabbix_mysql_18


6,创建一个item监控项

运维监控硬件指标 运维监控工具 zabbix_mysql_19


7,定义一个监控项

运维监控硬件指标 运维监控工具 zabbix_数据库_20


8,创建一个触发器,用对比item的合理值。

运维监控硬件指标 运维监控工具 zabbix_数据库_21


9,定义一个触发器,与收集key的值进行对比

运维监控硬件指标 运维监控工具 zabbix_数据_22


10,创建一个图形来形象的展示所取key值的变化

运维监控硬件指标 运维监控工具 zabbix_数据_23


11,可以看出来数据有着明显的变化

运维监控硬件指标 运维监控工具 zabbix_mysql_24


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                                                       *:*

运维监控硬件指标 运维监控工具 zabbix_数据库_25


12,当发生server采集到的数据(或key值)不在trrger定义的合理范围之内,就发生一个event事件,这样我们就可以定义媒介发送消息了,在这里我就不定义请看下部。