高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

docker容器监控

目录
  1. 1. zabbix+docker+zabbix-docker-monitoring
    1. 1.1. mysql安装
    2. 1.2. zabbix安装-docker-compose方式
      1. 1.2.1. docker-compose安装
      2. 1.2.2. zabbix-server安装
      3. 1.2.3. zabbix-agent安装
    3. 1.3. 登录配置zabbix
  2. 2. InfluxDB+cAdvisor+Grafana
    1. 2.1. 安装influxDB
      1. 2.1.1. 创建数据库信息:
    2. 2.2. 安装cAdvisor
    3. 2.3. 安装Grafana
    4. 2.4. 配置Grafana与influxDB数据库连接
      1. 2.4.1. 添加Gtrafana数据源
      2. 2.4.2. 添加Dashboard

Alt text
docker容器监控有很多方案,zabbix,docker stats、cadvisor、datadog、Scout…

这里总结两种监控工具:zabbix+docker+zabbix-docker-monitoring和InfluxDB+cAdvisor+Grafana。

如果公司中已有zabbix监控,可以直接加入zabbix-docker-monitoring即可。

InfluxDB+cAdvisor+Grafana,目前是业界docker监控应用挺多的监控体系,可以尝试尝试。


操作系统:centos7

zabbix+docker+zabbix-docker-monitoring

mysql安装

首先安装mysql数据库作为zabbix数据存储。

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

yum localinstall mysql57-community-release-el7-8.noarch.rpm

yum install mysql-community-server

启动mysql:

systemctl start mysqld

验证:

systemctl status mysqld


zabbix安装-docker-compose方式

docker-compose安装

下载:
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose

附权限:
sudo chmod +x /usr/local/bin/docker-compose

测试:
$ docker-compose –version

zabbix-server安装

安装zabbix-server,编写docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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

执行docker-compose up即可。


zabbix-agent安装

zabbix-agent安装不推荐使用docker镜像方式,因为不支持 docker.xnet 数据的监控。

执行脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
#add user
groupadd zabbix
useradd -g zabbix zabbix

#agent compile
yum 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

#zabbix_module_docker.so compile
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

mkdir -p /usr/local/lib/zabbix/agent/
cp zabbix_module_docker.so /usr/local/lib/zabbix/agent/

创建 /lib/systemd/system/zabbix-agentd.service 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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

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

启动zabbix-agent:

sudo systemctl enable zabbix-agentd.service
systemctl start zabbix-agentd.service

验证:

sudo systemctl status zabbix-agentd.service

ok, 以上server和agent安装完成


登录配置zabbix

浏览器访问http://ZabbixServerIP:Port,账号密码:Admin/zabbix。
Alt text

在配置->模板中导入docker监控模板:zabbix-template-app-docker.xml

在配置->主机->模板中选择该模板,更新即可。


InfluxDB+cAdvisor+Grafana

安装influxDB

docker run -d -p 8083:8083 -p 8086:8086 –expose 8090 –expose 8099 –name influxsrv tutum/influxdb

influxdb容器运行成功后,访问http://docker-host-ip:8083后台管理界面。用户名:root, 密码:root。


创建数据库信息:

Alt text

1
2
3
4
5
# 创建数据库
create database 'cadvisor';

# 创建用户
CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' WITH ALL PRIVILEGES

安装cAdvisor

docker run –volume=/:/rootfs:ro –volume=/var/run:/var/run:rw –volume=/sys:/sys:ro –volume=/var/lib/docker/:/var/lib/docker:ro -p 8080:8080 –detach=true –link influxsrv:influxsrv –name=cadvisor google/cadvisor:v0.24.1 -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086

cAdvisor容器启动后,访问http://docker-host-ip:8080,便可以查看cAdvisor监控工具所收集到的Docker主机和容器的资源统计信息。

Alt text


安装Grafana

docker run -d -p 3000:3000 -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root –link influxsrv:influxsrv –name grafana grafana/grafana

Web访问http://docker-host-ip:3000,登录Grafana管理平台。
用户名:admin
密 码:admin

Alt text


配置Grafana与influxDB数据库连接

添加Gtrafana数据源

Alt text

如果出现502.请关闭防火墙再试。


添加Dashboard

在Dashboard面板中选择相应的组件并拖动到相关的位置。

Alt text

做一些sql配置即可。