prometheus监控docker

prometheus是一款短期监控软件,他在云计算领域有很高的应用,与容器技术融合度非常高,在此我尝试使用prometheus监控docker容器,并自动发现新容器。

安装prometheus

创建配置文件

非容器版本的prometheus非常好部署,解压完就可以用了,但是docker中的就比较繁琐,我们需要提前准备要映射的配置文件。
在任意路径下创建prometheus.yml

vim prometheus.yml

文件内容如下:
(这个文件内容是我从容器中复制出来的,没有多余的东西,但保证不报错)

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
运行容器
docker run -itd -p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus  \
prom/prometheus
参数 释义
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器并返回容器ID,没有此参数终端会被容器占用
-p 映射端口,冒号前是宿主机,冒号后是容器
-v 映射路径/文件,映射文件的话宿主机中必须存在这个文件
--name 指定容器名称

如果出现任何容器闪退的现象通过查看容器日志定位错误

docker logs --tail=10 prometheus(容器名)
#10行不够可以多来点

然后查看镜像是否在运行,在浏览器上输入IP:9090,能显示出页面表示容器正常运行。

安装cAdvisor

prometheus无法独自收集容器信息,所以需要cAdvisor,同时他还可以完成自动发现容器的任务。

docker run -itd --name cadvisor -p 9001:8080 \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
google/cadvisor

我宿主机上的8080端口有别的用处,所以映射了9001,另外这里的路径映射每一行具体什么作用我不太清楚,希望有大佬可以指点指点。
安装完之后浏览器输入IP:9001,如果能看到下面这个猫头鹰则表示成功运行。


cadvisor主页.jpg

安装node-exporter

cAdvisor采集到的信息需要让node-exporter采集到,然后才能被prometheus获取到,所以需要在docker中安装node-exporter。

docker run -d -p 9100:9100 --name node-exporter \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

同样这里的路径映射我也不太明白,需要注意的一点,--path.procfs、--path.sysfs和--collector.filesystem.ignored-mount-points这三个参数必须放在最后面,否则docker会报错。
然后通过浏览器输入IP:9100/metrics来访问,如果能看到各项指标的参数表示启动成功,像下图一样。


node-exporter图片.png

修改配置文件

现在node-exporter已经可以采集到容器信息了,就差prometheus去node-exporter上拉取数据了,所以我们需要在prometheus的配置文件中配置需要拉取数据的node-exporter。

将scrape_configs部分的内容修改一下,注意targets后面的IP和端口号。

scrape_configs:
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090','cadvisor宿主机IP:9001','node-exporter宿主机IP:9100']

这里要注意一点,如果cadviosr、node-exporter和prometheus在同一台宿主机上,那么cadvisor和noed-exporter的IP不可以写localhost,一定要写IP,具体机制不太清楚。推测可能是因为prometheus就在容器里,如果填localhost的话相当于访问容器自身,所以自然无法获取到数据。
最后删除prometheus容器重建来重载配置文件。
网上有说通过curl -XPOST http://ID:9090/-/reload来重载配置,这需要在启动容器的时候各位添加参数并指定yml文件,但我测试的时候没好使……有时间再研究研究。

安装grafana

数据已经收集完成,现在只差将需要的数据展示出来,毕竟不能用promQL语言一个一个去查询。
同样运行docker命令

docker run -itd --name grafana -p 3000:3000 grafana/grafana

我映射了3000端口,然后就可以用浏览器访问这个端口,进入到grafana的界面。
初始用户名和密码都是admin,初次登陆系统需要更改密码。


grafana登录页面.jpg

登录成功后就可以看到grafana页面,首先需要配置数据源,我忘记有没有引导了,这里我直接新建数据源。

点击左侧齿轮选则Data Sources,点击右侧Add data source,在下一个页面中搜索prometheus即可
配置数据源1.png

然后填写prometheus的IP和端口,直接点击下面的Save&Test就可以了,图片里没有把按钮截取下来。
配置数据源2.png

它作为一个可视化的工具非常强悍,展示的仪表版可以随意定制,但好像挺麻烦的样子,我就不去弄了,直接使用别人制作好的仪表板。

点击左侧加号,选择import
添加模板1.png

搜索模板编号,可以在官网上找,监控不同的东西选择不同的仪表板,193用来监控docker比较好看,1860用来监控linux比较方便。
添加模板2.jpg

一般不需要修改什么,直接点击import即可,但要注意name位置不能和已有的模板重名
添加模板3.png

这是docker仪表板193的展示结果
仪表板.png

目前先到这里,之后我再更新alertmanager的安装与配置……不知道要等多久。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容