基于jenkins+gitlab+docker部署zabbix

背景

我现在已经在一台服务器上部署了jenkins和gitlab,现在有一个场景是需要在服务器上再部署一个zabbix,需要通过jenkins加上gitlab部署,并且要求zabbix是通过docker部署的

前提条件

jenkins、gitlab已完成部署并能正常访问,服务器docker能够正常使用

部署流程

一、准备Zabbix的Docker部署文件

1、创建Git仓库:

在GitLab上创建一个新的仓库,比如命名为zabbix-docker,用来存放Zabbix的Docker部署文件。

mkdir zabbix_docker
cd zabbix_docker
git init
git clone http://{git_ip}:{端口}/root/zabbix_docker.git
#输入git用户名/密码拉取文件,这里目前是空的,正常拉取即可

2、编写Dockerfile:

如果你打算自定义Zabbix镜像,可以在仓库中添加一个Dockerfile。不过,为了简单起见,我们直接使用官方的Zabbix Docker镜像。

3、编写docker-compose.yml:

在仓库根目录下创建docker-compose.yml文件,内容大致如下:

vim docker-compose.yml
version: '3'
services:
  zabbix-server:
    image: zabbix/zabbix-server-mysql:latest
    environment:
      DB_SERVER_HOST: "mysql-server"
      MYSQL_DATABASE: "zabbix"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "your_password"
    ports:
      - "10051:10051"
  mysql-server:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: "zabbix"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "your_password"
      MYSQL_ROOT_PASSWORD: "your_root_password"
    volumes:
      - zabbix-mysql:/var/lib/mysql

volumes:
  zabbix-mysql:
    driver: local

二、配置Jenkins

1、安装插件:

确保Jenkins安装了GitLab插件和Docker插件。

  • 首先,使用你的账号登录Jenkins的Web界面,在Jenkins的首页上,找到“系统管理”或“Manage Jenkins”,点击进入。
  • 在系统管理页面,找到“插件管理”或“Manage Plugins”,点击进入。
  • 在插件管理页面,切换到“可用”或“Available”标签页,这里列出了所有可以安装的插件。
  • 在页面顶部的搜索框中,分别输入“GitLab”和“Docker”来搜索这两个插件。
  • 对于GitLab插件,你可能会看到“GitLab Plugin”这样的结果,这就是我们需要的。
  • 对于Docker插件,可能会有几个与Docker相关的插件,但通常你需要的是“Docker Pipeline”插件,它允许你在Jenkinsfile中定义Docker相关的操作。
  • 找到这些插件后,勾选它们旁边的复选框,然后点击页面底部或顶部的“立即安装”、“Install without restart”或“Download now and install after restart”。
  • 安装插件可能需要一些时间。安装完成后,根据提示重启Jenkins(如果需要)。

2、创建新的Jenkins任务:

为了部署Zabbix,你需要在Jenkins中创建一个新的任务。

  • 返回Jenkins首页,点击“新建任务”或“Create a new job”。
  • 输入任务名称:在“任务名称”或“Enter an item name”处输入你的项目名称,例如“Deploy_Zabbix”。
  • 选择任务类型:选择一个适合的任务类型,通常对于这种情况,你可以选择“自由风格软件项目”或“Freestyle project”。
  • 点击“确定”或“OK” 创建任务。

3、配置GitLab源:

在任务配置中,设置GitLab仓库的URL和认证信息,以便Jenkins能够从GitLab拉取Zabbix的部署文件。

  • 在任务配置页面,找到“源码管理”或“Source Code Management”部分,选择“Git”。
  • 填写仓库URL:在“Repository URL”处填写你的GitLab仓库的URL。
  • 填写凭据:如果你的GitLab仓库需要认证,点击“添加”或“Add”按钮,选择“Jenkins”来添加凭据(用户名和密码或者私钥)。

可能出现的问题:
在这里插入图片描述
首先需要确认选择的用户密码是不是gitlab拉取到的,其次需要确认jenkins安装完插件后是否正常重启。

这个HTTP ERROR 403 No valid crumb was included in the request错误是Jenkins的防跨站请求伪造(CSRF)保护机制导致的。当你尝试提交表单时,Jenkins会期望一个有效的“crumb”用于验证请求,这个错误通常发生在Jenkins的“crumb”验证没有正确配置或者客户端没有正确提交“crumb”。
解决这个问题的方法通常包括:

禁用CSRF保护(不推荐):

进入Jenkins系统配置(Manage Jenkins -> Configure Global Security)。
取消选中“防止跨站点请求伪造”或类似的选项。
保存设置。
请注意,禁用CSRF保护会降低Jenkins的安全性,因此这不是一个推荐的解决方案。

更新Jenkins到最新版本:
有时候,这个问题是由于Jenkins的一个已知问题导致的,更新到最新版本可能可以解决。

确保Jenkins URL配置正确:
在系统配置中检查Jenkins的根URL设置是否正确。

清除浏览器Cookies和缓存:
有时候,清除浏览器的Cookies和缓存可以解决这个问题。

使用API Token代替密码:
在Jenkins中为你的用户生成API Token,并在克隆Git仓库时使用用户名和API Token代替用户名和密码。

通过脚本直接获取Crumb并使用:
可以通过编写脚本从Jenkins API获取crumb,并在之后的请求中使用这个crumb。

重新登录:
有时候,简单的重新登录到Jenkins可以刷新你的session和crumb。
检查代理或网络设置:

如果你是通过代理服务器或有特殊网络配置访问Jenkins,确保代理或网络设置不会阻止crumb的传递。
从安全的角度出发,建议不要禁用CSRF保护。你可以尝试其它的方法来解决这个问题。如果你不确定如何操作,可以联系你的系统管理员协助处理。

4、添加构建步骤:

  • 首先,在Jenkins的界面上找到你刚刚创建的任务,进入该任务的页面。
  • 在任务页面上,点击“配置”或“Configure”按钮以进入任务的配置页面。
  • 在配置页面中,找到“构建”或“Build”这一部分。在这一部分,你可以添加不同类型的构建步骤。
  • 点击“添加构建步骤”(“Add build step”)后,在下拉菜单中选择“执行Shell”(“Execute shell”)或者类似的命令来添加一个Shell脚本执行步骤。

在构建步骤中,添加Shell脚本来执行Docker部署,脚本内容大致如下:

#!/bin/bash
cd /path/to/your/zabbix-docker
docker-compose down
docker-compose up -d

注意替换/path/to/your/zabbix-docker为你的实际路径。

  • 编辑完成后,记得点击页面底部的“保存”(“Save”)按钮保存你的配置。
  • 保存配置后,回到任务页面,点击“立即构建”(“Build now”),Jenkins就会根据你的脚本来执行构建任务。

三、配置GitLab与Jenkins的集成

1、Webhook:

在GitLab项目设置中,找到Webhooks部分,添加一个新的Webhook,URL设置为Jenkins任务的URL,这样每次GitLab上的代码更新都会触发Jenkins任务自动运行。

四、测试部署

1、推送更新:

向GitLab仓库推送任何更新,比如修改docker-compose.yml文件。

2、观察Jenkins:

推送更新后,Jenkins任务应自动运行,开始部署Zabbix。

3、验证Zabbix部署:

Jenkins任务完成后,访问Zabbix的Web界面,检查是否部署成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从路由器syslog日志监控路由器流量

路由器是关键的网络基础设施组件,需要随时监控,定期监控路由器可以帮助管理员确保路由器通信正常。日常监控还可以清楚地显出通过网络的流量,通过分析路由器流量,安全管理员可及早识别可能发生的网络事件,从而避免停机…

C语言 | Leetcode C语言题解之第9题回文数

题目&#xff1a; 题解&#xff1a; bool isPalindrome(int x) {if(x < 0)return false;long int sum0;long int nx;while(n!0){sumsum*10n%10;nn/10;}if(sumx)return true;elsereturn false; }

MongoDB基本操作之备份与恢复【验证有效】

资源获取 MongoDB Database Tools 解压zip包&#xff0c;将其中的工具复制到bin目录下 mongodump与mongorestore – 备份 mongodump -h localhost:27017 -u admin -p pass --authenticationDatabase admin -d runoob -o /usr/local/mongo/bak/ --forceTableScan –切换数据库…

《系统架构设计师教程(第2版)》第8章-系统质量属性与架构评估-03-ATAM方法架构评估实践(下)

文章目录 3. 测试阶段3.1 头脑风暴和优先场景&#xff08;第7步&#xff09;3.1.1 理论部分3.1.2 示例 3.2 分析架构方法&#xff08;第8步&#xff09;3.2.1 调查架构方法1&#xff09;安全性2&#xff09;性能 3.2.2 创建分析问题3.2.3 分析问题的答案胡佛架构银行体系结构 3…

深入理解JVM垃圾收集器

相关系列 深入理解JVM垃圾收集算法-CSDN博客 目前市面常见的垃圾收集器有Serial、ParNew、Parallel、CMS、Serial Old、Parallel Old、G1、ZGC以及有二种不常见的Epsilon、Shenandoah的&#xff0c;从上图可以看到有连线的的垃圾收集器是可以组合使用&#xff0c;是年轻代老年代…

快速删除node_modules

1.rd /s /q node_modules 2.rimraf node_modules/ 亲测可用

Java零基础入门-封装

一、概述 谈起面向对面编程&#xff0c;我们都知道有三大特征【封装、继承、多态】&#xff0c;跟随我一起学习的小伙伴都知道&#xff0c;对于三大特征的后两种&#xff0c;我们在前两期已经讲过了&#xff0c;至于我为啥没有按照特征顺序来教学&#xff0c;是因为我常不按规律…

MySQL8.3.0 主从复制方案(master/slave)

一 、什么是MySQL主从 MySQL主从&#xff08;Master-Slave&#xff09;复制是一种数据复制机制&#xff0c;用于将一个MySQL数据库服务器&#xff08;主服务器&#xff09;的数据复制到其他一个或多个MySQL数据库服务器&#xff08;从服务器&#xff09;。这种复制机制可以提供…

Android Studio中查看和修改project的编译jdk版本

android studio中查看和修改project的编译jdk版本操作如下&#xff1a; File->settings->Build,Execution,deployment->Build Tools->Gradles 进入Gradles页面可以查看并修改project的编译jdk版本&#xff0c;如图所示

基于 Lambda 实现 Claude3 的流式响应

在如今的大语言模型推理输出场景中&#xff0c;流式响应基本已成为必备的功能之一。一方面符合大语言模型生成方式的本质&#xff0c;另一方面当模型推理效率不是很高时&#xff0c;流式响应比起全部 generate 后再输出、能大幅缩短从开始请求到输出第一个 Token 的时间&#x…

访问网站显示不安全是什么原因?怎么解决?

访问网站时显示“不安全”&#xff0c;主要原因以及解决办法&#xff1a; 1.没用HTTPS加密&#xff1a;网站还在用老的HTTP协议&#xff0c;数据传输没加密&#xff0c;容易被人偷看或篡改。解决办法是网站管理员启用HTTPS&#xff0c;也就是给网站装个“SSL证书”。这个是最常…

5.6 mybatis之RowBounds分页用法

文章目录 mybatis 中&#xff0c;使用 RowBounds 进行分页&#xff0c;非常方便&#xff0c;不需要在 sql 语句中写 limit&#xff0c;即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的&#xff0c;所以在数据量大的sql中并不适用&#xff0c;它更适合在…

深度学习学习日记4.8(下午)

1.softmax 函数的得出的结果是样本被预测到每个类别的概率&#xff0c;所有类别的概率相加总和等于1。使用 softmax 进行数据归一化&#xff0c;将数字转换成概率。 2.熵&#xff0c;不确定性&#xff0c;越低越好 3.KL 散度交叉熵-信息熵 预测越准&#xff0c;交叉熵越小&am…

【大数据】大数据概论与Hadoop

目录 1.大数据概述 1.1.大数据的概念 1.2.大数据的应用场景 1.3.大数据的关键技术 1.4.大数据的计算模式 1.5.大数据和云计算的关系 1.6.物联网 2.Hadoop 2.1.核心架构 2.2.版本演进 2.3.生态圈的全量结构 1.大数据概述 1.1.大数据的概念 大数据即字面意思&#x…

什么是人工智能?人工智能、机器学习、深度学习三者之间有什么关系吗?

深度学习是机器学习的一个分支。深度学习是机器学习的一部分&#xff0c;与机器学习的其他分支学科&#xff0c;以及统计学、人工智能等学科都有着紧密的联系。深度学习、机器学习、人工智能、统计学之间的关系如图1-4所示。 图1-4 深度学习、机器学习、人工智能、统计学之间的…

CNAS认可和CMA认可对比辨析

性质对比 CNAS&#xff08;China National Accreditation Service for Conformity Assessment&#xff0c;中国合格评定国家认可委员会&#xff09;。该委员会是国家授权的单位&#xff0c;是专门来做认可和监督工作的。认可的对象是认证机构、检验机构和实验室等。确认其是否有…

php站长在线工具箱源码优化版

环境要求 PHP > 7.4MySQL > 5.6fileinfo扩展使用Redis缓存需安装Redis扩展 源码下载地址&#xff1a;php站长在线工具箱源码优化版.zip

Android图形显示架构概览

图形显示系统作为Android系统核心的子系统&#xff0c;掌握它对于理解Android系统很有帮助&#xff0c;下面从整体上简单介绍图形显示系统的架构&#xff0c;如下图所示。 这个框架只包含了用户空间的图形组件&#xff0c;不涉及底层的显示驱动。框架主要包括以下4个图形组件。…

SRIO学习(3)使用SRIO IP核进行设计

文章目录 前言一、设计框图二、模块介绍三、上板验证 前言 本文将通过使用SRIO IP核实现数据通信&#xff0c;重点在于打通数据链路&#xff0c;具体的协议内容设计并非重点&#xff0c;打通了链路大家自己根据设计需求来即可。 一、设计框图 看了前面高速接口的一些设计&am…

【uniapp】开发微信小程序 — 注意事项

底部导航栏 (tabBar) 图标的正确做法&#xff1a; 1、图片的标准尺寸为 81px * 81px&#xff0c;该尺寸在官方的文档中有明确的说明&#xff0c;可以参考微信小程序全局配置文档中对 iconPath 属性的说明。 2、为了保持良好的间距&#xff0c;图片的内容区域设置 60px* 比较好&…