1. 部署cadvisor容器,用来收集host上的容器信息,该容器部署在需要收集容器信息的每一个主机上部署;

docker run -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 -p 8080:8080 --detach=true --name cadvisor google/cadvisor

2.部署grafana容器,用于将收集的主机容器数据显示到浏览器

docker run -d -p 3000:3000 --name grafana  --net=host grafana/grafana

3.部署prometheus server ,选定一台服务器

docker run -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/alert.rules:/etc/prometheus/alert.rules  -v /root/prometheus/conf.d:/etc/prometheus/conf.d  --name prometheus  --net=host  prom/prometheus

更改static_configs:

4.部署node-exporter

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

5.部署告警(钉钉告警)

打开 prometheus.yml文件,配置规则

rule_files:

- "alert.rules"

创建alert.rules 文件

在文件中定义了两个告警规则

-    alert: InstanceDown   如果有实例down了,alert 的状态会由 ok变为pending,达到5分,触发告警

-    alert: APIHighRequestLatency

本例prometheus为容器应用,重启容器,也就是重新加载prometheus.yml文件和alert.rules文件

docker run -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/alert.rules:/etc/prometheus/alert.rules  --name prometheus  --net=host  prom/prometheus

6.部署alertmanager告警管理程序

docker run -d -p 9093:9093 --name alertmanager -v /root/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

使用9093端口工作

更改prometheus.yml文件,加入

alerting:

alertmanagers:

- scheme: http

static_configs:

- targets:

- "ip:9093"

主要是发生了 alert ,将报警信息发到ip:9093这个服务器的9093端口上

配置alertmanager.yml配置文件

receivers:

- name: webhook

webhook_configs:

- url: http://ip:8060/dingtalk/ops_dingding/send

send_resolved: true

其中url: http://localhost:8060/dingtalk/ops_dingding/send为安装的prometheus-webhook-dingtalk.git  发生了 alert  发给http://localhost:8060

告警信息加入钉钉

在钉钉中加入机器人,通讯录-我的群组-软件研发-群机器人-自定义-添加-机器人名字/添加到群组,会生成一个url地址,将该地址url: https://oapi.dingtalk.com/robot/send?access_token=a7b646af2ff248da9a3fdf7e236438e641a11853fcb5c8c20f12037591c04e26复制

将钉钉接入 Prometheus AlertManager WebHook

7.安装 alertmanager webhook

mkdir -p /usr/lib/golang/src/github.com/timonwong/

cd  /usr/lib/golang/src/github.com/timonwong/

git clone https://github.com/timonwong/prometheus-webhook-dingtalk.git

cd prometheus-webhook-dingtalk

make(出错不要管他)

会生成 prommetheus-webhook-dingtalk执行程序

执行nohup ./prometheus-webhook-dingtalk --ding.profile="ops_dingding= https://oapi.dingtalk.com/robot/send?access_token=fd0ff6f99a4253279262f924e04a40b8e88f5aa7fefa8360c7a568e355e1ddbb"   2>&1 >dingding.log &

--ding.profile 可以在命令行中指定多次

该处的 https地址为在钉钉里加入机器人时产生的url地址

8.测试成功

监控生产线上服务器的docker容器及主机的更多相关文章

  1. Docker容器跨主机通信之:直接路由方式

    一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker ...

  2. .net core3.0部署Linux服务器 使用Docker容器和Nginx反代理教程

    本人刚接触.net core 由于公司项目需要部署在Linux上 近些日子学习和网上大面积搜教程 我在这给大家归拢归拢借鉴的教程做了套方案(我写的可以实现 但不一定是最好的 仅供参考) 我只用过cor ...

  3. 附加进程 到远程服务器中Docker容器内 调试

    很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常.通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程. VS中的附加进程非常强大 ...

  4. 重启服务器后Docker容器暴露的端口外网突然访问不了!!

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  5. Docker容器跨主机通信之:OVS+GRE

    一.概述 由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案 OVS OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛,值得我们去学习使 ...

  6. docker容器跨主机网络overlay

    前提:已部署好docker服务服务预计部署情况如下10.0.0.134 Consul服务10.0.0.135 host1  主机名mcw510.0.0.134 host2  主机名mcw6host1与 ...

  7. Docker容器跨主机通信

    默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信: 除此之外我们还可以通过 ...

  8. 利用远程服务器在docker容器搭建pyspider运行时出错的问题

    This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...

  9. Docker容器跨主机通信--overlay网络

    一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...

随机推荐

  1. CSV输入输出

    读取csv文件: import csv cf = open('D:\pywe.csv','rb') cf.readline() #读取标题行,光标移动到下一行(相当于调过标题行) for l in c ...

  2. xss challenges平台学习

    虽然在很早之前就接触过xss,有一段时间还就着一本书研究过,但是始终没有实感,掌握的也不够系统,所以现在借着这几个平台再学习一遍 首先来玩一玩xss challenge平台 第一关:http://xs ...

  3. C++作用域 (二)

    http://www.cnblogs.com/wolf-lifeng/p/3156936.html 2.3全局作用域 2.3.1概述 全局作用域是最大的名字空间作用域,不同于用户自定义的名字空间作用域 ...

  4. 【PHP】mysql_insert_id() 函数

    mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0. ...

  5. Kali-linux渗透攻击应用

    前面依次介绍了Armitage.MSFCONSOLE和MSFCLI接口的概念及使用.本节将介绍使用MSFCONSOLE工具渗透攻击MySQL数据库服务.PostgreSQL数据库服务.Tomcat服务 ...

  6. datetable dt.select使用詳情

    当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到: 1DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FRO ...

  7. Microsoft visual c++ 14.0 is required问题

    错误信息: error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Too ...

  8. SpringBoot实战(一)之构建RestFul风格

    RestFul风格是一种非常流行的架构风格,相关实战可以参考我的这篇博客:SSM框架之RestFul示例 论文可参考:https://www.ics.uci.edu/~fielding/pubs/di ...

  9. 推荐一个WPF仪表盘开源控件

    前段时间,做服务器端监控系统,为了界面好看,采用WPF.硬件相关监控,比如CPU.内存等,想用仪表盘控件.网上找了很多这种控件,基本上都是第三方商业控件(虽然很漂亮,不过得money...).最后在C ...

  10. vlc源码分析(五) 流媒体的音视频同步

    vlc播放流媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断校正本地时钟,播放音视频时根据本地时钟进行同步播放.首先了解两个概念:stream clock和sy ...