摘要:监控方案监控方案我选择了,要实现对每个容器信息的监控,需要插件。宿主机直接运行容器的方式运行不支持数据的监控,想要监控数据,得直接在宿主机上运行,并加载,参看。代理程序的接口填写要监控的。在监控最新数据中查看监控数据。
前言
监控方案这两天研究了一下容器监控的问题,配置的过程中网上基本上找不到成型的教程文章,所以这篇文章记录一下,希望能给有需要的人带来帮助。
监控方案我选择了 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 zabbix2. 编译安装 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 install3. 编译 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.service5. 配置加载项
修改 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.service6. 启动失败分析
如果启动失败,查看 /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、谷歌云)...
摘要:使用有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。目录实践一了解架构实践二使用教程实践三下构建开发环境实践四环境容器化实践五生产环境容器化实践六容器监控实践七提升幸福感实践八构建开发环境实践九生产环境优化参考源码分析系列文章 使用 docker 有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。 系列文章发布在 SegmentFault 上我的专栏 Tairy,...
摘要:此刻的后手指依旧飞速地敲打键盘,丝毫没有要停不下来意思。阅读本期技术周刊,你不光能弄明白什么是,使用的意义何在,还将被传授秘籍,以达的境界。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,听到后排动感十足的清脆键盘响,我就能猜到公司程序员定...
摘要:在和未普及之前,要实现的搭建确实要费一番工夫的,不过现在则很简单就可以实现的监控了。下载镜像使用方式下载极为方便,只需要执行如下命令即可,当然前提是需要安装了。 一、背景 对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环;如果大家使用阿里云的RDS会感觉到其监控功能非常好用,但如果开发者使用的是自建数据库,该怎么去搭建则需则...
阅读 1135·2021-09-10 10:51
阅读 860·2019-08-30 15:53
阅读 2694·2019-08-30 12:50
阅读 948·2019-08-30 11:07
阅读 1966·2019-08-30 10:50
阅读 3550·2019-08-29 18:47
阅读 1278·2019-08-29 18:44
阅读 1568·2019-08-29 17:01