當前位置: 華文世界 > 科技

使用docker在Kylin v10下安裝zabbix 6.4

2024-02-17科技

環境

作業系統:Kylin v10

內核版本: 4.19.90-52.22.v2207.ky10.x86_64

zabbix server版本: 6.4.11

mysql 版本: 8.0

docker版本:23.0.6

安裝docker

這裏是本次安裝需要的所有檔,若為離線環境可以提前下載,docker映像可以透過docker save的方式匯出,復制到離線環境使用docker load 載入即可。

# docker 二進制檔,解壓即用wget https://download.docker.com/linux/static/stable/x86_64/docker-23.0.6.tgz# zabbix server,使用mysql作為數據庫docker pull zabbix/zabbix-server-mysql:alpine-6.4-latest#使用oracle linux映像,mysql 8.0docker pull mysql:8.0-oracle# nginx做前端,zabbix web套用,使用mysql作為數據庫docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest#zabbix 的java gateway元件docker pull zabbix/zabbix-java-gateway:alpine-6.4-latest#這裏有兩種方法,可以透過容器執行agent,也可以下載源碼,編譯生成,建議使用編譯,易適配麒麟系統docker pull zabbix/zabbix-agent2:alpine-6.4-latestwget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.11.tar.gz#kylin v10 docker 修補程式wget https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/x86_64/Packages/docker-engine-18.09.0-101.p03.ky10.x86_64.rpm

#停止firewalld,禁止開機啟動systemctl stop firewalldsystemctl disable firewalld

2.1 解壓docker二進制檔

tar zxvf docker-23.0.6.tgzmv docker/* /usr/bin

2.2 添加docker 為service,並配置開機啟動

cat > /usr/lib/systemd/system/docker.service << EOF[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyExecStart=/usr/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityTimeoutStartSec=0Delegate=yesKillMode=processRestart=on-failureStartLimitBurst=3StartLimitInterval=60s[Install]WantedBy=multi-user.targetEOF

#開機啟動systemctl enable docker

2.3 修改data目錄

mkdir -p /data/dockercat >> /etc/docker/daemon.json << EOF{"data-root": "/data/docker"}EOF#重新載入配置,啟動dockersystemctl daemon-reload && systemctl restart docker

註意:在銀河麒麟作業系統V10上面將docker的cgroup改成systemd以後,建立容器時會出現:「Error response from daemon: OCI runtime create failed: container_linux.go:318: starting container process caused "process_linux.go:281: applying cgroup configuration for process caused "No such device or address"": unknown.」這樣的錯誤。參考文末FAQ進行修補程式安裝即可。

2.4.建立docker網絡

#建立網絡時需註意,預設bridge 使用的172.20.240.0/16 所以如果按照官網後面可能會導致透過宿主機ip+埠無法存取到容器埠。這裏需要改一下ip地址池。

docker network create --subnet 172.23.0.0/16 --ip-range 172.23.241.0/20 zabbix-net

安裝mysql

3.1 建立mysql配置檔

mkdir -p /data/zabbix_mount/mysql/data /data/zabbix_mount/mysql/confcat >> /data/zabbix_mount/mysql/conf/my.cnf << EOF[mysqld]skip-host-cacheskip-name-resolvegeneral_log=ONgeneral_log_file=/var/lib/mysql/mysql.loglog_error=/var/lib/mysql/mysql-error.logdatadir=/var/lib/mysqlsocket=/var/run/mysqld/mysqld.socksecure-file-priv=/var/lib/mysql-filesuser=mysqlmax_connections=40960skip-host-cacheskip-name-resolveskip-sslcharacter-set-server = utf8mb4collation-server = utf8mb4_general_ciinit_connect='SET NAMES utf8mb4'#lower_case_table_names = 1explicit_defaults_for_timestamp = truemax_connect_errors = 600back_log = 110table_open_cache = 600table_definition_cache = 700table_open_cache_instances = 64thread_stack = 512Kexternal-locking = FALSEthread_cache_size = 20interactive_timeout = 1800#wait_timeout = 1800#lock_wait_timeout = 3600skip-log-binpid-file=/var/run/mysqld/mysqld.pid[client]socket=/var/run/mysqld/mysqld.sock!includedir /etc/mysql/conf.d/EOF

3.2 執行,啟動

docker run --name mysql-server -t \-p 3306:3306 \-v /etc/localtime:/etc/localtime:ro \-v /data/zabbix_mount/mysql/data:/var/lib/mysql \-v /data/zabbix_mount/mysql/conf/my.cnf:/etc/my.cnf \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD='Changeme' \-e MYSQL_ROOT_PASSWORD="Changeme" \--network=zabbix-net \--restart unless-stopped \-d mysql:8.0-oracle \--character-set-server=utf8 --collation-server=utf8_bin \--default-authentication-plugin=mysql_native_password

解釋:

-p 埠對映,前面埠為宿主機埠,後面埠為容器埠;

-v volume,以上做了三個掛載,一個時區,保證容器時間與物理機一致,另外兩個是將數據庫數據和配置檔外掛,方便最佳化修改;

-e 為數據庫使用的相關環境變量,密碼需要修改為自己的密碼;

--default-authentication-plugin=mysql_native_password mysql8 預設修改了密碼驗證方式,但是為了套用適配,需要改成mysql_native_password的密碼認證;

-d 背景執行

--network 指定容器網絡

--restart 容器重新開機策略

安裝zabbix元件 java-gateway

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

安裝配置zabbix-server

5.1 建立目錄

mkdir -p /data/zabbix_mount/zabbix/conf

5.2 執行

docker run --name zabbix-server-mysql -t \-v /data/zabbix_mount/zabbix/conf/zabbix_server.conf:/etc/zabbix/zabbix_server.conf \-v /data/zabbix_mount/zabbix/logs:/etc/zabbix/logs \-v /data/zabbix_mount/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD='Changeme' \-e MYSQL_ROOT_PASSWORD='Changeme' \-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \--network=zabbix-net \-p 10051:10051 \--restart unless-stopped \-d zabbix/zabbix-server-mysql:alpine-6.4-latest

安裝配置zabbix-web

mkdir /data/zabbix_mount/nginx/conf -pdocker run --name zabbix-web-nginx-mysql -t \-v /etc/localtime:/etc/localtime:ro \-e ZBX_SERVER_HOST="zabbix-server-mysql" \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD='Changeme' \-e MYSQL_ROOT_PASSWORD='Changeme' \--network=zabbix-net \-e ZBX_SERVER_NAME="運維監控平台" \-p 18080:8080 \--restart unless-stopped \-v /data/zabbix_mount/nginx/conf/nginx.conf:/etc/zabbix/nginx.conf \-d zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest

註意:#若無法存取檢查zabbix-net 是否與其他橋接網絡子網路地址沖突、或firewalld是否忘記關閉。

安裝zabbix-agent

7.1 建立使用者

groupadd --system zabbixuseradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbixmkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbixchown zabbix:zabbix /usr/lib/zabbix

7.2 解壓,編譯,安裝

tar -zvxf zabbix-6.4.11.tar.gz && cd zabbix-6.4.11./configure --prefix=/usr/local/zabbix_agent --enable-agent && make && make install

7.3 建立zabbix-agent.service

cat >> /usr/lib/systemd/system/zabbix-agent.service << 'EOF'[Unit]Description=Zabbix AgentAfter=syslog.targetAfter=network.target[Service]Environment="CONFFILE=/usr/local/zabbix_agent/etc/zabbix_agentd.conf"EnvironmentFile=-/etc/sysconfig/zabbix_agentType=forkingRestart=on-failurePIDFile=/tmp/zabbix_agentd.pidKillMode=control-groupExecStart=/usr/local/zabbix_agent/sbin/zabbix_agentd -c $CONFFILEExecStop=/bin/kill -SIGTERMMAINPIDRestartSec=10sUser=zabbixGroup=zabbix[Install]WantedBy=multi-user.targeEOF

7.4 開機啟動

systemctl enable zabbix-agentsystemctl start zabbix-agent

7.5 做個軟連,方便編輯修改配置

mkdir /etc/zabbixln -s /usr/local/zabbix_agent/etc/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf

7.6. 修改zabbix_agentd.conf

Server 改為容器地址或宿主機IP

ServerAcitvice改為容器地址或宿主機IP

登入web,將web上的zabbix-server地址改為宿主機IP

FAQ

8.1.問題描述

描述1:在銀河麒麟作業系統V10上面將docker的cgroup改成systemd以後。啟動容器報錯

報錯資訊:docker: Error response from daemon: OCI runtime create failed: container_linux.go:318: starting container process caused "process_linux.go:281: applying cgroup configuration for process caused "No such device or address"": unknown.

8.2.軟件包修復版本

·銀河麒麟高級伺服器作業系統 V10 SP1 (aarch64、x86_64)

docker-engine-18.09.0-101.p03.ky10或以上版本

8.3.修復方法

方法一:配置源進行升級安裝

1.開啟軟件包源配置檔,根據倉庫地址進行修改。

倉庫源地址:

銀河麒麟高級伺服器作業系統 V10 SP1

aarch64:https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/aarch64/

x86_64:https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/x86_64/

2.配置完成後執行更新命令進行升級,命令如下:

yum update Packagename

方法二:下載安裝包進行升級安裝

透過軟件包地址下載軟件包,使用軟件包升級命令根據受影響的軟件包

列表進行升級安裝, 命令如下:

yum install Packagename

8.4.軟件包下載地址

·銀河麒麟高級伺服器作業系統 V10 SP1

docker-engine(aarch64)軟件包下載地址:

https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/aarch64/Packages/docker-engine-18.09.0-101.p03.ky10.aarch64.rpm

docker-engine(x86_64)軟件包下載地址:

https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/x86_64/Packages/docker-engine-18.09.0-101.p03.ky10.x86_64.rpm

註:其他相關依賴包請到相同目錄下載

8.5.修復驗證

使用軟件包查詢命令,檢視相關軟件包版本是否與修復版本一致,如果版本一致,則說明修復成功。

rpm -qa | grep Packagename