zabbix 安装部署及应用 您所在的位置:网站首页 zabbix监控应用健康状态 zabbix 安装部署及应用

zabbix 安装部署及应用

2023-04-24 01:36| 来源: 网络整理| 查看: 265

一、Zabbix概述

作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。

利用一个优秀的监控软件,我们可以:●通过一个友好的界面进行浏览整个网站所有的服务器状态●可以在 Web 前端方便的查看监控数据●可以回溯寻找事故发生时系统的问题和报警情况

1. zabbix是什么

●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。●zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。●zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。●zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。●zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。

2. zabbix 主要特点及功能

特点:免费开源 自动发现服务与网络设备分布式 可以监监视以及web集中管理功能安全认证 监视结果通过email通知运维(管理员)

功能:cpu负载 内存管理 磁盘使用 网络状态 端口监视 日志监视 中间件监视 插件开发自定义(只能监控传统,不能监控容器)

3. zabbix运行机制

zabbix server (端口10051)和 zabbix agent(端口10050)    c/s客户端负责采集数据,给服务端;服务端通过b/s模式,在web端展示和配置

 

4. zabbix数据流向、工作原理

数据流向:zabbix-agent(数据采集)-- zabbix-server(数据分析、告警)--数据库(数据存储)--zabbix-web(数据展示)

工作原理:zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端安装在监控设备上,其将zabbix客户端发送的数据存储在我们的数据库中,zabbixweb根据在前端进行展示和绘图

 

5. zabbix常见的五个程序

zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。●zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;●zabbix agent:客户端守护进程,负责收集客户端数据,例如:收集 CPU 负载、内存、硬盘使用情况等;●zabbix proxy:zabbix 分布式代理守护进程,通常大于 500 台主机,需要进行分布式监控架构部署;●zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令;●zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查。

6. zabbix常见架构

①server-client架构

服务端与客户端

监控机器与被监控机器之间不经过任何出处理,直接由zabbix-server和zabbix-agent之间进行数据交换,适用于网络比较啊简单,尽量在局域网内,设备比较少的监控环境

 ②server-proxy-client架构(多一个代理)

server-proxy-client 其中proxy是 server、client之间的桥梁,proxy本身没有前端,而且本身并不存放数据,只是将agentd发出数据暂时存放,而后在提交给server,这种架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控。

③master-node-client架构(适合大型数据平台)

master-node-client架构,该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每一个node同时一个server端口,node下面可以杰proxy,也可以直接接client。node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master故障或损坏对node其下架的完整性。

二、安装Zabbix

2.1 部署zabix服务端(端口号10051)

 

systemctl stop firewalld.service setenforce 0 #关闭防火墙、安全防护模块 yum install -y yum-utils device-mapper-persistent-data lvm2 #安装依赖包 #yum-utils:提供了 yum-config-manager 工具。 #device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。 #device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #设置阿里云镜像源 yum install -y docker-ce docker-ce-cli containerd.io #安装Docker-CE并设置为开机自动启动 systemctl start docker.service systemctl enable docker.service #开启服务、开机自启

 

2. 配置docker加速器

①打开阿里云官网 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台官网进行登陆。

 ②打开控制台

③点击左侧菜单栏,搜索框输入容器镜像服务

 ④选择镜像工具---镜像加速器--复制命令配置即可配置完毕重新加载daemon然后重启docker。

 

 

 

三、docker命令总结

1. docker 镜像操作

①搜索镜像

格式:docker search 关键字

作用:搜索关键字的相关镜像内容

 

②获取镜像

格式:docker pull 仓库名称[:标签]

作用:拉取镜像,版本号可选,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

 

③查看镜像信息

镜像下载后存放在 /var/lib/docker 。Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

查看下载的镜像文件信息  cat /var/lib/docker/image/overlay2/repositories.json

 

④查看下载到本地的所有镜像

命令:docker images

REPOSITORY:镜像属于的仓库;TAG:镜像的标签信息,标记同一个仓库中的不同镜像;IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;CREATED:镜像创建时间;VIRTUAL SIZE:镜像大小;

 

⑤根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

 

⑥为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]

 

⑦删除镜像

格式:docker rmi 仓库名称:标签 或 docker rmi 镜像ID号

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

 

⑧容器导出镜像存储

格式:docker save  -o    保存目录    导出的镜像

作用:将docker容器中的镜像导出保存到系统中 

 

⑨容器导入到镜像

格式: docker load   -i  本地存储镜像位置 

            docker load  文件名

 导入格式:cat 文件名 | docker import – 镜像名称:标签

 

⑦将宿主机文件复制到容器内部

 从容器复制文件到主机

 

⑧删除容器

格式:docker rm [-f] 容器ID/名称

注:正在运行的容器需要先停止,然后再删除。 

 #批量停止容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

#批量删除所有容器

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

 #批量删除镜像

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash

#删除none镜像docker images | grep none | awk '{print $3}' | xargs docker rmi 

 #批量清理后台停止的容器

docker rm $(docker ps -a -q)

 

⑨查看容器的输出和日志信息docker logs 容器的ID/名称

 

四、docker网络

1. docker网络实现原理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。

Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

 

2. Docker的网络模式

●Host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。●Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。●None:该模式关闭了容器的网络功能。●Bridge:默认为该模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat 表配置与宿主机通信。●自定义网络

 使用docker run创建Docker容器时,可以用 --net 或 --network 选项指定容器的网络模式

●host模式:使用 --net=host 指定。●none模式:使用 --net=none 指定。●container模式:使用 --net=container:NAME_or_ID 指定。●bridge模式:使用 --net=bridge 指定,默认设置,可省略。

 

3. 网络模式详解

①host模式

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。

 

②container模式

在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

③none模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

④bridge模式

 

bridge模式是docker的默认网络模式,不用--net参数,就是bridge模式。

相当于Vmware中的 nat 模式,容器使用独立network Namespace,并连接到docker0虚拟网卡。通过docker0网桥以及iptables nat表配置与宿主机通信,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。

(1)当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

(2)从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备。

(3)Docker将 veth pair 设备的一端放在新创建的容器中,并命名为 eth0(容器的网卡),另一端放在主机中, 以 * 这样类似的名字命名,并将这个网络设备加入到 docker0 网桥中。可以通过 brctl show 命令查看。veth

(4)使用 docker run -p 时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL 查看。

 ⑤自定义网络

直接使用bridge模式,是无法支持指定IP运行docker的,例如执行以下命令就会报错docker run -itd --name test3 --network bridge --ip 172.17.0.10 centos:7 /bin/bash

创建自定义网络#可以先自定义网络,再使用指定IP运行dockerdocker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork

#docker1 为执行 ifconfig -a 命令时,显示的网卡名,如果不使用 --opt 参数指定此名称,那你在使用 ifconfig -a 命令查看网络信息时,看到的是类似 br-110eb56a0b22 这样的名字,这显然不怎么好记。#mynetwork 为执行 docker network list 命令时,显示的bridge网络模式名称。docker run -itd --name test4 --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有