Docker 方式安装 Zabbix 7.0 LTS 支持版本

文章目录

      • 1. 介绍
        • (1)zabbix 官网可用的 docker 镜像
        • (2)zabbix 镜像常用的挂载点
      • 2. 安装配置 zabbix server
      • 3. 配置

1. 介绍

(1)zabbix 官网可用的 docker 镜像

在 Docker Hub 中可用的镜像:

// zabbix agent

zabbix/zabbix-agent

// zabbix server

zabbix/zabbix-server-mysql
zabbix/zabbix-server-pgsql

// zabbix web

zabbix/zabbix-web-apache-mysql
zabbix/zabbix-web-apache-pgsql

zabbix/zabbix-web-nginx-mysql
zabbix/zabbix-web-nginx-pgsql

// zabbix proxy

zabbix/zabbix-proxy-sqlite3
zabbix/zabbix-proxy-mysql

// zabbix java gateway

zabbix/zabbix-java-gateway

// snmp traps

zabbix/zabbix-snmptraps
(2)zabbix 镜像常用的挂载点

// zabbix agent

描述
/etc/zabbix/zabbix_agentd.d 这个 volume 允许包含 *.conf 文件并使用 UserParameter 扩展 Zabbix agent。
/var/lib/zabbix/modules 这个 volume 允许加载其它 module 并使用 LoadModule 功能扩展 Zabbix agent。
/var/lib/zabbix/enc 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。

// zabbix server

描述
/usr/lib/zabbix/alertscripts 这个 volume 用于自定义告警脚本。即 zabbix_server.conf 中的 AlertScriptsPath 参数。
/usr/lib/zabbix/externalscripts 这个 volume 用于 外部检查。即 zabbix_server.conf 中的 ExternalScripts 参数。
/var/lib/zabbix/modules 这个 volume 允许通过 LoadModule 功能加载额外的模块以扩展 Zabbix server。
/var/lib/zabbix/enc 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。
/var/lib/zabbix/ssl/certs 这个 volume 用于存放客户端认证的 SSL 客户端认证文件。即 [zabbix_server.conf] 中的 SSLCertLocation 参数。
/var/lib/zabbix/ssl/keys 这个 volume 用于存放客户端认证的 SSL 私钥文件。即 zabbix_server.conf 中的 SSLKeyLocation 参数。
/var/lib/zabbix/ssl/ssl_ca 这个 volume 用于存放 SSL 服务器证书认证的证书颁发机构(CA)文件。即 zabbix_server.conf 中的 SSLCALocation 参数。
/var/lib/zabbix/snmptraps 这个 volume 用于存放 snmptraps.log 文件。它可由 zabbix-snmptraps 容器共享,并在创建 Zabbix server 新实例时使用 Docker 的 --volumes-from 选项继承。可以通过共享 volume ,并将 ZBX_ENABLE_SNMP_TRAPS 环境变量切换为 ‘true’ 以启用 SNMP trap 处理功能。
/var/lib/zabbix/mibs 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。

// zabbix proxy

描述
/usr/lib/zabbix/externalscripts 这个 volume 用于 外部检查。即 zabbix_proxy.conf 中的 ExternalScripts 参数。
/var/lib/zabbix/modules 这个 volume 允许通过 LoadModule 功能加载额外的模块以扩展 Zabbix server。
/var/lib/zabbix/enc 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。
/var/lib/zabbix/ssl/certs 这个 volume 用于存放客户端认证的 SSL 客户端认证文件。即 zabbix_proxy.conf 中的 SSLCertLocation 参数。
/var/lib/zabbix/ssl/keys 这个 volume 用于存放客户端认证的 SSL 私钥文件。即 zabbix_proxy.conf 中的 SSLKeyLocation 参数。
/var/lib/zabbix/ssl/ssl_ca 这个 volume 用于存放 SSL 服务器证书认证的证书颁发机构(CA)文件。即zabbix_proxy.conf 中的 SSLCALocation 参数。
/var/lib/zabbix/snmptraps 这个 volume 用于存放 snmptraps.log 文件。它可由 zabbix-snmptraps 容器共享,并在创建 Zabbix server 新实例时使用 Docker 的 --volumes-from 选项继承。可以通过共享 volume ,并将 ZBX_ENABLE_SNMP_TRAPS 环境变量切换为 ‘true’ 以启用 SNMP trap 处理功能。
/var/lib/zabbix/mibs 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。

// 基于 Apache2 的 Zabbix web

描述
/etc/ssl/apache2 这个 volume 允许为 Zabbix Web 界面启用 HTTPS。这个 volume 必须包含为 Apache2 SSL 连接准备的 ssl.crt 和 ssl.key 两个文件。

// 基于 Nginx 的 Zabbix web

描述
/etc/ssl/nginx 这个 volume 允许为 Zabbix Web 接口启用 HTTPS。这个 volume 必须包含为 Nginx SSL 连接装备的 ssl.crt 和 ssl.key 两个文件。

// Zabbix snmptraps

描述
/var/lib/zabbix/snmptraps 这个 volume 包含了已接收到的 SNMP traps 命名的 snmptraps.log日志文件。
/var/lib/zabbix/mibs 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。

2. 安装配置 zabbix server

// 启动 mysql 服务器实例

$ mkdir -p /data/mysql8/data
$ cat > /data/mysql8/my.cnf <<EOF
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# 最大连接数,默认为168
max_connections=1024
thread_cache_size = 50 # 线程缓存大小,减少线程创建开销
table_open_cache = 2000 # 表缓存大小,依据最大并发量调整

# 日志和查询优化
slow_query_log = 1 # 开启慢查询日志
long_query_time = 1 # 慢查询阈值(秒)
log_queries_not_using_indexes = 1 # 记录未使用索引的查询

# 字符集
character-set-server = utf8mb4 # 设置字符集为utf8mb4以支持更多字符类型
collation-server = utf8mb4_bin # 设置校对规则

# 其他
skip-name-resolve # 跳过域名解析,加快连接速度
default-time-zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
EOF

$ docker run --name mysql8 -d --restart=always -p 3306:3306 \
      -v /data/mysql8/data:/var/lib/mysql \
      -v /data/mysql8/my.cnf:/etc/mysql/my.cnf \
      -e MYSQL_ROOT_PASSWORD=${MYSQL_PASS}  --privileged=true \
      mysql:8.0.41

// 启动 zabbix-server

$ docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="192.168.11.206" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="xiodi.cn123456" \
      -e MYSQL_ROOT_PASSWORD="xiodi.cn123" \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-7.0-latest

[danger]发现 /etc/zabbix/zabbix-server.conf 没办法映射到外部,因为这个容器它会往这个文件中写内容,映射完会出现无法写入的现象。后续再观察看看。

// 启动前端(nginx和php)

$ docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="192.168.11.206" \
      -e DB_SERVER_HOST="192.168.11.206" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="xiodi.cn123456" \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest

// 启动 zabbix agent2

$ mkdir -pv /data/zabbix/{zabbix_agentd.d,user_scripts}
$ cat > /data/zabbix/zabbix_agentd.d/custom.conf <<EOF
Server=192.168.11.206,172.17.0.1
ServerActive=192.168.11.206
Hostname=Zabbix server
ListenPort=10050
ListenIP=0.0.0.0
EOF

$ docker run --name zabbix-agent2 -p 10050:10050 \
    -v /data/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d \
    -v /data/zabbix/user_scripts:/var/lib/zabbix/user_scripts \
    --restart unless-stopped \
    -d zabbix/zabbix-agent2:alpine-7.0-latest

3. 配置

浏览器登录:http://IP:80
Docker 方式安装 Zabbix 7.0 LTS 支持版本_第1张图片

默认用户名密码: Admin / zabbix

// 更改默认添加的主机IP
Docker 方式安装 Zabbix 7.0 LTS 支持版本_第2张图片

更改的原因是:我们这里的 zabbix agent 使用的是 docker 部署,使用 127.0.0.1 是不通的。

你可能感兴趣的:(Zabbix,docker,zabbix,容器)