docker快速搭建并使用Zabbix

news2024/10/7 12:24:22

docker搭建并使用Zabbix

0 zabbix基础知识

在这里插入图片描述

  1. zabbix-server
    zabbix 的server 端,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。
  2. database
    用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。
  3. zabbix-web
    zabbix的UI端,提供操作控制台和监控展示等功能。
  4. zabbix-java-gateway
    用于监控Java程序的JVM状态,zabbix本身无法直接从jvm获取监控指标,需使用该网关来实现。
  5. zabbbix-agent
    zabbix的代理端,部署在目标主机上,用于收集主机的监控数据,并提供给到zabbix server。

1 安装并启动docker

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install docker
systemctl start docker

2 拉取mysql、zabbix-server等镜像

docker pull mysql:5.7
docker pull docker.io/zabbix/zabbix-web-nginx-mysql:centos-5.4-latest
docker pull docker.io/zabbix/zabbix-server-mysql:centos-5.4-latest

①运行mysql

  1. 创建存储卷,用于持久化mysql数据
docker volume create -d local mysql_data  # 存放mysql的数据
docker volume create -d local mysql_logs  # 存放mysql的日志
docker volume create -d local mysql_conf  # 存放mysql的配置文件

说明:存储卷默认存储位置路径为:/var/lib/docker/volume/${volume_name}。

  1. 创建并运行mysql8容器
docker run --name mysql-server -t \
   -v mysql_data:/var/lib/mysql \
      -v mysql_logs:/var/log/mysql \
      -v mysql_conf:/etc/mysql \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --restart=unless-stopped \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

说明:zabbix6.x版本要求使用mysql8.0。

②运行zabbix-java-gateway

docker run --name zabbix-java-gateway -t \
   --restart=unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.2-latest

③运行zabbix-server

  1. 创建存储卷,用于存储zabbix的配置文件
docker volume create -d local zabbix_server
  1. 创建并启动zabbix-server

运行zabbix-server容器,开放10051/TCP端口,用于接收监控数据。添加–link参数,实现mysql和java-gateway容器间的互相通信。

docker run --name zabbix-server-mysql -t \
    -v zabbix_server:/etc/zabbix \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      --restart=unless-stopped \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:alpine-6.2-latest

注意:此方式适合所有容器部署在同一台主机上,如果是分开部署,则在前面的步骤需要开放相关端口,并通过局域网进行连接。

④运行zabbix-web

运行zabbix-web容器,默认暴露端口80

docker run --name zabbix-web-nginx-mysql -t \
   -e PHP_TZ="Asia/Shanghai" \
   -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest

如果提示端口占用:
方式一:先删除镜像,然后更换没有占用的端口(例如:zabbix-web-nginx-mysql的80端口已经被占用)

  • 删除镜像:docker rm zabbix-web-nginx-mysql
  • 更换映射端口
    -p 80:8080更换为-p 9000:8080即可

方式二:杀死占用端口的进程

  • 执行命令找到占用端口的进程号(list open files:lsof命令可以列出当前系统中被打开的文件和网络连接,包括文件名、进程ID、用户、文件类型、文件描述符等详细信息):sudo lsof -i :80
  • 杀死进程:sudo kill 进程号(processID)

执行结果:
在这里插入图片描述

3 运行zabbix-agent

如果我们想要监控zabbix-server服务器上的信息,那么我们需要安装zabbix-agent

3.1 通过安装包部署(推荐)

  1. 通过rpm安装zabbix对应仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm

# 清除本地yum缓存
yum clean all
  1. 安装zabbix-agent
yum install -y zabbix-agent
  1. 启动zabbix-agent
systemctl restart zabbix-agent

# 设置开机自启
# systemctl enable zabbix-agent

3.2 通过docker部署

如果我们在docker中部署zabbix-agent,那么zabbix-server监控到的就是容器状态,而非是宿主机状态

  • 通过docker部署我们需要修改容器中配置文件的ZBX_Server_HOST,但是如果修改之后重启之后会丢失修改,所以需要编写一个DockerFile,然后构建自己的zabbix-agent镜像
    • 部分命令:
#编写DockerFile
vi Dockerfile
# DockerFile中填写下面两行信息
FROM zabbix/zabbix-agent:alpine-6.2-latest
COPY zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf
# 构建自己的镜像
docker build -t my-zabbix-agent 
#通过自己的镜像运行容器
docker run -d \
--name zabbix-agent \
 -v /var/log/zabbix:/var/log/zabbix \
 -p 10050:10050 \
 --restart=unless-stopped \
 --privileged \
 my-zabbix-agent

通过Docker部署:

# ZBX_SERVER_HOST更换为自己zabbix-server的所在地址
# 并且在zabbix的web页面中也需要填写agent的容器地址
docker run -d \
   --name zabbix-agent \
   -v /etc/zabbix \
   -v /var/log/zabbix:/var/log/zabbix \
   -e ZBX_HOSTNAME="client-01" \
   -e ZBX_SERVER_HOST="10.253.50.145" \
   -e ZBX_SERVER_PORT=10051 \
   -p 10050:10050 \
   --restart=unless-stopped \
   --privileged \
   zabbix/zabbix-agent:alpine-6.2-latest

3.3 设置web为中文及bug处理

  1. 修改zabbix的web页面,设置页面显示为中文

User settings - Profile - Language - Chinese,最后点击下方的update

在这里插入图片描述
2. 修改zabbix的监控地址为agent地址

检测 - 主机 - 选择我们的zabbix-server - 鼠标单击然后选择配置

在这里插入图片描述
更换agent的地址为zabbix-server的地址

因为我们此刻是在zabbix-server的机器上安装了一台zabbix-agent,目的是为了检测我们zabbix-server所在机器的状态。

  • 如果大家将zabbix-agent安装在了其他机器上,更换为对应机器ip地址即可

在这里插入图片描述
3. 等待几分钟刷新页面即可

bug1:

如果发现可用性仍然没有变成绿色,并且页面报错
Asuming that agent dropped connect because of access permision,表明是我们没有开启对应的权限

  • 首先查看是否关闭了防火墙
    • 关闭防火墙命令:systemctl stop firewalld
  • 如果使用的是云服务器,查看云服务器的对应安全组策略是否开启
  • 权限不够:修改zabbix-agent的配置文件
    • vim /etc/zabbix/zabbix_agentd.conf
    • 找到Server位置,将其修改为自己server所在ip地址加网段,如:172.159.92.3/24;如果为了方便也可以将其修改为0.0.0.0/0(代表运行所有的服务器访问)
      在这里插入图片描述
      完成之后,:wq保存退出,systemctl restart zabbix-agent.service重启zabbix-agent,等待几分钟之后在刷新zabbix的web页面即可
  • 如果上述方法都不行,就对应查看日志报错信息,来对应处理:
    查看日志信息:tail -f /var/log/zabbix/zabbix_agentd.log
    • 报错信息:Unable to connect to [127.0.0.1]:10051 [cannot connect to [[127.0.0.1]:10051]: [111] Connection refused]
    • 表明是服务器地址配置错了,vim /etc/zabbix/zabbix_agentd.conf,将配置文件中的ServerActive更改为zabbix-server的地址,如:10.253.50.145,记住只需要修改ip,不用携带port端口
      在这里插入图片描述

bug2:

如果查询agent的日志文件发现报错信息:
23946:20230722:121107.962 no active checks on server [10.253.50.145:10051]: host [Zabbix server] not found

  • 查询日志文件命令:tail -f /var/log/zabbix/zabbix_agentd.log
  • 解决办法:修改agent配置文件中的Hostname,
    • 查看配置文件中的HostName:
      cat /etc/zabbix/zabbix_agentd.conf | grep Hostname
    • 在zabbix web页面Monitoring->Configuration->Hosts 页面更改Host name和zabbix_agentd.conf里面的Hostname一样。
      在这里插入图片描述
      在这里插入图片描述
  • 重启zabbix-agent

参考文章:https://blog.csdn.net/chang_chunhua/article/details/127846551

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/782660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AutoSAR应用软件设计】

AutoSAR总体架构 是本文讲解内容。 接口类型 AUTOSAR接口 –SWCs和/或BSW模块交换的信息–独立于实施/网络/硬件–端口接口 标准化AUTOSAR接口 –AUTOSAR接口–标准化的语法和语义–标准化端口接口 标准化接口 –标准化API–通常为特定编程语言(“C”&#x…

火狐浏览器鼠标点击页面区域文字时,出现光标的问题

点击一些资源卡片和查看别的页面时,发现点击非输入框的地方,出现了光标,误以为光标处可以填写东西,就试着敲了几次键盘,发现没有任何反应;然后就叫开发那个页面的同事过去看看;那个同事按F12各种…

如何监控Linux和Oracle数据库运行状态

背景: 在生产环境中,一般可能会发生服务器宕机或者数据库宕机的情况,如何准确的把握找准”生产事故“的具体发生时间,其实有很多方法,可以借助第三方的监控软件或者其他收费软件。 但是本人就是穷逼一个,不可能买或者使用盗版的三方软件。所有设计了以下流程检测Linux和…

16_LinuxINPUT子系统

目录 input子系统简 input驱动编写流程 注册input_dev 上报输入事件 input_event结构体 按键input驱动程序编写 编写测试APP 运行测试 input子系统简 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。…

node中间件-express框架

文章目录 前置 Express安装1. 基本使用2. 中间件2.1 中间件应用 3. 中间件的注册方式3.1 普通中间件的注册3.2 path匹配中间件3.3 method与路径匹配3.4 案列中间件匹配与执行方法 4. 中间件request数据解析4.1 解析request body中间件4.2 urlencoded解析 5. 第三方中间件5.1 mo…

CHI协议保序之Comp保序

一致性系统中,需要 memroy model 使用 multi-copy atomicity; 一致性系统中,使用三种保序方式; Completion response □ Comp 响应 表示当前的请求,己经达到了 POC/POS, POC/POS 将保证其命令的执行顺序和接收的顺序是一致的&…

Python(三十三)分支结构——嵌套if的使用

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Android Studio下载

目录 确定版本下载地址 确定版本 如果是入职工作,先和同事确定好版本。因为每个项目使用的gradle插件版本,是在根目录的build.gralde文件中统一定义的,这个文件在添加第三方库(例如GreenDao,Arouter等)或者…

SpringBoot项目的创建

等待maven下载完成 删除无用文件 此时我们就创建成功了

Shiro权限绕过漏洞(CVE-2020-1957,CVE-2020-11989、CVE-2020-13933)

一、Apache Shiro Apache Shiro 是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。 二、Shiro漏洞指纹(部分) 1、在请求包的cookie中有remember字段赋任意值 2、返回包中存在set-Cookie:remeberMedeleteMe 三、受…

通过宝塔面板将vue项目放到阿里云服务器(两个vue项目)

前提条件: 端口提前开放所需环境安装好(Nginx node…)以及打包好的vue文件(dist) 第一步:上传文件到自定义目录 第二步:在首页找到Nginx软件并配置 第三步:配置具体的配置 这里说…

「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器3

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

厦门枫叶时代看电视的新趋势

随着“5G电视”技术的不断普及和城市数字化转型的加速,电视行业也在发生着翻天覆地的变化。在这个背景下,第28届上海电视节推出了高端论坛板块——“白玉兰对话”,共同探讨电视行业的未来发展。其中备受瞩目的中国电视剧发展论坛,…

荔枝派Zero(全志V3S)驱动开发之USB摄像头

文章目录 前言一、内核配置 UVC二、编译内核并烧录到 SD 卡三、上电测试四、mjpeg-streamer 视频流服务器测试1、jpeg 库的移植2、移植 mjpeg-streamer①、前置软件②、下载 mjpg-streamer 源码③、修改 mjpg-streamer 源码④、编译 mjpg-streamer 源码 3、搬移文件到 nfs 目录…

2023/07/23

1. 必须等待所有请求结束后才能执行后续操作的处理方式 方式一: async func () {const p1 await api1();const p2 await api2();const p3 await api3();Promise.all([p1, p2, p3]).then(res > {后续操作...}) }方式二:待补充 2. flex 弹性盒子布…

300M的联通宽带,电脑直接连接光猫只有100M;电脑连接路由器,然后路由器连接光猫却有300M???

1. 现象 300M的联通宽带,用了小半年之后发现网络比以前满,通过https://www.speedtest.cn网站测试发现只有100M 2. 猜测 难道是联通这帮人,偷偷把我网速降到了100M??? 3. 排查过程 打电话让联通师傅上门排查…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer(Qt 设计师)使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…

Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Redis应用(3)——Redis的项目应用(二):抢购图书 ---> Redis高并发的问题 分布式锁Redission的使用

目录 引出Redis的高并发问题redis的高并发问题Redisson中间件引入RedissonRedisson配置Redisson应用报错:java.lang.NoClassDefFoundErro Redis的项目应用(二):抢购图书1.0版本,Java代码:数据不安全测试方法…

Python+Selenium做自动化测试

一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败,并且提示信息正确; 3.输入格式正…