说明:
influxDB是分布式时间序列数据库,用于存储运营数据,使用cAdvisor采集数据。
cAdvisor用于监控docker容器,采集数据,并保存在influxDB中。
Grafana用图表方式显示信息,使用influxDB作为数据源。
一、InfluxDB安装/使用:
1.InfluxDB安装:
(1)下载InfluxDB镜像:
[root@localhost ~]# docker pull tutum/influxdb
(2)创建/启动InfluxDB容器(此处名为my_inf):
[root@localhost ~]# docker run -di -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name=my_inf docker.io/tutum/influxdb:latest
2.打开Web页面增删改查操作(点击右侧"Query Templates"倒下角,选中某一项SQL操作命令,按回车键执行):
打开命令操作页面:http://192.168.233.128:8083
(1)数据库操作:
创建数据库:
CREATE DATABASE "mydb"
显示数据库:
SHOW DATABASES
(2)用户操作:
创建管理员用户:
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
查看用户:
SHOW USERS
用户授权:
#授予root用户mydb所有权限
grant all privileges on mydb to root
#授予root用户mydb写权限
grant write on root to root
#授予root用户mydb读权限
grant read on root to root
(3)查看采集的数据(需要cAdvisor采集数据):
SHOW MEASUREMENTS
二、cAdvisor安装/使用:
1.cAdvisor安装:
(1)下载cAdvisor镜像:
[root@localhost ~]# docker pull google/cadvisor
(2)创建cAdvisor容器(此处名为my_cad),并连接InfluxDB:
说明:
my_inf为InfluxDB容器名称
publish映射供外部访问的端口
--link表示连接InfluxDB容器
-storage_driver=influxdb设置InfluxDB连接驱动
storage_driver_db设置InfluxDB里自已创建的数据库名称
-storage_driver_host设置InfluxDB连接端口
[root@localhost ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 --detach=true \
--link my_inf:my_inf \
--name=my_cad google/cadvisor \
-storage_driver=influxdb -storage_driver_db=mydb -storage_driver_host=my_inf:8086
(3)查看cAdvisor容器(此处名为my_cad)是否运行:
[root@localhost ~]# docker ps
如果没有运行,则输入以下2种,再启动就可以了:
[root@localhost ~]# sudo mount -o remount,rw '/sys/fs/cgroup'
[root@localhost ~]# sudo ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
#再启动容器就可以了
[root@localhost ~]# docker start my_cad
2.查看web页面,如图:
http://192.168.233.128:8080/containers/
三、Grafana安装/使用:
1.安装:
(1)下载Grafana镜像:
[root@localhost ~]# docker pull grafana/grafana
(2)创建/启动Grafana容器(此处为my_gra):
#my_inf为InfluxDB容器名称
[root@localhost ~]# docker run -d -p 3001:3000 -e INFLUXDB_HOST=my_inf -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=mydb -e INFLUXDB_USER=root -e INFLUXDB_PASS=root --link my_inf:my_inf --name=my_gra docker.io/grafana/grafana
(3)访问web页面(首次访问会让修改密码),如图:
登录账号/密码:admin/admin
http://192.168.233.128:3001
2.添加数据源:
(1)左侧设置图标 -> Data Sources -> 中间点击Add data source:
(2)在弹出列表中选择InfluxDB作为数据源:
(3)在新增界面,配置如下:
Name=InfluxDB
URL=http://192.168.233.128:8086
Database=mydb
User=root
Password=root
3.添加监控仪表盘:
(1)点左侧四方图标 -> 点列表Manage -> 点New Dashboard -> Add new panel,新增仪表盘,会进入进入编辑界面:
(2)编辑界面滑动到底部,选择Query选项卡 -> 选择InfluxDB -> 在A条中配置:FROM default memory_usage WHERE container_name = r-develop-mall-mall-usercenter-1-1857f8c1,如图:
#memory_usage方式监控内存,container_name为容器名称,在列表中选择要监控的微服务/容器
A.From default memory_usage WHERE container_name = 容器名称
(3)编辑完成,点右上角保存按钮,确认保存弹窗中输入名称,点Save:
(4)查看已创建的监控项,左侧四方图标 -> 列表Manage -> 中间窗口显示了新增的监控项:
4.添加预警通知:
(1)点左侧响铃图标 -> 点列表Notification Channels -> 点Add channel,创建一个通知:
(2)在新建界面,配置通知类别为webhook,url为扩容请求地址,httpmethod为POST方式等,当触发通知时自动调用扩容请求:
name=任意名称
Type=webhook
Url=http://192.168.233.128:9090/v1-webhooks/endpoint?key=cJjCzbxIQmMWavaR4jXfAEK1qGarmwWtoBSJ73U6&projectId=1a14
Http Method=POST
Username=a526001650a
Password=123456
(3)将新建的通知配置到监控仪表盘中,回到监控仪表盘,点标题倒三角 -> 下拉列表选中"Edit",进入编辑界面,点击Alert选项卡,Rule.Name中输入名称,Coditions中配置触发条件,Notifications.Send to中选择之前创建的通知,然后保存: