熱門(mén)搜索 Zabbix技術(shù)資料 Zabbix常見(jiàn)問(wèn)、答討論 成功案例 Zabbix交流區(qū) Prometheus交流區(qū)
前面尊龍時(shí)凱君有提到過(guò)使用docker來(lái)快速拉起一個(gè)zabbix監(jiān)控系統(tǒng)(詳見(jiàn):如何使用docker快速部署一個(gè)zabbix監(jiān)控系統(tǒng)),但是要一個(gè)個(gè)執(zhí)行docker啟動(dòng)命令去將對(duì)應(yīng)的容器啟動(dòng)。如果要配置參數(shù)多,那敲啟動(dòng)命令就是一件讓人心累的事情。而且敲完后若沒(méi)有保存啟動(dòng)命令,后面的管理也是比較麻煩,并且如果容器數(shù)量較多,還要一個(gè)個(gè)手敲啟動(dòng)命令,這就非常的不方便。
所以為了解決這個(gè)問(wèn)題,并且更加高效的啟動(dòng)一個(gè)zabbix監(jiān)控系統(tǒng)。現(xiàn)在使用docker-compose這個(gè)容器編排工具來(lái)高效的啟動(dòng)zabbix監(jiān)控系統(tǒng)。
Docker-Compose項(xiàng)目是Docker官方的開(kāi)源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì)Docker容器集群的快速編排, 并且提供了 scale (服務(wù)擴(kuò)容) 的功能。
Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(wù)(service)以及容器(container)。Docker-Compose運(yùn)行目錄下的所有文件(docker-compose.yml,extends文件或環(huán)境變量文件等)組成一個(gè)工程,若無(wú)特殊指定工程名即為當(dāng)前目錄名。一個(gè)工程當(dāng)中可包含多個(gè)服務(wù),每個(gè)服務(wù)中定義了容器運(yùn)行的鏡像,參數(shù),依賴。一個(gè)服務(wù)當(dāng)中可包括多個(gè)容器實(shí)例,Docker-Compose并沒(méi)有解決負(fù)載均衡的問(wèn)題,因此需要借助其它工具實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及負(fù)載均衡。
Docker-Compose的工程配置文件默認(rèn)為docker-compose.yml,可通過(guò)環(huán)境變量COMPOSE_FILE或-f參數(shù)自定義配置文件,其定義了多個(gè)有依賴關(guān)系的服務(wù)及每個(gè)服務(wù)運(yùn)行的容器。
使用一個(gè)Dockerfile模板文件,可以讓用戶很方便的定義一個(gè)單獨(dú)的應(yīng)用容器。在工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來(lái)完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè)Web項(xiàng)目,除了Web服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫(kù)服務(wù)容器,甚至還包括負(fù)載均衡容器等。
Compose允許用戶通過(guò)一個(gè)單獨(dú)的docker-compose.yml模板文件(YAML 格式)來(lái)定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。
Docker-Compose項(xiàng)目由Python編寫(xiě),調(diào)用Docker服務(wù)提供的API來(lái)對(duì)容器進(jìn)行管理。因此,只要所操作的平臺(tái)支持Docker API,就可以在其上利用Compose來(lái)進(jìn)行編排管理。
Docker-compose就是通過(guò)docker-compose.yaml文件所定義的容器作為一個(gè)項(xiàng)目,從而進(jìn)行docker容器的管理。下面就對(duì)docker-compose.yaml模板文件的常用基礎(chǔ)語(yǔ)法進(jìn)行一個(gè)簡(jiǎn)單的解釋
Compose 的容器默認(rèn)名稱格式是:<項(xiàng)目名稱><服務(wù)名稱><序號(hào)>
雖然可以自定義項(xiàng)目名稱、服務(wù)名稱,但是如果你想完全控制容器的命名,可以使用這個(gè)標(biāo)簽指定:
比如我要制定一個(gè)mysql容器的名為“mysql-test”,那么
version: ‘3’
services:
??mysql:
container_name: mysql-test
指定服務(wù)的鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會(huì)嘗試?yán)∵@個(gè)鏡像。
比如我要制定一個(gè)mysql容器,使用的鏡像名為“mysql:8.0”,那么
version: ‘3’
services:
??mysql:
image: mysql:8.0
在使用 Compose 時(shí),最大的好處就是少打啟動(dòng)命令,但是一般項(xiàng)目容器啟動(dòng)的順序是有要求的,如果直接從上到下啟動(dòng)容器,必然會(huì)因?yàn)槿萜饕蕾噯?wèn)題而啟動(dòng)失敗。
例如在沒(méi)啟動(dòng)數(shù)據(jù)庫(kù)容器的時(shí)候啟動(dòng)了應(yīng)用容器,這時(shí)候應(yīng)用容器會(huì)因?yàn)檎也坏綌?shù)據(jù)庫(kù)而退出,為了避免這種情況我們需要加入一個(gè)標(biāo)簽,就是 depends_on,這個(gè)標(biāo)簽解決了容器的依賴、啟動(dòng)先后的問(wèn)題。
比如我要先啟動(dòng)一個(gè)MySQL,后啟動(dòng)nginx,那么
version: ‘3’
services:
??nginx:
????image: nginx:1.16.1
????depends_on:
??????– mysql
??mysql:
????image: mysql:8.0
這是設(shè)置鏡像的環(huán)境變量,直接將變量定義到鏡像里面,這樣啟動(dòng)容器時(shí)會(huì)自動(dòng)讀取該環(huán)境變量
如啟動(dòng)一個(gè)MySQL容器,要設(shè)置它的root初始化密碼為“123456”,那
version: ‘3’
services:
??mysql:
????image: mysql:8.0
environment:
??MYSQL_ROOT_PASSWORD: 123456
該參數(shù)是將宿主機(jī)的端口映射到容器端口,從而在宿主機(jī)訪問(wèn)對(duì)應(yīng)的端口能訪問(wèn)到容器內(nèi)。
如要講MySQL容器的3306端口映射到宿主機(jī)的33060端口,那
version: ‘3’
services:
??mysql:
????image: mysql:8.0
ports:-“33060:3306”
掛載一個(gè)目錄或者一個(gè)已存在的數(shù)據(jù)卷容器,可以直接使用 [HOST:CONTAINER] 這樣的格式,或者使用 [HOST:CONTAINER:ro] 這樣的格式,后者對(duì)于容器來(lái)說(shuō),數(shù)據(jù)卷是只讀的,這樣可以有效保護(hù)宿主機(jī)的文件系統(tǒng)。 Compose的數(shù)據(jù)卷指定路徑可以是相對(duì)路徑,使用 . 或者 .. 來(lái)指定相對(duì)目錄。 version: ‘3’ services: mysql: image: mysql:8.0 volumes: -./data:/var/lib/mysql -/var/log/mysql:/var/log/mysql
選擇對(duì)應(yīng)版本下載安裝包
http://github.com/docker/compose/releases?after=1.28.0
上傳到服務(wù)器修改名稱并授權(quán)
mv docker-compose-x86 docker-compose
chmod +x docker-compose
測(cè)試
./docker-compose –v
安裝
mv docker-compose /usr/bin
version: '3.7'
services:
mysql:
container_name: mysql
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: zabbix
MYSQL_ROOT_PASSWORD: zabbix@2022
ports:
- "3306:3306"
volumes:
- /data/mysql:/var/lib/mysql
zabbix-server:
container_name: zabbix_server
image: zabbix/zabbix-server-mysql:latest
restart: always
depends_on:
- mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix@2022
MYSQL_USER: root
DB_SERVER_HOST: 192.168.75.31
DB_SERVER_PORT: 3306
ports:
- "10051:10051"
volumes:
- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
zabbix-web:
container_name: zabbix_web
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
depends_on:
- mysql
- zabbix_server
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix@2022
MYSQL_USER: root
DB_SERVER_HOST: 192.168.75.31
DB_SERVER_PORT: 3306
ZBX_SERVER_HOST: 192.168.75.31
ZBX_SERVER_PORT: 10051
ports:
- "8080:8080"
zabbix-agent:
container_name: zabbix_agent
image: zabbix/zabbix-agent:latest
restart: always
depends_on:
- mysql
- zabbix_server
environment:
ZBX_HOSTNAME: 192.168.75.31
ZBX_SERVER_HOST: 172.18.0.1
ports:
- "10050:10050"
別忘了安裝docker!
編寫(xiě)好zabbix監(jiān)控系統(tǒng)的docker-compose.yaml文件后,就可以啟動(dòng)系統(tǒng)了
Docker-compose up –d
如圖所示,已成功啟動(dòng)
我這邊web端口映射為宿主機(jī)的18080,所以訪問(wèn)zabbix界面,那就是IP+18080
默認(rèn)的賬號(hào)密碼:
Admin
zabbix
如圖,成功訪問(wèn)。
這一期的zabbix技術(shù)內(nèi)容到這就結(jié)束了。我是尊龍時(shí)凱IT君,專(zhuān)注運(yùn)維技術(shù)分享,更多zabbix技術(shù)可以持續(xù)關(guān)注尊龍時(shí)凱官網(wǎng)zabbix技術(shù)分享,還可以查看我的往期內(nèi)容,zabbix服務(wù),zabbix配置,zabbix部署等zabbix服務(wù)解決方案。
我們可以通過(guò)Zabbix監(jiān)控系統(tǒng)日志、nginx、Apache、業(yè)務(wù)日志等等,在海量日志中抓取我們關(guān)心的異常記錄,并且根據(jù)異常情況提供報(bào)警。
View detailszabbix自動(dòng)發(fā)現(xiàn)的python-json模塊應(yīng)用介紹
View detailsagent與snmp是Zabbix兩種重要的監(jiān)控方式,這一期主要介紹Zabbix Agent item監(jiān)控項(xiàng)。
View details通過(guò)zabbix agent監(jiān)控windows進(jìn)程方法介紹
View detailsZabbix憑借其近乎無(wú)所不能的監(jiān)控及優(yōu)越的性能一路高歌猛進(jìn),在開(kāi)源監(jiān)控領(lǐng)域獨(dú)占鰲頭;而作為后起的新銳IT監(jiān)控平臺(tái)——尊龍時(shí)凱監(jiān)控,則不斷吸收Z(yǔ)abbix,Prometheus...
View details制造業(yè)企業(yè)綜合運(yùn)維系統(tǒng)建設(shè)實(shí)踐
View details尊龍時(shí)凱采用分布式實(shí)施,分別對(duì)主機(jī)、網(wǎng)絡(luò)、存儲(chǔ)、數(shù)據(jù)庫(kù)、中間件、應(yīng)用、硬件和虛擬化等實(shí)施一站式監(jiān)控。
View details尊龍時(shí)凱監(jiān)控結(jié)合該銀行發(fā)展在的現(xiàn)狀及發(fā)展需求,幫助其構(gòu)建一個(gè)安全、實(shí)用、可持續(xù)發(fā)展的智能監(jiān)控管理平臺(tái)。
View details尊龍時(shí)凱為該公司部署了集中監(jiān)控、告警系統(tǒng),并配置了可視化視圖和多樣性報(bào)表。
View details