Linux,docker Docker安装zabbix 发表于 2022-03-28 浏览量 466 没有评论 # 1、安装docker ``` (1): 安装必要的一些系统工具 [root@dockerserver ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 (2): 添加软件源信息 [root@dockerserver ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (3): 更新并安装 Docker-CE [root@dockerserver ~]# yum makecache fast [root@dockerserver ~]# yum -y install docker-ce (4): 开启Docker服务 [root@dockerserver ~]# systemctl start docker ``` # 2、下载镜像 ``` (1)、拉取mysql镜像 docker pull mysql:8.0.23 (2)、下载zabbix-server镜像 # 支持MySQL数据库zabbix-server-mysql docker pull zabbix/zabbix-server-mysql:centos-5.2.4 (3)、下载Zabbix web镜像 # Nginx web服务器及支持MySQL数据库的Zabbix web接口zabbix/zabbix-web-nginx-mysql。 docker pull zabbix/zabbix-web-nginx-mysql:centos-5.2.4 (4)、下载zabbix-java-gateway镜像 # Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能。 docker pull zabbix/zabbix-java-gateway:centos-5.2.4 ``` # 3、运行镜像 ``` (1)、创建docker网络 # 启动zabbix等镜像之前,需要先创建一个新的Docker网络。需要将后面的zabbix-server、mysql、web等容器都加入到此网络中,方便互相访问。在终端使用下面命令创建。 docker network create -d bridge zabbix_net # 创建后,可以查看是否创建成功。 docker network ls (2)、 运行mysql镜像,创建mysql容器 docker run -itd -p 3306:3306 --name zabbix-mysql --network zabbix_net \ --restart unless-stopped -v /etc/localtime:/etc/localtime \ -v /data/dockerdata/zabbix/db:/var/lib/mysql \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix123" \ -e MYSQL_ROOT_PASSWORD="root123" \ mysql:8.0.23 --default-authentication-plugin=mysql_native_password \ --character-set-server=utf8 --collation-server=utf8_bin (3)、运行zabbix-java-gateway镜像 # 创建zabbix-java-gateway容器,执行如下命令: docker run -v /etc/localtime:/etc/localtime -dit --restart=always \ --name=zabbix-java-gateway \ --network zabbix_net \ zabbix/zabbix-java-gateway:centos-5.2.4 (4)、运行zabbix-server-mysql镜像 # 创建zabbix-server-mysql容器之前,首先创建数据卷zabbix-server-vol,通过命令 docker volume create zabbix-server-vol docker volume ls # 接着,启动zabbix-server-mysql容器。 docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix \ -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \ --name=zabbix-server-mysql --restart=always --network zabbix_net \ -e DB_SERVER_HOST="zabbix-mysql" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix123" \ -e MYSQL_ROOT_PASSWORD="root123" \ -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \ -e ZBX_JAVAGATEWAY_ENABLE="true" \ -e ZBX_JAVAGATEWAYPORT=10052 \ zabbix/zabbix-server-mysql:centos-5.2.4 # alertscripts zabbix第三方插件,zabbix-mysql:连接mysql容器,是容器的名字 (5)、 运行zabbix-web-nginx-mysql镜像 # 创建zabbix-web-nginx-mysql容器,可执行如下命令: docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime \ -v /data/dockerdata/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf \ --name zabbix-web-nginx-mysql --restart=always --network zabbix_net \ -e DB_SERVER_HOST="zabbix-mysql" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix123" \ -e MYSQL_ROOT_PASSWORD="root123" \ -e ZBX_SERVER_HOST="zabbix-server-mysql" \ zabbix/zabbix-web-nginx-mysql:centos-5.2.4 cd /data/dockerdata/zabbix/fonts wget https://dl.cactifans.com/zabbix_docker/msty.ttf mv msty.ttf DejaVuSans.ttf # 访问测试 172.16.7.215:8080 Admin,zabbix (6)、运行zabbix-agent镜像 # 本地agent的安装: docker run -dit --name zabbix-agent -p 10050:10050 --network zabbix_net \ -e ZBX_HOSTNAME="Zabbix server" \ -e ZBX_SERVER_HOST="zabbix-server-mysql" \ -e ZBX_SERVER_PORT=10051 \ zabbix/zabbix-agent:centos-5.2.4 zabbix-agent2: docker run -dit --name zabbix-agent2 -p 10050:10050 -v /var/run/docker.sock:/var/run/docker.sock \ --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" \ -e ZBX_SERVER_HOST="zabbix-server-mysql" \ -e ZBX_SERVER_PORT=10051 \ --privileged zabbix/zabbix-agent2:latest ``` # 4、通过docker-compose一键安装zabbix docker-compose是用来做docker的多容器控制,有了docker-compose,我们可以把所有繁琐的docker操作全都一条命令,自动化的完成。通过编写一个`docker-compose.yml`文件,只需要写好后,运行一句:docker-compose up -d ,就可以完成zabbix的部署了。 要使用docker-compose,需要安装一个工具docker-compose,可直接从官方:https://github.com/docker/compose/releases 处下载编译好的二进制文件即可。 ``` [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.28.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@localhost ~]# chmod +x /usr/local/bin/docker-compose ``` docker-compose.yml ``` version: '3' services: zabbix-web-nginx-mysql: image: zabbix/zabbix-web-nginx-mysql:centos-5.2.4 restart: always environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix123 - MYSQL_ROOT_PASSWORD=root123 - ZBX_SERVER_HOST=zabbix-server-mysql ports: - 8080:8080 volumes: - /etc/localtime:/etc/localtime - /data/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf networks: - zabbix_net depends_on: - zabbix-mysql - zabbix-server-mysql zabbix-mysql: image: mysql:8.0.23 restart: always environment: - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix123 - MYSQL_ROOT_PASSWORD=root123 command: - mysqld - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8 - --collation-server=utf8_bin ports: - 3306:3306 volumes: - /etc/localtime:/etc/localtime - /data/zabbix/db:/var/lib/mysql networks: - zabbix_net zabbix-java-gateway: image: zabbix/zabbix-java-gateway:centos-5.2.4 restart: always volumes: - /etc/localtime:/etc/localtime networks: - zabbix_net zabbix-server-mysql: image: zabbix/zabbix-server-mysql:centos-5.2.4 restart: always volumes: - zabbix-server-vol:/etc/zabbix - /etc/localtime:/etc/localtime - /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix123 - MYSQL_ROOT_PASSWORD=root123 - ZBX_JAVAGATEWAY=zabbix-java-gateway - ZBX_JAVAGATEWAY_ENABLE=true - ZBX_JAVAGATEWAYPORT=10052 networks: - zabbix_net ports: - 10051:10051 depends_on: - zabbix-mysql zabbix-agent: image: zabbix/zabbix-agent:centos-5.2.4 restart: always environment: - ZBX_HOSTNAME=Zabbix server - ZBX_SERVER_HOST=zabbix-server-mysql - ZBX_SERVER_PORT=10051 networks: - zabbix_net ports: - 10050:10050 networks: zabbix_net: driver: bridge volumes: zabbix-server-vol: # depends_on,依赖,先会让依赖的容器起来先。 # environment,传递变量,相当于docker -e # command,容器起来后的一些操作 # 查看卷对应宿主机的路径,docker volume ls, # docker volume inspect zabbix_zabbix-server-vol,Mountpoint对应的就是宿主机的真实路径 ``` # 5、zabbix-server相关参数说明 通过容器安装的zabbix,可能后面会修改配置文件,所以将zabbix-server的配置文件zabbix_server.conf映射到了本地目录下,打开映射的文件,需要关注如下几个配置项: ``` ListenPort=10051 LogFile=/tmp/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix ListenIP=0.0.0.0 StartPollers=5 StartTrappers=10 StartDiscoverers=10 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts ``` - `ListenPort`是zabbix server默认监听端口,LogFile用来指定zabbix server日志输出路径,DBHost为数据库的地址,如果数据库在本机,可不做修改,DBName为数据库名称,DBUser为连接数据库的用户名,DBPassword为连接数据量对应的用户密码。ListenIP为zabbix server监听的IP地址,也就是zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个值建议设置为0.0.0.0。 - `StartPollers` 用于设置zabbix serve服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大。 - `StartTrappers`用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些。 - `StartDiscoverers`用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该值。 - `AlertScriptsPath`用来配置zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里。 # 6、zabbix_agent非容器方式安装 远程被监控主机上zabbix agent的安装,不建议通过容器方式进行安装,建议采用普通的方式安装zabbix-agent,这里我采用rpm包方式安装,可从http://repo.zabbix.com/zabbix/ 下载zabbix的agent端rpm包,版本与zabbix server端保持一致,安装如下: ``` [root@localhost app]#wget http://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-agent-5.2.4-1.el7.x86_64.rpm [root@localhost app]#rpm -ivh zabbix-get-5.2.4-1.el7.x86_64.rpm [root@02 zabbix]# cat zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=172.16.7.211 # zabbix-server地址 ListenPort=10050 # agent监听地址 ServerActive=172.16.7.211 # 主动模式的服务器地址 Hostname=172.16.7.215 # 主机名,server那边添加主机的时候需要对得上!! Include=/etc/zabbix/zabbix_agentd.d/*.conf systemctl start zabbix-agent.service ###启动zabbix_agentd systemctl stop zabbix-agent.service ###停止zabbix_agentd systemctl status zabbix-agent.service ###查看zabbix_agentd状态 ``` 安装完成后,zabbix agent端已经安装完成了,zabbix agent端的配置目录默认位于/etc/zabbix下,可在此目录进行配置文件的修改。 # 7、测试zabbix server监控 如何知道zabbix server监控已经生效呢,可进入zabbix server容器,然后执行zabbix_get命令进行测试,登录zabbix server容器,执行如下命令即可进行测试: ``` docker exec -it 41ff5630d726 bash # 进入zabbix-server容器 bash-4.4$ zabbix_get -s 172.16.7.215 -k "system.uptime" ``` -s是指定zabbix agent端的IP地址。 -p是指定zabbix agent端的监听端口。 -k是监控项,即item。 如果有输出结果,表明zabbix server可以从zabbix agent获取数据,配置成功。