基于jenkins+gitlab+docker部署zabbix

这篇具有很好参考价值的文章主要介绍了基于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.5'

services:
  zabbix-db:
    image: mysql:8.0
    container_name: zabbix-mysql-db
    environment:
      MYSQL_DATABASE: "zabbix"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "zabbix_pass"
      MYSQL_ROOT_PASSWORD: "root_pass"
    command: --character-set-server=utf8 --collation-server=utf8_bin
    volumes:
      - zabbix-mysql-storage:/var/lib/mysql
    restart: always

  zabbix-server:
    image: zabbix/zabbix-server-mysql:latest
    container_name: zabbix-server
    depends_on:
      - zabbix-db
    environment:
      DB_SERVER_HOST: "zabbix-db"
      MYSQL_DATABASE: "zabbix"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "zabbix_pass"
    ports:
      - "10051:10051"
    restart: always

  zabbix-frontend:
    image: zabbix/zabbix-web-nginx-mysql:latest
    container_name: zabbix-frontend
    depends_on:
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: "zabbix-server"
      DB_SERVER_HOST: "zabbix-db"
      MYSQL_DATABASE: "zabbix"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "zabbix_pass"
    ports:
      - "8082:8080"
    restart: always

volumes:
  zabbix-mysql-storage:

二、配置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”来添加凭据(用户名和密码或者私钥)。

可能出现的问题:
基于jenkins+gitlab+docker部署zabbix,jenkins,gitlab,ci/cd
首先需要确认选择的用户密码是不是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任务自动运行。

  • 登录你的GitLab,然后点击进入你想要设置Webhook的项目。
  • 在项目的侧边栏菜单中,点击“设置”(Settings),然后在下拉菜单中选择“Webhooks”。
  • 这里你需要填入你的Jenkins服务器的Webhook URL。这个URL通常是你的Jenkins服务器地址加上/project/你的任务名。
    例如:
http://your-jenkins-server:8080/project/你的任务名

如果你的Jenkins设置了安全措施,你可能需要在URL中包含一个访问令牌。

  • 触发操作: 选择你希望触发Jenkins任务的事件,通常是“推送事件”(Push events)。
  • Enable SSL verification: 如果你的Jenkins使用的是https并且有有效的SSL证书,可以勾选这个选项。如果你的Jenkins是http或者没有有效SSL证书,那么取消这个选项。
  • 添加Webhook:填写完毕后,点击“添加Webhook”或“Add webhook”。

四、测试部署

1、推送更新:

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

2、观察Jenkins:

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

3、验证Zabbix部署:

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

常见问题

1、zabbix容器启动异常

docker logs zabbixdocker_zabbix-server_1报错信息:

Starting Zabbix Server. Zabbix 6.4.13 (revision 6e531c4).
Press Ctrl+C to exit.

     7:20240411:033221.929 Starting Zabbix Server. Zabbix 6.4.13 (revision 6e531c4).
     7:20240411:033221.929 ****** Enabled features ******
     7:20240411:033221.929 SNMP monitoring:           YES
     7:20240411:033221.929 IPMI monitoring:           YES
     7:20240411:033221.929 Web monitoring:            YES
     7:20240411:033221.929 VMware monitoring:         YES
     7:20240411:033221.929 SMTP authentication:       YES
     7:20240411:033221.929 ODBC:                      YES
     7:20240411:033221.929 SSH support:               YES
     7:20240411:033221.929 IPv6 support:              YES
     7:20240411:033221.929 TLS support:               YES
     7:20240411:033221.929 ******************************
     7:20240411:033221.929 using configuration file: /etc/zabbix/zabbix_server.conf
     7:20240411:033221.933 cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)

问题分析:
错误信息表明Zabbix数据库的“users”表是空的。这通常意味着Zabbix Server尝试连接到的数据库并没有被正确初始化或配置。解决这个问题的步骤如下:

确认数据库服务正在运行:首先,确保你的数据库服务(如MySQL或PostgreSQL)正在运行,并且Zabbix Server有权限访问它。

检查Zabbix数据库是否已经创建:确保你已经按照Zabbix的文档创建了数据库。对于MySQL,可以使用如下命令查看所有数据库:

mysql -u [username] -p -e "SHOW DATABASES;"

初始化数据库:如果Zabbix数据库已经创建,但是“users”表为空,那么可能是因为数据库没有被正确初始化。Zabbix提供了SQL脚本来初始化数据库,这些脚本位于Zabbix源代码的database/mysql目录下。可以使用如下命令来初始化数据库(以MySQL为例)

mysql -u [username] -p [database_name] < schema.sql
mysql -u [username] -p [database_name] < images.sql
mysql -u [username] -p [database_name] < data.sql

其中,[username]是你的数据库用户名,[database_name]是你的Zabbix数据库名称。这些脚本将会创建所需的表并填充一些基础数据。

检查Zabbix Server配置:确认/etc/zabbix/zabbix_server.conf文件中的数据库配置正确无误,包括数据库类型、名称、用户和密码等。

重启Zabbix Server:在更正任何配置或初始化数据库后,重启Zabbix Server:

systemctl restart zabbix-server

如果以上步骤无法解决你的问题,建议检查Zabbix Server的日志文件以获取更多错误信息,这可能会提供更多关于问题的线索。日志文件通常位于/var/log/zabbix/zabbix_server.log。

2、mysql版本过低

Starting Zabbix Server. Zabbix 6.4.13 (revision 6e531c4).
Press Ctrl+C to exit.

     6:20240411:063242.137 Starting Zabbix Server. Zabbix 6.4.13 (revision 6e531c4).
     6:20240411:063242.137 ****** Enabled features ******
     6:20240411:063242.137 SNMP monitoring:           YES
     6:20240411:063242.137 IPMI monitoring:           YES
     6:20240411:063242.137 Web monitoring:            YES
     6:20240411:063242.137 VMware monitoring:         YES
     6:20240411:063242.137 SMTP authentication:       YES
     6:20240411:063242.137 ODBC:                      YES
     6:20240411:063242.137 SSH support:               YES
     6:20240411:063242.137 IPv6 support:              YES
     6:20240411:063242.137 TLS support:               YES
     6:20240411:063242.137 ******************************
     6:20240411:063242.137 using configuration file: /etc/zabbix/zabbix_server.conf
     6:20240411:063242.146  
     6:20240411:063242.146 Unable to start Zabbix server due to unsupported MySQL database version (5.07.44).
     6:20240411:063242.146 Must be at least (8.00.30).
     6:20240411:063242.146 Use of supported database version is highly recommended.
     6:20240411:063242.146 Override by setting AllowUnsupportedDBVersions=1 in Zabbix server configuration file at your own risk.
     6:20240411:063242.146  
     6:20240411:063242.148 Zabbix Server stopped. Zabbix 6.4.13 (revision 6e531c4)

在compose中修改版本为8.0即可。文章来源地址https://www.toymoban.com/news/detail-849370.html

到了这里,关于基于jenkins+gitlab+docker部署zabbix的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

    目录 项目名称 项目架构图 项目环境 项目概述 项目准备 项目步骤 一、修改每台主机的ip地址,同时设置永久关闭防火墙和selinux,修改好主机名,在firewalld服务器上开启路由功能并配置snat策略。 1. 在firewalld服务器上配置ip地址、设置永久关闭防火墙和selinux,并修改好主机名

    2024年02月09日
    浏览(40)
  • gitlab+jenkins+harbor实现CI/CD(2)——初级

    git安装 jenkins主机上安装docker-ce 配置仓库证书 测试 创建项目 创建一个freestyle project 在jenkins主机获取密钥 在gitlab上传公钥 在jenkins上传私钥 输入测试命令后保存 点击立即构建 查看控制台输出 工作路径 构建触发器,定时触发 安装插件 gitlab和 Cloudbee docker 配置gitlab 在网络设

    2024年02月09日
    浏览(39)
  • 【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

    目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工具 Jenkins GitLab 二、GitLab CI/CD 功能简介 2.1 GitLab 内置持续集成功能 持续集成(CI) 连续交付(

    2024年02月16日
    浏览(50)
  • Gitlab CI/CD笔记-第一天-GitOps和以前的和jenkins的集成的区别

    一、GitOps-CI/CD的流程图与Jenkins的流程图 从上图可以看到: GitOps与基于Jennkins技术栈的CI/CD流程,无法从Jenkins集成其他第三方开源的项目来实现换成了Gitlab来进行集成。 好处在于:CI 一个工具Gitlab就行了,但CD部分依旧是传统的云主机(虚拟机),物理及,docker单机容器或者

    2024年02月14日
    浏览(35)
  • 使用gitlab 自带 CI/CD 构建部署项目

    这里我用的是桥接模式 桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步 编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称 修改如下内容 这里我有句话要讲, 这些信息配置完成后出现\\\"网络不可达\\\" 需要把 BOOTPROTO 改为 dhcp 详情可参考 处理网络不可达

    2024年02月12日
    浏览(48)
  • Gitlab CI/CD 自动化打包部署前端(vue)项目

    一、虚拟机安装 1.vmware下载 2.镜像下载 3.Ubuntu 4.新建虚拟机 一直点下一步,直到点击完成。 5.分配镜像 二、Gitlab CI/CD 自动化部署项目 1.配置GitLab CI/CD: 2.生成SSH密钥对: 如果尚未生成,请在本地机器上生成一个SSH密钥对: 3.将SSH私钥添加到GitLab: 4.更新GitLab CI/CD配置: 5

    2024年03月13日
    浏览(49)
  • 【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)

    目录 一、GitLab Pipeline 流水线语法有哪些?流水线参数列表 如何检查语法错误?流水线语法检测 二、Pipeline 基础语法 job script before_script after_script stages 未定义 stages ​定义 stages 控制 stage 运行顺序   .pre .post stage variables 综合实例(一) tags allow_failure when manual 手动 delayed 延迟

    2024年02月17日
    浏览(52)
  • GitLab与GitLab Runner安装(RPM与Docker方式),CI/CD初体验

    GitLab 是一个强大的版本控制系统和协作平台,记录一下在实际工作中关于 GitLab 的安装使用记录。 一开始使用 GitLab 时,是在 CentOS7 上直接以 rpm 包的方式进行安装,仅作为代码托管工具来使用,版本: 14.10.4 。 后续预研 GitLab 的 CI/CD 及流水线时,采用 Docker 方式安装,版本

    2024年02月11日
    浏览(32)
  • CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

    日常开发中,每次代码编写完成后,都需要手动打包,并且上传服务器,无论本地打包的时间或者上传文件到服务器都需要花费大量的时间来完成,都是重复的并且毫无意义,应该将时间花费在更有价值的时间上;所以编写这篇文章,将自己收集、搭建、测试的步骤或经验汇

    2024年02月08日
    浏览(38)
  • 【基于 GitLab 的 CI/CD 实践】02、gitlab-runner 实践

    目录 一、gitlab-runner 简介 1.1 要求 1.2 特点 二、GitLab Runner 安装 2.1 使用 GItLab 官方仓库安装 2.2 使用 deb/rpm 软件包 2.3 在容器中运行 GitLab Runner 三、GitLab Runner 注册 3.1 GitLabRunner 类型 3.2 获取 runner token 获取 shared 类型 runner token   ​获取 group 类型的 runner token   ​获取 speci

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包