飞牛os记录、踩坑和解决办法
记录飞牛 OS 在 N100 小主机上的安装、引导问题、排查路径和最终解决办法,是一篇偏实践向的 NAS 折腾笔记。
记录使用 Docker 部署 Zabbix 6.4 的过程,覆盖基础组件、启动方式和监控平台搭建思路。
zabbi本身的使用非常广泛,但由于产品涉及较多组件,安装的过程往往较为麻烦,需要花费不少时间进行部署调试。对此,本文将介绍如何基于docker容器的方式,快速搭建的zabbix监控平台。
1. zabbix-server
zabbix 的server 端,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。
2. database
用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。
3. zabbix-web
zabbix的UI端,提供操作控制台和监控展示等功能。
4. zabbix-java-gateway
用于监控Java程序的JVM状态,zabbix本身无法直接从jvm获取监控指标,需使用该网关来实现。
5. zabbbix-agent
zabbix的代理端,部署在目标主机上,用于收集主机的监控数据,并提供给到zabbix server。
$ apt update && apt upgrade
$ apt install docker.io
$ systemctl status docker #检查docker运行状态
$ docker version #检查docker环境变量和版本
zabbix支持mysql/postgresql两种数据库,本示例使用支持mysql的zabbix版本。
CentOS下docker0可能会出现问题
$ sudo service docker stop
sudo pkill docker
sudo iptables -t nat -F
sudo ifconfig docker0 down
sudo brctl delbr docker0
sudo service docker start
下载镜像,zabbix 6.x版本要求使用mysql 8.0。
$ docker pull mysql:8.0
创建存储卷,用于持久化mysql数据。
$ docker volume create -d local mysql_data #存放mysql数据
$ docker volume create -d local mysql_logs #存放mysql日志
$ docker volume create -d local mysql_conf #存放mysql配置文件
启动容器
$ docker run --name mysql-server -t -v mysql_data:/var/lib/mysql -v mysql_logs:/var/log/mysql -v mysql_conf:/etc/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix_pwd" -e MYSQL_ROOT_PASSWORD="123456" --restart=unless-stopped -d mysql:8.0 --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password
下载镜像
$ docker pull zabbix/zabbix-java-gateway:alpine-6.4-latest
$ docker run --name zabbix-java-gateway -t
--restart=unless-stopped
-d zabbix/zabbix-java-gateway:alpine-6.4-latest
下载镜像
$ docker pull zabbix/zabbix-server-mysql:alpine-6.4-latest
创建存储卷,用于存储zabbix配置文件。
$ docker volume create -d local zabbix_server
启动server容器,开放10051/TCP端口,用于接收监控数据。添加—link参数,实现mysql和java-gateway容器间的互相通信。
$ docker run --name zabbix-server-mysql -t
-v zabbix_server:/etc/zabbix
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="zabbix_pwd"
-e MYSQL_ROOT_PASSWORD="123456"
-e ZBX_JAVAGATEWAY="zabbix-java-gateway"
--link mysql-server:mysql
--link zabbix-java-gateway:zabbix-java-gateway
--restart=unless-stopped
-p 10051:10051
-d zabbix/zabbix-server-mysql:alpine-6.4-latest
注释:此方式适合所有容器部署在同一台主机上,如果是分开部署,则在前面的步骤需要开放相关端口并映射,并通过局域网进行连接。
下载镜像
$ docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
启动web容器
$ docker run --name zabbix-web-nginx-mysql -t
-e PHP_TZ="Asia/Shanghai"
-e ZBX_SERVER_HOST="zabbix-server-mysql"
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="zabbix_pwd"
-e MYSQL_ROOT_PASSWORD="123456"
--link mysql-server:mysql
--link zabbix-server-mysql:zabbix-server
-p 80:8080
--restart unless-stopped
-d zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
使用浏览器访问


由于需要对应的版本,所以不能直接使用yum zabbix-agent,而需要从仓库获取特定版本 Zabbix Official Repository
完成后使用vim 编辑 /etc/zabbix/zabbix-agent.conf文件,将Server改为zabbix server的ip地址,即可完成配置


完成后重启zabbix-agent 服务即可
$ systemctl restart zabbix-agent
在Host name中填写服务器名称,Templetes中选择一个监控的数据模板,添加interfaces填写目标主机的ip地址即可
