剑客
关注科技互联网

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 界面中进行配置。

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

参考

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址