• 设备
    • 今日
    • 1

    在Ubuntu18中基于docker安装部署Zabbix

    部署环境:
    Ubuntu18
    Zabbix Server 4.2.6

    Zabbix Agent [VboxUbuntu]. Zabbix 4.2.6
    Server version: 5.7.27 MySQL Community Server (GPL)


    Ubuntu安装Docker 适合Ubuntu18.04版本
    Docker介绍
    Docker是一个开源的容器引擎,它有助于更快地交付产品。Docker可将应用程序和基础设施层隔离,并且将基础设施当作程序一样进行管理。使用Docker,可以更快地打包,测试以及部署应用程序,并可以缩短从编程到部署运行代码的周期。

    Docker架构
    Docker daemon

    守护进程,运行在宿主机(DOCKER_HOST)的后台进程,可通过Docker客户端与之通信。

    Client 
    Docker客户端时Docker的用户界面,可以接受用户命令和配置标识,并且Docker daemon通信

    Images 
    Docker镜像是一个只读模板,包含创建Docker容器的说明。Docker镜像可以运行Docker镜像中的程序。

    Container 
    容器是镜像的可运行实例。镜像与容器类似与面向对象中类与对象的关系。可通过Docker API或者CLI命令起停,移动,删除等。

    Register 
    Docker Register是一个集中存储与分发镜像的服务。构建完Docker镜像后,就可在当前宿主机上运行。但如果想在其他机器上运行这个镜像,就需要手动复制。此时可以借助Docker Register避免复制。 
    一个Docker Register可以包含多个Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个Docker镜像。

    apt install php7.2-cli
    apt install hhvm

    安装Docker
    其实开源的应用,官网都有正确的安装教程(英文版),本章按照官网的教程安装。

    安装仓库
    安装Docker社区版仓库
    sudo apt install curl
    sudo apt-get update
    ------
    sudo apt-get -y install \
      apt-transport-https \
      ca-certificates \
      curl
    ------
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    ------
    sudo add-apt-repository \
           "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
           $(lsb_release -cs) \
           stable"
    ------
    sudo apt-get update
    ------
    ××××××××××××××××××××××××××××××××××××××××××××××如果出现一下情况××××××××××××××××××××××××××××××××××××××××××××××××××
    出现这个问题可能是有另一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新没有正常完成,解决办法就是删掉。
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    ××××××××××××××××××××××××××××××××××××××××××××××××解决方案××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

    获取Docker社区版
    在Ubuntu上安装最新的Docker社区版
    sudo apt-get -y install docker-ce

    测试你的Docker社区版是否安装成功
    sudo docker run hello-world

    Unable to find image 'hello-world:latest' locally
    ......
    -----------
    要是出现上述Unable...则:
    配置镜像加速
    sudo docker run hello-world的时候可能会出现timeout,应用国内访问Docker Hub不稳定。建议改成阿里云或者DaoCloud。本节以阿里云为例。
    注册阿里云账户
    访问https://cr.console.aliyun.com/#/accelerator
    在镜像中心-镜像加速器
    可以获得自己的加速器 https://××××××.mirror.aliyuncs.com(https://n22cg6p1.mirror.aliyuncs.com)

    在/etc/default/docker 中,加入加速器路径:
    echo "DOCKER_OPTS=\"--registry-mirror=https://n22cg6p1.mirror.aliyuncs.com\"" | sudo tee -a /etc/default/docker
    -----------
    sudo service docker restart
    安装后可查看版本
    docker version

     Client: Docker Engine - Community
     Version:           19.03.2
     API version:       1.40
     Go version:        go1.12.8
     Git commit:        6a30dfc
     Built:             Thu Aug 29 05:29:11 2019
     OS/Arch:           linux/amd64
    ...


    安装成功如下:
    sudo docker run hello-world
    -----
    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.

    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/

    For more examples and ideas, visit:
     https://docs.docker.com/get-started/
    ------

    Docker安装Zabbix
    docker搭建zabbix的组合是mysql+docker+zabix-server

    1 先安装数据库mysql
    su root
    sudo mkdir -p ~/zabbix/mysql/data ~/zabbix/mysql/logs ~/zabbix/mysql/conf
    vi ~/zabbix/mysql/conf/my.cnf
    [mysqld]
    datadir=/root/zabbix/mysql/data

    cd ~/zabbix/mysql/
    sudo docker pull mysql:5.7

    sudo docker run --name zabbix-DB \
    -e MYSQL_ROOT_PASSWORD="123456" \
    -e MYSQL_USER="zabbix" \
    -e MYSQL_PASSWORD="111111" \
    -e MYSQL_DATABASE="zabbix" \
    -v ~/zabbix/mysql/conf/my.cnf:/etc/my.cnf \
    -v ~/zabbix/mysql/logs:/logs \
    -v ~/zabbix/mysql/data:/mysql_data \
    -v /etc/localtime:/etc/localtime:ro \
    -p 3306:3306 \
    -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin

    2 创建zabbix-server
    sudo docker pull zabbix/zabbix-server-mysql:latest   \\sudo docker pull zabbix/zabbix-server-mysql:ubuntu-4.2.5-latest

    sudo docker run --name zabbix-server \
    --link zabbix-DB:mysql \
    -e DB_SERVER_HOST="192.168.1.114" \
    -e DB_SERVER_PORT=3306 \
    -e MYSQL_USER="zabbix" \
    -e MYSQL_DATABASE="zabbix" \
    -e MYSQL_PASSWORD="111111" \
    -v /etc/localtime:/etc/localtime:ro \
    -v ~/zabbix/zabbix-server/data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
    -v ~/zabbix/zabbix-server/data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
    -p 10051:10051 \
    -d zabbix/zabbix-server-mysql:latest

    3 安装zabbix-web-nginx

    sudo docker pull zabbix/zabbix-web-nginx-mysql:latest

    sudo docker run --name zabbix-web \
    --link zabbix-DB:mysql \
    --link zabbix-server:zabbix-server \
    -e DB_SERVER_HOST="192.168.1.114" \
    -e DB_SERVER_PORT=3306 \
    -e MYSQL_USER="zabbix" \
    -e MYSQL_PASSWORD="111111" \
    -e MYSQL_DATABASE="zabbix" \
    -e ZBX_SERVER_HOST="VboxUbuntu" \
    -e PHP_TZ="Asia/Shanghai" \
    -v /etc/localtime:/etc/localtime:ro \
    -p 8000:80 \
    -p 1443:443 \
    -d zabbix/zabbix-web-nginx-mysql:latest

    登录访问测试,浏览器访问ip:8000查看
    http://192.168.1.114:8000
    默认登录
    username:Admin
    password:zabbix
    这里说明下,mysql、nginx在实际生产环境下,需要做数据卷的映射,防止数据丢失。
    ***配置-动作->Report problems to Zabbix administrators 启动

    4 安装 zabbbix-agent
    **ServerActive=来自docker zabbix-server 的内网ip

    cd /usr/local/src/
    wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-2%2Bbionic_all.deb
    dpkg -i zabbix-release_4.2-2+bionic_all.deb
    apt update
    cat /etc/zabbix/zabbix_agentd.conf 
    Server=192.168.1.114,172.17.0.3
    ServerActive=192.168.1.114,172.17.0.3
    Hostname=VboxUbuntu
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    #UserParameter=check_log,sudo /bin/bash /etc/zabbix/check_log.sh
    UserParameter=check_log, /etc/zabbix/check_log.sh
    AllowRoot=1
    DebugLevel=3
    UnsafeUserParameters=1

    -----------------------------
    4 安装方法二:docker-zabbbix-agent
    sudo docker pull zabbix/zabbix-agent:latest

    sudo docker run --name zabbix-agent \
    --link zabbix-server:zabbix-server \
    -e ZA_Server=192.168.1.114,172.17.0.1 \
    -e ZA_ServerActive=192.168.1.114,172.17.0.1 \
    -e ZBX_SERVER_HOST="192.168.1.114,172.17.0.1" \
    -e ZBX_SERVER_PORT=10051 \
    -e ZBX_HOSTNAME="VboxUbuntu" \
    -v /dev/sdc:/dev/sdc \
    -p 10050:10050 \
    -d zabbix/zabbix-agent:latest

    -----------------------------
    zabbix-server已自动添加到监控主机中.
    最后需要在web端将其它zabbix-agent添加到zabbix-server的host列表里面。

    5.zabbix java gateway安装
    sudo docker run --name zabbix-java-gateway -t \
    -d zabbix/zabbix-java-gateway:latest



     报错处理
    no active checks on server [*.*.*.*:10051]: host [*] not found
    zabbix_agentd.log
    错误一
    no active checks on server [*.*.*.*:10051]: host [*] not found
    出现该错误的原因是一般是zabbix_agentd.conf里面的Hostname和前端zabbix web(Monitoring->Configuration->Hosts 页面的Name)里面的配置不一样所造成的
    解决
    在zabbix web页面Monitoring->Configuration->Hosts 页面更改Host name和zabbix_agentd.conf里面的Hostname一样。

    中文是框框: 修改docker的字体
    c:\Windows\Fonts>copy simsun.ttc d:\simsun.ttf
    #####c:\Windows\Fonts>copy 方正粗黑宋简体.ttf d:\fz.ttf
    ftp上传simsun.ttf文件
    cp simsun.ttf zabbix-web:/usr/share/zabbix/assets/fonts/simsun.ttf
    docker ps //查询web容器ID:f30c4b90dfca
    docker exec -it f30c4b90dfca bash // (进入docker的web容器)
    vim /usr/share/zabbix/include/defines.inc.php
    define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
    define('ZBX_FONT_NAME', 'DejaVuSans');

    define('ZBX_GRAPH_FONT_NAME', 'simsun');
    define('ZBX_FONT_NAME', 'simsun');

    ---------
    vi /etc/zabbix/zabbix_server.conf

    LogType=console
    DBHost=mysql-server
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix_pwd
    DBPort=3306
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    FpingLocation=/usr/sbin/fping
    Fping6Location=/usr/sbin/fping6
    SSHKeyLocation=/var/lib/zabbix/ssh_keys
    SSLCertLocation=/var/lib/zabbix/ssl/certs/
    SSLKeyLocation=/var/lib/zabbix/ssl/keys/
    SSLCALocation=/var/lib/zabbix/ssl/ssl_ca/
    LoadModulePath=/var/lib/zabbix/modules/
    --------------

    错误二:
    点出右上角管理按钮时出错:
    Uncaught Error: Call to undefined function mime_content_type()
    thrown in /usr/share/zabbix/include/sounds.inc.php on line 27
    将原函数修改为:
    function getSounds() {
            $fileList = [];
            $dir = scandir('./audio');
            foreach ($dir as $file) {
                    if (!preg_match('/^([\w\d_]+)\.(wav|ogg)$/i', $file)) {
                            continue;
                    }       
                    list($filename, $type) = explode('.', $file); 
                    $fileList[$filename] = $file;
            }       
            return $fileList;
    }

    or 
    /usr/bin/php --ini,查看下fileinfo.ini
    vi /etc/php/7.2/cli/conf.d/20-fileinfo.ini
    ;extension=fileinfo.so前面的分号(;)
    来自:PC 广东省广州市
    上一篇: Zabbix日志关键字监控(指定日志文件目录)
    您可能还喜欢这些:

    亲,沙发正空着,还不快来抢?

    评论审核已开启 记住我的个人信息 回复后邮件通知我