Zibbix分布式系统监控——理论+实验超详细!!!

拟墨画扇 提交于 2021-01-23 10:56:12

一、zabbix简介

1.什么是zibbix?

zabbix又称分布式系统箭筒,是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

2.zibbix的作用

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

3.zibbix的组成

zabbix由2部分构成,zabbix server与可选组件zabbix agent。

4.zibbix的应用场景

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

5.zibbix的特点

  • 安装与配置简单,学习成本低
  • 支持多语言(包括中文)
  • 免费开源
  • 自动发现服务器与网络设备
  • 分布式监视以及WEB集中管理功能
  • 可以无agent监视
  • 用户安全认证和柔软的授权方式
  • 通过WEB界面设置或查看监视结果
  • email等通知功能
  • 加粗样式等等

6.zabbix主要功能

  • CPU负荷
  • 内存使用
  • 磁盘使用
  • 网络状况
  • 端口监视
  • 日志监视

7.zabbix重要组件

1.zabbix server

  • 负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行

2.database storage
专用于存储所有配置信息,以及由zabbix收集的数据

3.web interface

  • zabbix的GUI接口

4.proxy

  • 可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力

5.agent

  • 部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端

8.监控系统运行流程

  • agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端
  • zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图

这里agentd收集数据分为主动和被动两种模式

  • 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
  • 被动:server向agent请求获取监控项的数据,agent返回数据

二、部署zabbix监控

2.1 环境

zabbix-server:192.168.1.10  #监控端
zabbix-client:192.168.1.11    #被监控端
2台服务器先关闭防火墙、核心防护
[root@zabbix-server ~]# systemctl stop firewalld
[root@zabbix-server ~]# setenforce 0

2.2 监控端配置

2.2.1 部署LAMP架构

先确定能否上网

[root@zabbix-client ~]# ping www.baidu.com

在这里插入图片描述
安装repo镜像包

[root@zabbix-server yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@zabbix-server yum.repos.d]# yum clean all
[root@zabbix-server yum.repos.d]# yum makecache 

在yum目录下,加入repo镜像包
在这里插入图片描述
安装依赖包

[root@zabbix-server ~]# yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash

修改apache和php的配置文件

[root@zabbix-server ~]# vi /etc/httpd/conf/httpd.conf
95  ServerName www.example.com:80        #  开启域名,域名可更改或不更改
164  DirectoryIndex index.php index.html  #  添加 index.php 
[root@zabbix-server ~]# vi /etc/php.ini 
878  date.timezone = PRC     
[root@zabbix-server ~]# systemctl start httpd
[root@zabbix-server ~]# systemctl start mariadb

[root@zabbix-server ~]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      75551/httpd    

[root@zabbix-server ~]# netstat -anpt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     76482/mysqld   

初始化数据库

[root@zabbix-server ~]# mysql_secure_installation

Enter current password for root (enter for none):  #让你输入root的当前密码(为none输入) 直接回车就行了

Set root password? [Y/n] y
New password:                      # 设置密码为:123456(自己设)
Re-enter new password:             # 123456
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y     # 移除匿名账号
 ... Success!

Disallow root login remotely? [Y/n] n    # 不允许 root 账号远程登录
 ... skipping.

Remove test database and access to it? [Y/n] y     # 移除 test 数据库,空数据库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y       # 重置权限列表
 ... Success!

测试是否可以登录数据库

[root@zabbix-server ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 23
Server version: 5.5.68-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)]> exit
Bye

测试php网页是否开启

[root@zabbix-server ~]# vi /var/www/html/index.php
<?php
phpinfo();
?>

物理机测试php网页
在这里插入图片描述
创建数据库监控信息表并授权

[root@zabbix-server ~]# mysql -uroot -p123456

# 数据库监控信息的表叫 zabbix ,字符集为 utf8 , 每一个字符区分大小写
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)


MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

验证php与mysql的联动性(测试zabbix用户是否能够登陆数据库)

[root@zabbix-server ~]# vi /var/www/html/index.php 
<?php
$link=mysql_connect('192.168.1.10','zabbix','admin123');
if($link) echo "<h1>Sueecee!!!</h1>";
else echo "Fail!!!";
mysql_close();
?>

在这里插入图片描述

2.2.2 部署zabbix服务器

添加zabbix源

  • 阿里源——系统源
[root@zabbix-server ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[Ali]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  • 阿里源——zabbix源
[root@zabbix-server ~]# vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
enabled=1
gpgcheck=0

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/
enabled=1
gpgcheck=0

建立缓存

[root@zabbix-server ~]# yum makecache

安装 zabbix 依赖包

[root@zabbix-server ~]# yum install -y php-mbstring php-bcmath

下载zabbix源,安装zabbix服务端软件

[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

安装zabbix server(服务),Web前端,agent(监控),nogpgcheck(密钥)

[root@zabbix-server ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent --nogpgcheck                                                               

导入 zabbix 监控数据库

[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.27/create.sql.gz | mysql -uzabbix -padmin123 zabbix  

修改 zabbix 配置文件

[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf
DBPassword=admin123               # 124
[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf 
php_value date.timezone Asia/Shanghai           # 20
[root@zabbix-server ~]# vi /usr/share/zabbix/include/defines.inc.php 
:%s /graphfont/kaiti/g       #直接输入,替换成楷体

在这里插入图片描述
从微软系统C:\Windows\Fonts下复制相应的字体文件到 /usr/share/zabbix/assets/fonts
在这里插入图片描述
因为上面定义的字体就是楷体,小写的,所以在目录中注意字体名称要对应配置文件改为kaiti.ttf,且注意大小写
在这里插入图片描述



[root@zabbix-server ~]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix-server fonts]# ll
总用量 11512
lrwxrwxrwx 1 root root       33 118 11:22 graphfont.ttf -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 11787328 118 12:11 kaiti.ttf
[root@zabbix-server fonts]# mv SIMKAI.TTF kaiti.ttf      #修改名字
[root@zabbix-server fonts]# ll

开启zabbix服务及监听端口

[root@zabbix-server ~]# systemctl start zabbix-server.service 
[root@zabbix-server ~]# systemctl enable zabbix-server.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@zabbix-server ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      25598/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      25598/zabbix_server 

重启apache服务

[root@zabbix-server ~]# systemctl restart httpd

访问zabbix安装及登录
登录
http://192.168.1.10/zabbix/setup.php
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入数据库查看监控账户








[root@zabbix-server ~]# mysql -uroot -p123456  进入数据库

MariaDB [(none)]> show databases;   查看所有库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| zabbix             |
+--------------------+
4 rows in set (0.01 sec)

MariaDB [(none)]> use zabbix;   进入zabbix表

MariaDB [zabbix]> select * from users;   #查看users表可以看到只有2个用户
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name   | surname       | passwd                           | url | autologin | autologout | lang  | refresh | type | theme   | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
|      1 | Admin | Zabbix | Administrator | 5fce1b3e34b520afeffb37ce08c7cd66 |     |         1 | 0          | en_GB | 30s     |    3 | default |              0 |            |             0 |            50 |
|      2 | guest |        |               | d41d8cd98f00b204e9800998ecf8427e |     |         0 | 15m        | en_GB | 30s     |    1 | default |              0 |            |             0 |            50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)

在这里插入图片描述
登录成功!
在这里插入图片描述

2.3 被监控端配置

配置yum源

[root@zabbix-client ~]# vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1
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/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

安装zabbix软件

[root@zabbix-client ~]# yum -y install zabbix-agent --nogpgcheck

修改zabbix-agent客户端配置

[root@zabbix-client ~]# vi /etc/zabbix/zabbix_agentd.conf
98  Server=192.168.1.10                   #服务端 ip
139  ServerActive=192.168.1.10            #服务端 ip
123  StartAgents=3                      #开启被动模式
150  Hostname=client1                   #客户端在服务端的名字

开启客户端zabbix-agent服务

[root@zabbix-client ~]# systemctl start zabbix-agent
[root@zabbix-client ~]# systemctl enable zabbix-agent
[root@zabbix-client ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      35590/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      35590/zabbix_agentd 

在服务器上修改代理文件、并开启服务

[root@zabbix-server ~]# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.10                    # 98
ServerActive=192.168.1.10               # 139
Hostname=server                      # 150

开启服务

[root@zabbix-server ~]# systemctl start zabbix-agent
[root@zabbix-server ~]# systemctl enable zabbix-agent

[root@zabbix-server ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      91639/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      25598/zabbix_server 
tcp6       0      0 :::10050                :::*                    LISTEN      91639/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      25598/zabbix_server 

将服务端监控页面换成中文
在这里插入图片描述
修改完后刷新页面
在这里插入图片描述
在这里插入图片描述



2.4 服务端创建被监控主机

开始在服务器zabbix界面创建监控的客户端
创建第一个
在这里插入图片描述
在这里插入图片描述
创建第二个
在这里插入图片描述
创建的被监控主机
在这里插入图片描述






2.5 创建监控主机的内容

第一台模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二台模板
同第一台模板操作相同
添加完后
在这里插入图片描述








2.6 邮箱报警

在服务器上配置

[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# vi /etc/mail.rc     # 配置最后面添加 
set from=2537784661@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=2537784661@qq.com
set smtp-auth-password=xcgegyujqyxgecia        # QQ 邮箱授权码
set smtp-auth=login

编写发邮件脚本

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/  # 必须在此目录下创建脚本
[root@zabbix-server alertscripts]# vi mailx.sh
#!/bin/bash
#send mail
message=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${message}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

tr:删除,字符转换
\r\n:换行
2>&1:混合输出

[root@zabbix-server alertscripts]# touch /tmp/mailx.log
[root@zabbix-server alertscripts]# cd

授权

[root@zabbix-server ~]# chown -R zabbix.zabbix /tmp/mailx.log   #设置日志文件属主属组
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh  #授权脚本
[root@zabbix-server ~]# chown -R zabbix.zabbix /usr/lib/zabbix/   #设置脚本属主属组

脚本测试

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# ./mailx.sh 2537784661@qq.com "server mail" "success"
# server mail 为 主题、success 为内容

在这里插入图片描述

2.7 网页报警设置

创建报警类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用户添加报警媒介
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述






2.8 创建动作触发报警

创建动作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建设置操作
在这里插入图片描述
在这里插入图片描述





2.9 恢复操作

在这里插入图片描述
在这里插入图片描述
最后在动作页面点击添加完成操作设置
在这里插入图片描述


2.10 监控邮箱设置测试

1.问题
客户机网卡故障

2.测试
客户端的网卡故障停止服务
先查看Admin用户的报警媒介是否存在,消失重新添加
在这里插入图片描述
在server上
重启zabbix服务




[root@zabbix-server ~]# systemctl restart zabbix-server
[root@zabbix-server ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      90778/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      57098/zabbix_server 
tcp6       0      0 :::10050                :::*                    LISTEN      90778/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      57098/zabbix_server 

在客户端,网卡关闭,可以监控到ICMP项目有问题,触发报警

[root@zabbix-client ~]# ifconfig ens33 down

在监测–问题页面进行查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.11 恢复网卡查看

[root@client1 ~]# ifconfig ens33 up

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!