Docker 实践(六):容器监控

前言 这两天研究了一下容器监控的问题,配置的过程中网上基本上找不到成型的教程文章,所以这篇文章记录一下,希望能给有需要的人带来帮助

前言

这两天研究了一下容器监控的问题,配置的过程中网上基本上找不到成型的教程文章,所以这篇文章记录一下,希望能给有需要的人带来帮助。

zabbix

zabbix 是一款很强大的监控系统,这里主要使用 zabbix 的 docker 容器的监控插件 zabbix-docker-monitoring

配置服务端

zabbix 也是 C/S 架构,首先需要配置服务端,最好能独立一台宿主机作为专门监控的服务器。

1. 创建一个数据卷容器

docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest

2. 创建 Zabbix 数据库

docker run /

-d /

--name zabbix-db /

-v /backups:/backups /

-v /etc/localtime:/etc/localtime:ro /

--volumes-from zabbix-db-storage /

--env="MARIADB_USER=zabbix" /

--env="MARIADB_PASS=my_password" /

monitoringartist/zabbix-db-mariadb

3. 创建 Zabbix 服务器

docker run /

-d /

--name zabbix /

-p 80:80 /

-p 10051:10051 /

-v /etc/localtime:/etc/localtime:ro /

--link zabbix-db:zabbix.db /

--env="ZS_DBHost=zabbix.db" /

--env="ZS_DBUser=zabbix" /

--env="ZS_DBPassword=my_password" /

monitoringartist/zabbix-xxl:latest

当然,也可以使用 docker-compose

编排:

docker-compose.yml

version: '2'

services:

zabbix:

image: monitoringartist/zabbix-xxl

ports:

- 8080:80

- 10051:10051

volumes:

- /etc/localtime:/etc/localtime:ro

depends_on:

- zabbix.db

environment:

ZS_DBHost: zabbix.db

ZS_DBUser: zabbix

ZS_DBPassword: 123456

zabbix.db:

image: monitoringartist/zabbix-db-mariadb

volumes:

- /backups:/backups

- /etc/localtime:/etc/localtime:ro

volumes_from:

- zabbix-db-storage

environment:

MARIADB_USER: zabbix

MARIADB_PASS: 123456

zabbix-db-storage:

image: busybox:latest

volumes:

- /var/lib/mysql

配置客户端

运行客户端容器:

docker run /

--name=zabbix-agent-xxl /

-h $(hostname) /

-p 10050:10050 /

-v /:/rootfs /

-v /var/run:/var/run /

-e "ZA_Server=<ZABBIX SERVER IP/DNS NAME>" /

-d monitoringartist/zabbix-agent-xxl-limited:latest

修改 ZA_Server

,如果是端口是 10050 的话,这里直接改成服务器 ip 即可。

至此,系统配置告一段落,之后是对监控的配置。

配置监控

1. 登录管理系统

通过浏览器访问 ZabbixServerIP:Port

可以访问 zabbix 服务器 web 管理界面,默认登录帐号是 Adminzabbix

(注意 Admin 首字母大写)。

2. 导入模板

登录之后可将系统语言修改为中文,然后在 配置 > 模板

里面导入监控模板: zabbix-template-app-docker.xml

3. 创建主机群组

配置 > 主机群组

里面选择创建主机群组,可以命名为 Docker Servers

4. 创建主机

配置 > 主机

里面创建主机,群组选择 Docker Servers

,再配置 agent代理程序的接口

为要监控的宿主机 ip,最后在 模板

选项卡中选择第二步中导入的模板,添加更新即可。

等几分钟之后就可以在 监控 > 最新数据

中看到监控信息了,也可以修改模板信息排除一些多余的监控信息。

非 Docker 环境下配置

如果之前已经在使用 Zabbix 监控服务器了,那就无需再运行容器了,只需要在 zabbix 客户端配置加载 zabbix_module_docker.so

:

1. 编译

# Required CentOS/RHEL tools: yum install -y wget autoconf automake gcc svn

# Required Debian/Ubuntu tools: apt-get install -y wget autoconf automake gcc subversion make pkg-config

cd ~

mkdir zabbix30

cd zabbix30

svn co svn://svn.zabbix.com/branches/3.0 .

./bootstrap.sh

./configure --enable-agent

mkdir src/modules/zabbix_module_docker

cd src/modules/zabbix_module_docker

wget https://raw.githubusercontent.com/monitoringartist/Zabbix-Docker-Monitoring/master/src/modules/zabbix_module_docker/zabbix_module_docker.c

wget https://raw.githubusercontent.com/monitoringartist/Zabbix-Docker-Monitoring/master/src/modules/zabbix_module_docker/Makefile

make

参考

2. 配置客户端

编辑 /etc/zabbix/zabbix_agentd.conf

文件, 添加

LoadModule=/path/to/zabbix_module_docker.so

然后重启客户端即可:

sudo service zabbix-agent restart

3. 配置服务端

服务端配置和运行 docker 容器的一样,也是在 web 界面中进行配置。

综上,配置结束,接下来就是自己摸索监控系统如何最佳实践的了。

参考

未登录用户
全部评论0
到底啦