前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Docker部署4.4版本的zabbix监控平台

基于Docker部署4.4版本的zabbix监控平台

作者头像
没有故事的陈师傅
发布2020-04-10 11:56:16
2.5K1
发布2020-04-10 11:56:16
举报
文章被收录于专栏:运维开发故事运维开发故事
1 准备工作

server主机

ip:172.19.204.200

基础环境

cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

2 dcoker安装

关闭防火墙:

代码语言:javascript
复制
systemctl stop firewalld
systemctl disable firewalld

关闭selinux:

代码语言:javascript
复制
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

安装依赖包

代码语言:javascript
复制
yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker软件包源

代码语言:javascript
复制
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker ce

代码语言:javascript
复制
yum install -y docker-ce

启动Docker服务并设置开机启动

代码语言:javascript
复制
systemctl start docker
systemctl enable docker

查看版本号

代码语言:javascript
复制
[root@localhost ~]# docker versionClient: Docker Engine - Community Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89 Built: Thu Jul 25 21:21:07 2019 OS/Arch:
linux/amd64 Experimental: falseServer: Docker Engine - Community Engine:
Version: 19.03.1 API version: 1.40 (minimum version 1.12)
Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:19:36 2019
OS/Arch: linux/amd64
Experimental: false
containerd: Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init: Version: 0.18.0
GitCommit: fec3683

配置镜像加速器

代码语言:javascript
复制
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

重启docker

代码语言:javascript
复制
systemctl restart docker
docker安装完毕!

3 zabbix server端操作

提供两种不同的安装方式,两种方式都可以,自己根据实际情况选择,也可以跟我文档一样搭建两套,为了方便后期管理yml,个人建议使用3.2小节的安装方式,单机编排

3.1 采用zabbix官网中的docker安装章节内容,在官方镜像库中拉取镜像的方式进行安装

https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

本文档主机的本地目录结构目录在/home/zabbix下,设置了用于保存容器的数据,其它目录根据实际应用情况可选,以下操作命令需要连接外网进行镜像拉取,没有外网需要离线下载镜像包

1)启动一个单独的数据库mysql用于保存zabbix数据

代码语言:javascript
复制
docker run  --name zabbix-mysql -t \
-p 3306:3306 \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-v /home/zabbix/data:/var/lib/mysql \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin

定义了数据库名zabbix,数据库用户zabbix,密码zabbix,在本地目录/home/zabbix/data中持久化保存mysql容器运行中的数据,确保容器退出运行后,数据不会丢失,最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题;

2)启动zabbix server服务,

启动zabbix server服务并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中,挂载在本地目录中的还有其它一些内容,根据生产环境实际情况灵活决定是否挂载,如果挂载可以通过容器直接加载本地目录中的脚本或认证信息,镜像版本使用的centos版本,便于后续能够使用python脚本,预装了py环境

  • 准备zabbix server的配置文件

因为一会创建zabbix server的容器的时候,会把使用bing Mounting的方式把配置文件目录挂载到宿主机上,为了方便后修改和优化,因此需要提前准备配置文件

代码语言:javascript
复制
[root@node2 opt]# mkdir -p /home/zabbix/zabbixconfig
[root@node2 opt]# wget https://raw.githubusercontent.com/sunsharing-note/zabbix/master/zabbix_server.conf
[root@node2 opt]# mv zabbix_server.conf /home/zabbix/zabbixconfig/
  • 启动zabbix server容器
代码语言:javascript
复制
docker run  --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link zabbix-mysql:mysql \
-v /home/zabbix/zabbixconfig:/etc/zabbix \
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-v /home/zabbix/modules:/var/lib/zabbix/modules \
-v /home/zabbix/enc:/var/lib/zabbix/enc \
-v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \
-v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \
-v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \
-v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
-v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \
-v /home/zabbix/export:/var/lib/zabbix/export \
-v /home/zabbix/mibs:/var/lib/zabbix/mibs \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:centos-latest

挂载说明:

/usr/lib/zabbix/alertscripts

该卷用于保存自定义警报脚本,它是AlertScriptsPath参数zabbix_server.conf

/usr/lib/zabbix/externalscripts

外部检查(项目类型)使用该卷,它是ExternalScripts参数zabbix_server.conf

/etc/zabbix

该卷用于保存zabbix-server端的配置文件

/var/lib/zabbix/modules

该卷允许加载其他模块并使用LoadModule功能扩展Zabbix服务器。

/var/lib/zabbix/enc

该卷用于存储TLS相关文件。这些文件的名称使用规定ZBX_TLSCAFILE,ZBX_TLSCRLFILE,ZBX_TLSKEY_FILE和ZBX_TLSPSKFILE变量。

/var/lib/zabbix/ssh_keys

该卷用作SSH检查和操作的公钥和私钥的位置。它是SSHKeyLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/certs

该卷用作客户端身份验证的SSL客户端证书文件的位置。它是SSLCertLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/keys

该卷用作客户端身份验证的SSL私钥文件的位置。它是SSLKeyLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/ssl_ca

该卷用作SSL服务器证书验证的证书颁发机构(CA)文件的位置。它是SSLCALocation参数zabbix_server.conf。

/var/lib/zabbix/snmptraps

该卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在创建Zabbix服务器的新实例时使用Docker选项继承。

可以使用共享卷和交换ZBX_ENABLE_SNMP_TRAPS环境变量来启用SNMP陷阱处理功能true。

/var/lib/zabbix/mibs

该卷允许添加新的MIB文件。它不支持子目录,必须放置所有MIB /var/lib/zabbix/mibs

备注:通常会用到的是存放脚本的路径和配置文件的路径

3)启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例

代码语言:javascript
复制
docker run --rm --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="zabbix-mysql" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -e PHP_TZ="Asia/Shanghai" \
      --link zabbix-mysql:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 8080:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

--link zabbix-mysql:mysql 连接数据库实例,zabbix-mysql必须要与第一步的--name zabbix-mysql完全一致

--link zabbix-server-mysql:zabbix-server 连接zabbix服务器实例,zabbix-server-mysql必须要与第二步的--name zabbix-server-mysql完全一致

DB_SERVER_HOST变量的值要与第二步指定的-e DB_SERVER_HOST="mysql-server"一致

4)检查安装的三个容器是否都正常启动

以下状态就是三个容器全部正常启动

如果有没有启动可以使用查看所有容器列表

代码语言:javascript
复制
[root@k8s-node02 ]# docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                               NAMES
806bb4e343eb        zabbix/zabbix-web-nginx-mysql:latest       "docker-entrypoint.sh"   3 seconds ago       Up 2 seconds        443/tcp, 0.0.0.0:8080->80/tcp       zabbix-web-nginx-mysql
5019b0a1270b        zabbix/zabbix-server-mysql:centos-latest   "/sbin/tini -- /usr/…"   52 seconds ago      Up 51 seconds       0.0.0.0:10051->10051/tcp            zabbix-server-mysql
10b96eba5138        mysql:5.7                                  "docker-entrypoint.s…"   9 minutes ago       Up 9 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-server

找到未能启动的容器ID,然后查看日志 docker logs

5)宿主机上,使用正常的zabbix-agent的安装,不使用容器安装,不然有些数据会采集成容器中的数据

代码语言:javascript
复制
[root@node2 opt]# rpm -ivh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.5-1.el7.x86_64.rpm
[root@node2 opt]# yum install zabbix-agent -y
#vim /etc/zabbix/zabbix_agentd.conf #修改配置文件
Server=172.17.0.3
ServerActive=172.17.0.3:10050
Hostname=Zabbix server
#systemctl restart zabbix-agent
#systemctl enable zabbix-agent

注意:因为刚才的zabbix server采用的是默认网桥模式,如果要对宿主机进行监控,请编辑宿主机的zabbix_agentd.conf,将Server地址,默认127.0.0.1,修改为docker-server容器地址,否则不通;如果是对其他主机的监控则使用docker-zabbix-server宿主机的IP

6)验证登陆主机8080端口,查看是否能正常登陆

使用安装zabbix server的主机ip加端口8080登录,账号Admin,密码zabbix,默认是英文,白色背景,可以在右上角的用户按钮选项中调整语言和背景颜色

7) 添加zabbix server主机监控

image.png

3.2 使用docker-compose进行安装

1)安装docker-compose

代码语言:javascript
复制
# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
docker-compose version 1.23.1, build b02f1306

2)准备zabbix server配置文件

因为一会创建zabbix server的容器的时候,会把配置文件目录挂载到宿主机上,为了方便后修改和优化,因此需要提前准备配置文件

代码语言:javascript
复制
[root@k8s-node02 ~]# mkdir /opt/docker-zabbix-server
[root@k8s-node02 ~]# cd /opt/docker-zabbix-server/
[root@k8s-node02 docker-zabbix-server]# mkdir -p zabbix/zabbixconfig/
[root@k8s-node02 docker-zabbix-server]# wget https://raw.githubusercontent.com/sunsharing-note/zabbix/master/zabbix_server.conf
[root@k8s-node02 docker-zabbix-server]# mv zabbix_server.conf zabbix/zabbixconfig/

2)编写yml编排文件

yml中的端口,因为我刚才已经创建了一套zabbix,宿主机上已经占用端口了,因此我这里的宿主机端口都进行了修改

代码语言:javascript
复制
[root@k8s-node02 docker-zabbix-server]# vim docker-compose.yml
version: '3'
services:
  zabbix-mysql:
    image: mariadb:latest
    ports:
        - "3309:3306"
    volumes:
        - ./zabbix/data/mysqllib:/var/lib/mysql
    environment:
        - MYSQL_USER=zabbix
        - MYSQL_DATABASE=zabbix
        - MYSQL_PASSWORD=zabbix
        - MYSQL_ROOT_PASSWORD=123321
        - character-set-server=utf8
        - collation-server=utf8_bin
    restart: always
  zabbix-server:
    image: zabbix/zabbix-server-mysql:centos-latest
    restart: always
    ports:
      - "10052:10051"
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_USER=zabbix
      - MYSQL_DATABASE=zabbix
      - MYSQL_PASSWORD=zabbix
      - DB_SERVER_ROOT_USER=root
      - DB_SERVER_ROOT_PASS=123321
      - TZ='Asia/Shanghai'
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./zabbix/zabbixconfig/:/etc/zabbix/
      - ./zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - ./zabbix/externalscripts:/usr/lib/zabbix/externalscripts
      - ./zabbix/modules:/var/lib/zabbix/modules
      - ./zabbix/enc:/var/lib/zabbix/enc
      - ./zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
      - ./zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
      - ./zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
      - ./zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
      - ./zabbix/snmptraps:/var/lib/zabbix/snmptraps
      - ./zabbix/mibs:/var/lib/zabbix/mibs
    depends_on:
      - zabbix-mysql
  zabbix-web-nginx:
    image: zabbix/zabbix-web-nginx-mysql:latest
    restart: always
    ports:
      - "8088:80"
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_ROOT_PASSWORD=123321
      - ZBX_SERVER_HOST=zabbix-server
      - PHP_TZ="Asia/Shanghai"
      - TZ='Asia/Shanghai'
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    links:
      - zabbix-mysql
      - zabbix-server
   zabbix-agent:
    image: zabbix/zabbix-agent:latest
    environment:
      - ZBX_HOSTNAME=Zabbix server
      - ZBX_SERVER_HOST=zabbix-server
      - ZBX_SERVER_PORT=10051
      - TZ='Asia/Shanghai'
    ports:
      - "10053:10050"
    restart: always
    privileged: true

对于宿主机上的监控,个人建议使用yum或者二进制agent,可以把docker-compose中的zabbix-agent去掉,然后再docker-compose up -d

3)加载yml编排文件(需要等待一些时间,因为需要下载镜像)

代码语言:javascript
复制
[root@k8s-node02 docker-zabbix-server]# docker-compose -f docker-compose.yml up -d

4)加载完之后查看容器组是否运行

代码语言:javascript
复制
[root@node2 docker-zabbix-server]# docker-compose ps
                 Name                                Command               State               Ports
----------------------------------------------------------------------------------------------------------------
docker-zabbix-server_zabbix-agent_1       /sbin/tini -- /usr/bin/doc ...   Up      0.0.0.0:10053->10050/tcp
docker-zabbix-server_zabbix-mysql_1       docker-entrypoint.sh mysqld      Up      0.0.0.0:3309->3306/tcp
docker-zabbix-server_zabbix-server_1      /sbin/tini -- /usr/bin/doc ...   Up      0.0.0.0:10052->10051/tcp
docker-zabbix-server_zabbix-web-nginx_1   docker-entrypoint.sh             Up      443/tcp, 0.0.0.0:8088->80/tcp

5)访问web测试

image.png

image.png

4 zabbix agent端操作

1 如果该主机安装了docker就可以,一样可以使用docker-compose,编写编排yml文件安装,根据主机ip地址修改第8行ip

代码语言:javascript
复制
# mkdir /opt/zabbix-agent
# cd /opt/zabbix-agent
# vim docerk-compose.yml
version: '3'
services:
  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    environment:
      - ZBX_HOSTNAME=172.19.204.201
      - ZBX_SERVER_HOST=172.19.204.200
      - ZBX_SERVER_PORT=10051
      - TZ='Asia/Shanghai'
    network_mode: bridge
    ports:
      - "10050:10050"
    restart: always
    privileged: true

加载编排文件

docker-compose -f docker-compose.yml up -d

查看容器是否启动成功

docker-compose ps

如果主机没有安装docker,则使用rpm包进行安装即可,见zabbix-server主机的agent安装步骤

5 web端操作

验证登陆主机8080端口,查看是否能正常登陆,使用安装zabbix server的主机ip加端口8080登录,账号admin,密码zabbix,默认是英文,白色背景,可以在右上角的用户按钮选项中调整语言和背景颜色,在配置选项中添加刚才安装的agent的主机

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • server主机
  • 基础环境
  • 2 dcoker安装
    • 关闭防火墙:
      • 关闭selinux:
        • 安装依赖包
          • 添加Docker软件包源
            • 安装Docker ce
              • 启动Docker服务并设置开机启动
                • 查看版本号
                  • 配置镜像加速器
                    • 重启docker
                    • 3 zabbix server端操作
                      • 3.1 采用zabbix官网中的docker安装章节内容,在官方镜像库中拉取镜像的方式进行安装
                        • 1)启动一个单独的数据库mysql用于保存zabbix数据
                        • 2)启动zabbix server服务,
                        • 3)启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例
                        • 4)检查安装的三个容器是否都正常启动
                        • 5)宿主机上,使用正常的zabbix-agent的安装,不使用容器安装,不然有些数据会采集成容器中的数据
                        • 6)验证登陆主机8080端口,查看是否能正常登陆
                        • 7) 添加zabbix server主机监控
                      • 3.2 使用docker-compose进行安装
                        • 1)安装docker-compose
                        • 2)准备zabbix server配置文件
                        • 2)编写yml编排文件
                        • 3)加载yml编排文件(需要等待一些时间,因为需要下载镜像)
                        • 4)加载完之后查看容器组是否运行
                        • 5)访问web测试
                    • 4 zabbix agent端操作
                    • 5 web端操作
                    相关产品与服务
                    云数据库 SQL Server
                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档