背景
我現(xiàn)在已經(jīng)在一臺服務(wù)器上部署了jenkins和gitlab,現(xiàn)在有一個場景是需要在服務(wù)器上再部署一個zabbix,需要通過jenkins加上gitlab部署,并且要求zabbix是通過docker部署的
前提條件
jenkins、gitlab已完成部署并能正常訪問,服務(wù)器docker能夠正常使用
部署流程
一、準(zhǔn)備Zabbix的Docker部署文件
1、創(chuàng)建Git倉庫:
在GitLab上創(chuàng)建一個新的倉庫,比如命名為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:
在倉庫根目錄下創(chuàng)建docker-compose.yml文件,內(nèi)容大致如下:
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的首頁上,找到“系統(tǒng)管理”或“Manage Jenkins”,點擊進(jìn)入。
- 在系統(tǒng)管理頁面,找到“插件管理”或“Manage Plugins”,點擊進(jìn)入。
- 在插件管理頁面,切換到“可用”或“Available”標(biāo)簽頁,這里列出了所有可以安裝的插件。
- 在頁面頂部的搜索框中,分別輸入“GitLab”和“Docker”來搜索這兩個插件。
- 對于GitLab插件,你可能會看到“GitLab Plugin”這樣的結(jié)果,這就是我們需要的。
- 對于Docker插件,可能會有幾個與Docker相關(guān)的插件,但通常你需要的是“Docker Pipeline”插件,它允許你在Jenkinsfile中定義Docker相關(guān)的操作。
- 找到這些插件后,勾選它們旁邊的復(fù)選框,然后點擊頁面底部或頂部的“立即安裝”、“Install without restart”或“Download now and install after restart”。
- 安裝插件可能需要一些時間。安裝完成后,根據(jù)提示重啟Jenkins(如果需要)。
2、創(chuàng)建新的Jenkins任務(wù):
為了部署Zabbix,你需要在Jenkins中創(chuàng)建一個新的任務(wù)。
- 返回Jenkins首頁,點擊“新建任務(wù)”或“Create a new job”。
- 輸入任務(wù)名稱:在“任務(wù)名稱”或“Enter an item name”處輸入你的項目名稱,例如“Deploy_Zabbix”。
- 選擇任務(wù)類型:選擇一個適合的任務(wù)類型,通常對于這種情況,你可以選擇“自由風(fēng)格軟件項目”或“Freestyle project”。
- 點擊“確定”或“OK” 創(chuàng)建任務(wù)。
3、配置GitLab源:
在任務(wù)配置中,設(shè)置GitLab倉庫的URL和認(rèn)證信息,以便Jenkins能夠從GitLab拉取Zabbix的部署文件。
- 在任務(wù)配置頁面,找到“源碼管理”或“Source Code Management”部分,選擇“Git”。
- 填寫倉庫URL:在“Repository URL”處填寫你的GitLab倉庫的URL。
- 填寫憑據(jù):如果你的GitLab倉庫需要認(rèn)證,點擊“添加”或“Add”按鈕,選擇“Jenkins”來添加憑據(jù)(用戶名和密碼或者私鑰)。
可能出現(xiàn)的問題:
首先需要確認(rèn)選擇的用戶密碼是不是gitlab拉取到的,其次需要確認(rèn)jenkins安裝完插件后是否正常重啟。
這個HTTP ERROR 403 No valid crumb was included in the request錯誤是Jenkins的防跨站請求偽造(CSRF)保護(hù)機(jī)制導(dǎo)致的。當(dāng)你嘗試提交表單時,Jenkins會期望一個有效的“crumb”用于驗證請求,這個錯誤通常發(fā)生在Jenkins的“crumb”驗證沒有正確配置或者客戶端沒有正確提交“crumb”。
解決這個問題的方法通常包括:
禁用CSRF保護(hù)(不推薦):
進(jìn)入Jenkins系統(tǒng)配置(Manage Jenkins -> Configure Global Security)。
取消選中“防止跨站點請求偽造”或類似的選項。
保存設(shè)置。
請注意,禁用CSRF保護(hù)會降低Jenkins的安全性,因此這不是一個推薦的解決方案。
更新Jenkins到最新版本:
有時候,這個問題是由于Jenkins的一個已知問題導(dǎo)致的,更新到最新版本可能可以解決。
確保Jenkins URL配置正確:
在系統(tǒng)配置中檢查Jenkins的根URL設(shè)置是否正確。
清除瀏覽器Cookies和緩存:
有時候,清除瀏覽器的Cookies和緩存可以解決這個問題。
使用API Token代替密碼:
在Jenkins中為你的用戶生成API Token,并在克隆Git倉庫時使用用戶名和API Token代替用戶名和密碼。
通過腳本直接獲取Crumb并使用:
可以通過編寫腳本從Jenkins API獲取crumb,并在之后的請求中使用這個crumb。
重新登錄:
有時候,簡單的重新登錄到Jenkins可以刷新你的session和crumb。
檢查代理或網(wǎng)絡(luò)設(shè)置:
如果你是通過代理服務(wù)器或有特殊網(wǎng)絡(luò)配置訪問Jenkins,確保代理或網(wǎng)絡(luò)設(shè)置不會阻止crumb的傳遞。
從安全的角度出發(fā),建議不要禁用CSRF保護(hù)。你可以嘗試其它的方法來解決這個問題。如果你不確定如何操作,可以聯(lián)系你的系統(tǒng)管理員協(xié)助處理。
4、添加構(gòu)建步驟:
- 首先,在Jenkins的界面上找到你剛剛創(chuàng)建的任務(wù),進(jìn)入該任務(wù)的頁面。
- 在任務(wù)頁面上,點擊“配置”或“Configure”按鈕以進(jìn)入任務(wù)的配置頁面。
- 在配置頁面中,找到“構(gòu)建”或“Build”這一部分。在這一部分,你可以添加不同類型的構(gòu)建步驟。
- 點擊“添加構(gòu)建步驟”(“Add build step”)后,在下拉菜單中選擇“執(zhí)行Shell”(“Execute shell”)或者類似的命令來添加一個Shell腳本執(zhí)行步驟。
在構(gòu)建步驟中,添加Shell腳本來執(zhí)行Docker部署,腳本內(nèi)容大致如下:
#!/bin/bash
cd /path/to/your/zabbix-docker
docker-compose down
docker-compose up -d
注意替換/path/to/your/zabbix-docker為你的實際路徑。
- 編輯完成后,記得點擊頁面底部的“保存”(“Save”)按鈕保存你的配置。
- 保存配置后,回到任務(wù)頁面,點擊“立即構(gòu)建”(“Build now”),Jenkins就會根據(jù)你的腳本來執(zhí)行構(gòu)建任務(wù)。
三、配置GitLab與Jenkins的集成
1、Webhook:
在GitLab項目設(shè)置中,找到Webhooks部分,添加一個新的Webhook,URL設(shè)置為Jenkins任務(wù)的URL,這樣每次GitLab上的代碼更新都會觸發(fā)Jenkins任務(wù)自動運(yùn)行。
- 登錄你的GitLab,然后點擊進(jìn)入你想要設(shè)置Webhook的項目。
- 在項目的側(cè)邊欄菜單中,點擊“設(shè)置”(Settings),然后在下拉菜單中選擇“Webhooks”。
- 這里你需要填入你的Jenkins服務(wù)器的Webhook URL。這個URL通常是你的Jenkins服務(wù)器地址加上/project/你的任務(wù)名。
例如:
http://your-jenkins-server:8080/project/你的任務(wù)名
如果你的Jenkins設(shè)置了安全措施,你可能需要在URL中包含一個訪問令牌。
- 觸發(fā)操作: 選擇你希望觸發(fā)Jenkins任務(wù)的事件,通常是“推送事件”(Push events)。
- Enable SSL verification: 如果你的Jenkins使用的是https并且有有效的SSL證書,可以勾選這個選項。如果你的Jenkins是http或者沒有有效SSL證書,那么取消這個選項。
- 添加Webhook:填寫完畢后,點擊“添加Webhook”或“Add webhook”。
四、測試部署
1、推送更新:
向GitLab倉庫推送任何更新,比如修改docker-compose.yml文件。
2、觀察Jenkins:
推送更新后,Jenkins任務(wù)應(yīng)自動運(yùn)行,開始部署Zabbix。
3、驗證Zabbix部署:
Jenkins任務(wù)完成后,訪問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數(shù)據(jù)庫的“users”表是空的。這通常意味著Zabbix Server嘗試連接到的數(shù)據(jù)庫并沒有被正確初始化或配置。解決這個問題的步驟如下:
確認(rèn)數(shù)據(jù)庫服務(wù)正在運(yùn)行:首先,確保你的數(shù)據(jù)庫服務(wù)(如MySQL或PostgreSQL)正在運(yùn)行,并且Zabbix Server有權(quán)限訪問它。
檢查Zabbix數(shù)據(jù)庫是否已經(jīng)創(chuàng)建:確保你已經(jīng)按照Zabbix的文檔創(chuàng)建了數(shù)據(jù)庫。對于MySQL,可以使用如下命令查看所有數(shù)據(jù)庫:
mysql -u [username] -p -e "SHOW DATABASES;"
初始化數(shù)據(jù)庫:如果Zabbix數(shù)據(jù)庫已經(jīng)創(chuàng)建,但是“users”表為空,那么可能是因為數(shù)據(jù)庫沒有被正確初始化。Zabbix提供了SQL腳本來初始化數(shù)據(jù)庫,這些腳本位于Zabbix源代碼的database/mysql目錄下。可以使用如下命令來初始化數(shù)據(jù)庫(以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]是你的數(shù)據(jù)庫用戶名,[database_name]是你的Zabbix數(shù)據(jù)庫名稱。這些腳本將會創(chuàng)建所需的表并填充一些基礎(chǔ)數(shù)據(jù)。
檢查Zabbix Server配置:確認(rèn)/etc/zabbix/zabbix_server.conf文件中的數(shù)據(jù)庫配置正確無誤,包括數(shù)據(jù)庫類型、名稱、用戶和密碼等。
重啟Zabbix Server:在更正任何配置或初始化數(shù)據(jù)庫后,重啟Zabbix Server:
systemctl restart zabbix-server
如果以上步驟無法解決你的問題,建議檢查Zabbix Server的日志文件以獲取更多錯誤信息,這可能會提供更多關(guān)于問題的線索。日志文件通常位于/var/log/zabbix/zabbix_server.log。文章來源:http://www.zghlxwxcb.cn/news/detail-849370.html
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即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-849370.html
到了這里,關(guān)于基于jenkins+gitlab+docker部署zabbix的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!