资讯专栏INFORMATION COLUMN

Docker 实践(六):容器监控

hyuan / 681人阅读

摘要:监控方案监控方案我选择了,要实现对每个容器信息的监控,需要插件。宿主机直接运行容器的方式运行不支持数据的监控,想要监控数据,得直接在宿主机上运行,并加载,参看。代理程序的接口填写要监控的。在监控最新数据中查看监控数据。

前言

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

监控方案

监控方案我选择了 Zabbix,要实现对每个容器信息的监控,需要 zabbix-docker-monitoring 插件。

配置服务端

Zabbix 是 C/S 架构,服务端最好能配置在一台独立的宿主机上。

服务端 docker-compose 文件:

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: zabbix_password
  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: zabbix_password
  zabbix-db-storage:
    image: busybox:latest
    volumes:
      - /var/lib/mysql
容器方式运行 Zabbix-agent

可以无需在宿主机安装 Zabbix-agent,直接运行官方的容器即可。

运行 Zabbix-agent 容器:
docker run 
  --name=zabbix-agent-xxl 
  -h $(hostname) 
  -p 10050:10050 
  -v /:/rootfs 
  -v /var/run:/var/run 
  -e "ZA_Server=" 
  -d monitoringartist/zabbix-agent-xxl-limited:latest
配置容器

修改 ZA_Server,直接改成服务器 ip。

如果想覆盖容器中 agent 的配置变量,可以在 run 的时候使用 -e ZA_Variable=value 的方法,但是对 AllowRoot, LoadModulePath, LoadModule, LogType 的配置无法覆盖,其中 AllowRoot 的默认值就是 1,参看 Github Issue。

宿主机直接运行 Zabbix-agent

容器的方式运行 zabbix-agent 不支持 docker.xnet 数据的监控,想要监控 docker.xnet 数据,得直接在宿主机上运行 zabbix-agent,并加载 zabbix_module_docker.so,参看 Github Issue。

1. 添加 zabbix 用户和组
groupadd zabbix
useradd -g zabbix zabbix
2. 编译安装 zabbix-agent
apt-get install -y wget autoconf automake gcc subversion make pkg-config
cd ~
mkdir zabbix32
cd zabbix32
svn co svn://svn.zabbix.com/branches/3.2 .
./bootstrap.sh
./configure --enable-agent
make install
3. 编译 zabbix_module_docker.so:
cd ~/zabbix32
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
cp zabbix_module_docker.so /usr/local/lib/zabbix/agent/
4. 启动 zabbix_agentd

使用 systemd 管理进程,关于 systemd 可参考 阮一峰的网络日志 ,创建 /lib/systemd/system/zabbix-agentd.service 文件:

[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_agentd.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

执行下面命令告知 systemctl 如何启动 zabbix-agentd

sudo systemctl enable zabbix-agentd.service
5. 配置加载项

修改 zabbix-agentd 配置文件 /usr/local/etc/zabbix_agentd.conf 中的下面几个参数:

Server=Zabbix-Server-IP
ServerActive=Zabbix-Server-IP
Hostname=Current-Host-Name
Timeout=30
LoadModulePath=/usr/local/lib/zabbix/agent
LoadModule=zabbix_module_docker.so

运行下面命令启动 zabbix-agentd

systemctl start zabbix-agentd.service
6. 启动失败分析

如果启动失败,查看 /tmp/zabbix_agentd.log 文件,如不存在,可手动创建,所属用户为 zabbix:zabbix

报错:

zabbix_agentd [xxxxx]: cannot attach to existing shared memory: [13] Permission denied
cannot allocate shared memory for collector

可能是 zabbix_module_docker.so 编译错误,重新编译一次即可。

设置监控 1. 登录管理系统

浏览器访问 http://ZabbixServerIP:Port,可以看到 zabbix 服务器 web 管理界面,默认登录帐号是 Admin/zabbix (注意 Admin 首字母大写)。

为了方便操作,可将系统语言设置为中文。

2. 导入模板

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

注:模板里有一些已经配置好的监控方案,可以参考取舍。

3. 创建主机群组

配置 > 主机群组 里创建主机群组,命名为 Docker Servers

4. 创建主机

配置 > 主机 里面创建一个主机。

群组选择 Docker Servers

agent代理程序的接口 填写要监控的 agent ip。

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

监控 > 最新数据 中查看监控数据。

参考

How To Install Zabbix on Ubuntu & Configure it to Monitor Multiple VPS Servers

monitoringartist/zabbix-3.0-xxl

monitoringartist/zabbix-agent-xxl-limited

zabbix-docker-monitoring

如何选择Docker监控方案

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27946.html

相关文章

  • 容器监控实践—开篇

    摘要:方案汇总一开源方案采集展示报警二商业方案三云厂商腾讯云阿里云百度云华为云四主机监控五日志监控六服务监控七存储后端脑图本文为容器监控实践系列文章,完整内容见 概述 随着越来越多的线上服务docker化,对容器的监控、报警变得越来越重要,容器监控有多种形态,有些是开源的(如promethues),而另一些则是商业性质的(如Weave),有些是集成在云厂商一键部署的(Rancher、谷歌云)...

    Zack 评论0 收藏0
  • 容器监控实践—开篇

    摘要:方案汇总一开源方案采集展示报警二商业方案三云厂商腾讯云阿里云百度云华为云四主机监控五日志监控六服务监控七存储后端脑图本文为容器监控实践系列文章,完整内容见 概述 随着越来越多的线上服务docker化,对容器的监控、报警变得越来越重要,容器监控有多种形态,有些是开源的(如promethues),而另一些则是商业性质的(如Weave),有些是集成在云厂商一键部署的(Rancher、谷歌云)...

    hellowoody 评论0 收藏0
  • Docker 实践系列文章

    摘要:使用有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。目录实践一了解架构实践二使用教程实践三下构建开发环境实践四环境容器化实践五生产环境容器化实践六容器监控实践七提升幸福感实践八构建开发环境实践九生产环境优化参考源码分析系列文章 使用 docker 有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。 系列文章发布在 SegmentFault 上我的专栏 Tairy,...

    VincentFF 评论0 收藏0
  • SegmentFault 技术周刊 Vol.5 - Docker丨Build, Ship, Run,

    摘要:此刻的后手指依旧飞速地敲打键盘,丝毫没有要停不下来意思。阅读本期技术周刊,你不光能弄明白什么是,使用的意义何在,还将被传授秘籍,以达的境界。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,听到后排动感十足的清脆键盘响,我就能猜到公司程序员定...

    Panda 评论0 收藏0
  • grafana+prometheus快速搭建MySql监控系统实践

    摘要:在和未普及之前,要实现的搭建确实要费一番工夫的,不过现在则很简单就可以实现的监控了。下载镜像使用方式下载极为方便,只需要执行如下命令即可,当然前提是需要安装了。 一、背景 对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环;如果大家使用阿里云的RDS会感觉到其监控功能非常好用,但如果开发者使用的是自建数据库,该怎么去搭建则需则...

    AdolphLWQ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<