首页 » docker » docker上安装zabbix-server

docker上安装zabbix-server

 
文章目录

docker上安装zabbix-sever实践


使用官方的zabbix-server-mysql和zabbix-web-nginx-mysql的镜像,tag是:ubuntu-3.4.1,也就是zabbix-server和web及mysql都是分开的,都可以用docker启动,zabbix-server端口是:10051,zabbix-agent端口是:10050

用docker启一个mysql或都tidb

docker启动mysql

mysql的docker启动命令如下:

docker run -d \
	-p 3306:3306 \
	--name mysql \
	-v /etc/localtime:/etc/localtime:ro \
	-v /data/mysql_data:/var/lib/mysql \
	-e MYSQL_ROOT_PASSWORD=123456 \
	mysql:5.6.37

docker启动tidb

tidb的启动命令如下,由于指定了容器的ip,所以先需要创建一个网络,都如下:

#!/bin/bash
#docker network create  --subnet 172.18.0.0/16 --driver bridge clc 
#start pd-cluster
docker run -d --name pd1 \
  -p 22379:2379 \
  -p 22380:2380 \
  --network clc \
  --ip 172.18.0.201 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /root/docker/tidb_docker/data_pd1:/data \
  pingcap/pd:pre-ga \
  --name="pd1" \
  --data-dir="/data/pd1" \
  --client-urls="http://0.0.0.0:2379" \
  --advertise-client-urls="http://172.18.0.201:2379" \
  --peer-urls="http://0.0.0.0:2380" \
  --advertise-peer-urls="http://172.18.0.201:2380" \
  --initial-cluster="pd1=http://172.18.0.201:2380,pd2=http://172.18.0.202:2380,pd3=http://172.18.0.203:2380"

docker run -d --name pd2 \
  -p 22389:2379 \
  -p 22390:2380 \
  --network clc \
  --ip 172.18.0.202 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /root/docker/tidb_docker/data_pd2:/data \
  pingcap/pd:pre-ga \
  --name="pd2" \
  --data-dir="/data/pd2" \
  --client-urls="http://0.0.0.0:2379" \
  --advertise-client-urls="http://172.18.0.202:2379" \
  --peer-urls="http://0.0.0.0:2380" \
  --advertise-peer-urls="http://172.18.0.202:2380" \
  --initial-cluster="pd1=http://172.18.0.201:2380,pd2=http://172.18.0.202:2380,pd3=http://172.18.0.203:2380"

docker run -d --name pd3 \
  -p 22399:2379 \
  -p 22400:2380 \
  --network clc \
  --ip 172.18.0.203 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /root/docker/tidb_docker/data_pd3:/data \
  pingcap/pd:pre-ga \
  --name="pd3" \
  --data-dir="/data/pd3" \
  --client-urls="http://0.0.0.0:2379" \
  --advertise-client-urls="http://172.18.0.203:2379" \
  --peer-urls="http://0.0.0.0:2380" \
  --advertise-peer-urls="http://172.18.0.203:2380" \
  --initial-cluster="pd1=http://172.18.0.201:2380,pd2=http://172.18.0.202:2380,pd3=http://172.18.0.203:2380"

#start tikv-cluster
docker run -d --name tikv1 \
  -p 20160:20160 \
  --network clc \
  --ip 172.18.0.204 \
  --ulimit nofile=1000000:1000000 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /root/docker/tidb_docker/data_tikv1:/data \
  pingcap/tikv:pre-ga \
  --addr="0.0.0.0:20160" \
  --advertise-addr="172.18.0.204:20160" \
  --data-dir="/data/tikv1" \
  --pd="172.18.0.201:2379,172.18.0.202:2379,172.18.0.203:2379"

docker run -d --name tikv2 \
  -p 20161:20160 \
  --network clc \
  --ip 172.18.0.205 \
  --ulimit nofile=1000000:1000000 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /root/docker/tidb_docker/data_tikv2:/data \
  pingcap/tikv:pre-ga \
  --addr="0.0.0.0:20160" \
  --advertise-addr="172.18.0.205:20160" \
  --data-dir="/data/tikv2" \
  --pd="172.18.0.201:2379,172.18.0.202:2379,172.18.0.203:2379"

docker run -d --name tikv3 \
  -p 20162:20160 \
  --network clc \
  --ip 172.18.0.206 \
  -v /etc/localtime:/etc/localtime:ro \
  --ulimit nofile=1000000:1000000 \
  -v /root/docker/tidb_docker/data_tikv3:/data \
  pingcap/tikv:pre-ga \
  --addr="0.0.0.0:20160" \
  --advertise-addr="172.18.0.206:20160" \
  --data-dir="/data/tikv3" \
  --pd="172.18.0.201:2379,172.18.0.202:2379,172.18.0.203:2379"


#start tidb
docker run -d --name tidb \
  -p 4001:4000 \
  -p 10081:10080 \
  --network clc \
  --ip 172.18.0.207 \
  -v /root/docker/tidb_docker/tikv_binlog_socket:/tmp \
  -v /etc/localtime:/etc/localtime:ro \
  pingcap/tidb:pre-ga \
  --store=tikv \
  --path="172.18.0.201:2379,172.18.0.202:2379,172.18.0.203:2379" \
  --binlog-socket=/tmp/pump.sock

启动zabbix-server-mysql

考虑到以后自己增加插件和修改配置之类的,所以我会把一些目录映射到宿主机上,所以对应映射目录需要先补上配置文件,可以先启动一个测试的zabbix-server-mysql版本,把对应目录里的内容复制过来就可以了,测试了只需要复制zabbix_conf目录下的zabbix_server.conf文件就可以了,其它的目录它会自动创建。

启动命令如下:

docker run -d \
  	--name zabbix \
 	-e DB_SERVER_HOST="192.168.7.231" \
	-e MYSQL_DATABASE="zabbix" \
	-e DB_SERVER_PORT="4001" \
	-e MYSQL_USER="root" \
	-e MYSQL_PASSWORD="123456" \
	-e MYSQL_ROOT_PASSWORD="123456" \
	--link mysql:mysql \
	-p 10051:10051 \
	-v /etc/localtime:/etc/localtime:ro \
	-v /root/docker/zabbix-server/var-lib-zabbix:/var/lib/zabbix \
	-v /root/docker/zabbix-server/usr_lib_zabbix_alertscripts:/usr/lib/zabbix/alterscripts \
	-v /root/docker/zabbix-server/usr_lib_zabbix_externalscripts:/usr/lib/zabbix/externalscripts \
	-v /root/docker/zabbix-server/zabbix_conf:/etc/zabbix/ \
	zabbix/zabbix-server-mysql:ubuntu-3.4.1

宿主机映射目录结构如下:

[root@node1 zabbix-server]# tree ./ -p
./
├── [-rw-r--r--]  start.sh
├── [-rw-r--r--]  start_zabbix_web.sh
├── [drwxr-xr-x]  usr_lib_zabbix_alertscripts
├── [drwxr-xr-x]  usr_lib_zabbix_externalscripts
├── [drwxr-xr-x]  var_lib_zabbix
│   ├── [drwxr-xr-x]  enc
│   ├── [drwxr-xr-x]  mibs
│   ├── [drwxr-xr-x]  modules
│   ├── [drwxr-xr-x]  snmptraps
│   ├── [drwxr-xr-x]  ssh_keys
│   └── [drwxr-xr-x]  ssl
│       ├── [drwxr-xr-x]  certs
│       ├── [drwxr-xr-x]  keys
│       └── [drwxr-xr-x]  ssl_ca
├── [drwxr-xr-x]  var-lib-zabbix
│   ├── [drwxr-xr-x]  enc
│   ├── [drwxr-xr-x]  mibs
│   ├── [drwxr-xr-x]  modules
│   ├── [drwxr-xr-x]  snmptraps
│   ├── [drwxr-xr-x]  ssh_keys
│   └── [drwxr-xr-x]  ssl
│       ├── [drwxr-xr-x]  certs
│       ├── [drwxr-xr-x]  keys
│       └── [drwxr-xr-x]  ssl_ca
└── [drwxr-xr-x]  zabbix_conf
    └── [-rw-r--r--]  zabbix_server.conf

23 directories, 3 files
[root@node1 zabbix-server]#

启动zabbix-web-nginx-mysql

这个也需要映射一个zabbix.config.php文件,因为这个文件里有zabbix-server的配置,所以启动之后需要修改,不然web界面会提示zabbix-server is not running.

启动命令如下:

docker run -d \
	--name zabbix-web \
	-e DB_SERVER_HOST="192.168.7.231" \
	-e MYSQL_DATABASE="zabbix" \
	-e DB_SERVER_PORT="4001" \
	-e MYSQL_USER="root" \
	-e MYSQL_PASSWORD="123456" \
	-e MYSQL_ROOT_PASSWORD="123456" \
	-e PHP_TZ="Asia/Shanghai" \
	--link mysql:mysql \
	--link zabbix:zabbix \
	-v /etc/localtime:/etc/localtime:ro \
	-v /root/docker/zabbix-web-nginx-php/zabbix_web_config:/etc/zabbix/web \
	-p 80:80 \
	zabbix/zabbix-web-nginx-mysql:ubuntu-3.4.1

启动之后需要修改 zabbix.config.php中的$ZBX_SERVER = 'zabbix';,这个参数要修改成zabbix-server上的ip,或者是docker上link的名字。

启动zabbix-agent

这个也需要一个配置文件映射出来,好配置如zabbix-server,及数据库相关的配置,虽然可以通过环境变量传输进去。但这个其实是监控容器里面的,

实测发现:网卡这块就是容器里面的,不能监控宿主机里面的。 所以监控宿主机的还是在宿主机上安装zabbix-agent吧。

启动命令如下:

[root@node1 zabbix-agent]# cat start_agent.sh 
docker run -d \
	--name zabbix-agent \
	-p 10050:10050 \
	--privileged \
	-e ZBX_HOSTNAME='zabbix_agent_232' \
	-e ZBX_SERVER_HOST='zabbix,172.17.0.1,192.168.7.230,127.0.0.1' \
	-v /etc/localtime:/etc/localtime:ro \
	-v /root/docker/zabbix-agent/zabbix_agent_conf:/etc/zabbix \
	--link zabbix:zabbix \
	zabbix/zabbix-agent:ubuntu-3.4.1

报错处理

web登录报does not match

如果web界面出现这个错:The frontend does match Zabbix database

解决方法:
可以docker stop zabbix-server zabbix-web,在启动,

如果还报错,可以先关掉zabbix-server和web,然后把数据库zabbix删除掉,在启动这两个,

zabbix-server的3.4.1版本中有140个表。

 

原文链接:docker上安装zabbix-server,转载请注明来源!

1