ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上)

适用于类ubuntu系统.amd64.

1. influxdb: (以后考虑把influxdb换成prometheus)

https://influxdb.com/docs/v0.8/introduction/installation.html#ubuntu-debian
(只能先选择deb安装的方式了。。没办法 代码编译方式是不行了 go发展尚未成熟稳定很多库变动太快太大导致很多包路径已经改了0.88版本down下来已经编译不过了 所以我先安装deb-然后拷出influxdb二进制文件-最后再清理卸载系统里的influxdb)
$ wget http://get.influxdb.org.s3.amazonaws.com/influxdb_0.8.9_amd64.deb
$ sudo dpkg -i influxdb_0.8.9_amd64.deb
把两个文件拷出来,其他的都删掉.两个文件是:
/usr/bin/influxdb
/opt/influxdb/shared/config.toml
$ cd ...where/CIGS
$ chown ${USER}:${USER} influxdb
$ chown ${USER}:${USER} config.toml
$ vi config.toml
几个路径改一下就可以了。

另外,一个不是很必要的操作——提高打开文件数的限制:
(之所以不是和必要,是因为官方说“Pretend like we made it past 1999 and computers can actually handle more than 256 open files”..才256个...)
https://influxdb.com/docs/v0.8/introduction/installation.html#file-limits

如果提升了打开文件数,修改好了config.toml,这样就可以执行了(注意配置文件里的路径必须存在且权限合适):
$ ulimit -n 40960 ## 仅对当前终端有效
$ ./influxdb -config=config.toml

我是写了个脚本用sudo运行:
#!/bin/bash
mkdir -p /data/influxdb/shared/data/raft
mkdir -p /data/influxdb/shared/data/db
mkdir -p /data/influxdb/shared/data/wal
ulimit -n 40960
./influxdb -config=config.toml

接下来清理卸载系统里的influxdb:
停掉所有influxdb进程,然后su里find / -name "*influx*"然后手动清删influxdb.

清理完文件,再清理influx的用户权限:
$ sudo userdel influxdb
$ sudo groupdel influxdb
检验:sudo cat /etc/group | grep influx发现已经没有influx了.
如果还有且在docker那行(这是一个坑):
(注:如果没有了就不要搞下面的命令了.)
$ sudo groupdel docker
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker && sudo service docker restart
如果还有那就sudo vi /etc/group, 对于docker1.9.1,docker那一行是:docker:x:999:yourName
注:
检验彻底清理了influx和docker权限是否还混一块:
$ docker run --rm -it redis
$ ps aux | grep redis看看是否还有influxdb这个用户.

另:
据说influxdb依赖这些库,不过我并不需要,可能系统已经有了:
$ sudo apt-get install mercurial bzr protobuf-compiler flex bison valgrind g++ make autoconf libtool libz-dev libbz2-dev curl build-essential git wget

最后,关于influxdb,过程中看了一下查询语句,记录如下:
list series //列出当前db下全部的表
select * from /.*/ limit 10 //列出当前db的所有的表的前10条数据
select * from stats where container_name='redis' limit 10
select * from stats where container_name =~ /^[^\/]/ limit 10 // 不以/开头的(所有docker的container)

2. cadvisor:

https://github.com/google/cadvisor/releases/latest 直接下载二进制文件.
$ chmod +x cadvisor
$ mv cadvisor ...where/CIGS/
注:此时的cadvisor只能支持influxdbv0.8.

运行(必须sudo)并使之对接influxDB:
$ sudo ./cadvisor -storage_driver=influxdb -storage_driver_host=localhost:8086 -storage_driver_db='cadvisor'
(各参数意义见:https://github.com/google/cadvisor/blob/master/docs/influxdb.md )

注:influxdb跑起来后,首次运行要创建一个db进去(cadvisor配置成往这个db里写数据):
$ curl "http://localhost:8086/db?u=root&p=root" -d "{\"name\": \"cadvisor\"}"

注(一个坑):不知道为啥,cadvisor自带的前端一开始很流畅,用了两天后在chrome打开会非常的卡,firefox却不卡。
不知道为啥,清理了chrome的所有浏览数据后还是卡,然而不了了之。反正最终三合一方案并不需要这个前端.

3. grafana:

http://grafana.org/download/ 下载tar包.
$ tar zxvf grafana-2.5.0.linux-x64.tar.gz
$ mv grafana-2.5.0 ...where/CIGS/
写个脚本放到CIGS目录里:
#!/bin/bash
HOMEPATH=grafana-2.5.0
mkdir -p /data/grafana/log
mkdir -p /data/grafana/dashboards
$HOMEPATH/bin/grafana-server -homepath=$HOMEPATH -config=grafana.ini

sudo执行即可. 然后打开前段进行配置:
http://localhost:3000
登陆进去(账户见配置文件): Data Sources/Add new:
Name:cadvisor Default:√
Type:influxDB 0.8.x
Url:http://localhost:8086 Access:proxy
Basic Auth: Enable (不勾选,貌似没用)
Database:cadvisor
User:root Password:root
然后配个Dashboards:
Dashboards/Home↓/+New
。。。。

住:配置文件grafana.ini如果修改了,可能不会被应用。这时需要sudo rm -rf /data/grafana/grafana.db

另,据说grafana依赖这些库,不过我并不需要,可能系统已经有了:
$ sudo apt-get install -y adduser libfontconfig

4. supervisord使三合一

4.1 安装supervisor
$ apt-cache show supervisor
看看是不是3.0版本的.
安装:
$ sudo apt-get install supervisor
看是否安装成功:
$ echo_supervisord_conf
$ ps aux | grep supervisor
$ vi /etc/supervisor/supervisord.conf
最后一行..

4.2 三合一:
$ vi cigs-supervisor.conf
(仅摘录部分)
[unix_http_server]
file=/tmp/vmd_supervisord.sock

[supervisord]
pidfile=/tmp/vmd_supervisord.pid
nodaemon=true

[supervisorctl]
serverurl=unix:///tmp/vmd_supervisord.sock
prompt=cigs

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:cadvisor]
command=%(here)s/runCAdvisor
directory=%(here)s
autorestart=true
startsecs=4
startretries=99
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile=%(here)s/log/%(program_name)s_supervisor.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=50
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
environment = PYPY_GC_MAX="250MB", PYPY_GC_GROWTH=1.2, PYPY_GC_MAX_DELTA="192MB"
...
以上,cigs-supervisor.conf是启动cadvisor,influxdb和grafana的完整的suerpvisor配置文件.
这样:通过系统的supervisord来启动这样一个任务,任务的命令是这样的:supervisord -c cigs-supervisor.conf
所以,往/etc/supervisor/conf.d/xx.conf里写配置文件:
CIGS_SUPERVISOR_CONF=$(pwd)/cigs-supervisor.conf
FILE_WRITE=/etc/supervisor/conf.d/cigs.conf
echo "[program:cigs]" > $FILE_WRITE
echo "command = supervisord -c $CIGS_SUPERVISOR_CONF" >> $FILE_WRITE
echo "autostart=true" >> $FILE_WRITE
echo "autorestart=true" >> $FILE_WRITE
echo "startsecs=5" >> $FILE_WRITE

重启supervisord即可:
(本机发现sudo service supervisor stop等没作用.所以重启方法如下)
$ sudo supervisorctl
$ shutdown
$ sudo service supervisor start

5. 最后,扔个python程序到服务器,定时检测内存超过90%则报警.
我采用slack报警,用到的py库:
https://pypi.python.org/pypi/psutil
https://pypi.python.org/pypi/pyslack-real
同样的,这个py程序,也放到supervisord里.
(这个报警程序,直接改cadvisor的代码用go实现也是一个很不错的选择.)

转载于:https://www.cnblogs.com/xiaouisme/p/5008964.html

(原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers相关推荐

  1. docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战

    docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活.最重要的是这个方案开源.免费.易用,是不花钱版监控方案.参考文档:https://bot ...

  2. cAdvisor+InfluxDB+Grafana 监控Docker

    容器的监控方案其实有很多,有docker自身的docker stats命令.有Scout.有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxD ...

  3. [原]ubuntu下制作openstack-havana源

    ubuntu下可以用apt-mirror下载openstack的源: 1.安装apt-mirror: apt-get install apt-mirror 2.配置/etc/apt/mirror.li ...

  4. jmeter线程说明_4.centos下Jmeter+InfluxDB+Grafana环境的搭建1

    如果这些内容对你有帮助,也可以打开微信扫一扫,加关注: 一.前言 本文中influxdb和Grafana下载.安装.配置及使用见另外3篇文章: 1.Influxdb使用1 2.Influxdb使用2 ...

  5. CentOS7下Telegraf+InfluxDB+Grafana 搭建服务器监控平台

    转载来源 : 作者:DevOps海洋的渔夫 链接:https://www.jianshu.com/p/0a8192751dce 来源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  6. ubuntu下安装,查看,拉取docker镜像

    参考文献: https://www.cnblogs.com/hupeng1234/p/9773770.html 根据这个文献以及浩哥的安装文档,跌跌撞撞也是成功了 其实首先在第一步更新apt-get的 ...

  7. Docker容器监控可视化cAdivisor+InfluxDB+Grafana

    问题 在日常的Docker使用过程中, 要想了解容器当前的运行状况 ,  通过docker stats命令就可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据 , 但是, docke ...

  8. Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线,详细步骤

    原 Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线 2018年08月01日 20:18:44 Xing_yb 阅读数:101 标签: FDDB 人脸检测 模型测试 ROC 曲线 ...

  9. kubernetes监控-Heapster+InfluxDB+Grafana(十五)

    cAdvisor+InfluxDB+Grafana cAdvisor:是谷歌开源的一个容器监控工具,采集主机上容器相关的性能指标数据.比如CPU.内存.网络.文件系统等. Heapster是谷歌开源的 ...

最新文章

  1. r语言如何写入一个excel_R语言如何进行聚类分析?
  2. 关于python语言、下列说法不正确的是-下列语句中,___________是不正确的Python语句...
  3. spring boot一个模块加载不到引用另一个模块的mapper.xml报错org.apache.ibatis.binding.BindingException: Invalid bound sta
  4. mysql 循环体 如何测试_mysql里如何循环插入数据,进行测试
  5. 关于一致性hash算法的几个问题
  6. 2017.3.29 lis 失败总结
  7. 97.用好浏览器的缓存
  8. oem718d 基准站设置_华测口袋RTK正式发布!-华测导航
  9. phpMailer在CentOS 6.5下无法发送邮件的解决办法
  10. JS对象编程的原型和构造函数混合使用
  11. Query全选全不选第二次失效问题解决办法
  12. springboot的web练手项目,适合新手,以及初级程序员项目实战,也适合老手进行二次开发的众多项目
  13. 小白刷LeeCode(算法篇):4
  14. 国内java报表软件简单对比
  15. countifs函数的使用方法,多条件函数运用
  16. 本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”
  17. 基于蜂群对花蜜需求所做的数量模型构建及分析
  18. matlab 截屏为什么没有呢,录屏没有呀!什么都没有,只有截屏,原来明明有的,现在不知道为什么就突然没有了(手机华为青春版)...
  19. 带你了解一下PHP搭建的电商商城系统
  20. Vero quibusdam eos alias.

热门文章

  1. Jedis连接Redis读写基本操作
  2. 《Android Studio开发实战 从零基础到App上线(第2版)》出版后记
  3. Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改
  4. Android开发笔记(一百零九)利用网盘实现云存储
  5. eclipse配置tomcat运行时访问路径不要项目名称
  6. [转载]Linux驱动-SPI驱动 之二:SPI通用接口层
  7. Javascript in one picture
  8. 关于ECLIPSE中JSP代码无提示
  9. [转][.NET 基于角色安全性验证] 之一:基础知识
  10. ASP与ActiveX控件交互实战(一)