Docker部署

下载

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装

sudo yum install docker-ce

启动

 sudo systemctl start docker

加入开机启动

sudo systemctl enable docker

如果想监控Docker容器,可以安装cAdvisor

docker run                                    \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=: \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

访问http://XXX:8090可以看container的详细信息(打开过程可能会比较慢)

在Docker中部署Prometheus

修改prometheus.yml,添加cAdvisor监控

- job_name: cadvisor1
static_configs:
- targets: ['XXXX:8090'] #XXXX最好用真实的IP,不然可能会出问题

找不到prometheus.yml可以下载prometheus(https://prometheus.io/download/),解压,包里有

运行prometheus容器(第一次运行会自动拉取镜像)

docker run -d -p : --name=prometheus -v /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus   #/Users/caizh/fsdownload/prometheus.yml为本地prometheus.yml路径,换成自己的,/etc/prometheus/prometheus.yml为容器中路径

打开 http://XXXX:9090/targets 查看prometheus是否启动成功

成功界面如下

在Docker中部署Grafana

运行grafana容器

docker run -d -p : --name=grafana grafana/grafana

打开 http://XXXX:3000 查看grafana是否启动成功

成功界面如下

默认账号,密码都是admin

添加数据源,下载添加dashboard 参考另一篇:https://www.cnblogs.com/caizhenghui/p/9132414.html

可以在 https://grafana.com/dashboards 下载docker相关的dashboard,但是上边提供的dashboard效果不一定好,可以根据需要自己配

需要注意的是在docker中添加prometheus数据源,URL需要写真实IP,不然可能会出问题

如下图:

最后添加或配置好dashboard就可以看到容器的相关信息了

我配好的大体效果如下:

然后,就可以继续加入报警规则了

在Docker中部署Alertmanager

配置报警方式的配置文件config.yml

配置报警规则文件(我配置了两个,node_down.yml为 prometheus targets 监控,memory_over.yml节点内存使用率监控)

并在prometheus.yml中启用报警

配置过程参考:https://www.cnblogs.com/caizhenghui/p/9144805.html

启动alertmanager容器

docker run -d -p : -v /Users/caizh/fsdownload/:/etc/alertmanager/config.yml --name alertmanager prom/alertmanager

如果配置文件加载成功,在 http://XXXX:9093/#/status 会看到Config中是你的配置文件中的配置,如下图

重新启动prometheus容器,来加载报警配置

docker run -d -p : --name=prometheus \
-v /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /Users/caizh/fsdownload/node_down.yml:/etc/prometheus/node_down.yml \
-v /Users/caizh/fsdownload/memory_over.yml:/etc/prometheus/memory_over.yml \
prom/prometheus

报警规则配置成功在 http://XXXX:9090/alerts 可以看到报警规则已经添加到prometheus的Alerts中

停掉cAdvisor容器

docker stop cadvisor

等待一会,看是否会给你配置的邮件报警

成功邮件类似下图:

配来配去很麻烦有木有T^T。。。

我们来一个简单粗暴的方式

docker-compose

version: ''

networks:
monitor:
driver: bridge services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml
- /Users/caizh/fsdownload/node_down.yml:/etc/prometheus/node_down.yml
- /Users/caizh/fsdownload/memory_over.yml:/etc/prometheus/memory_over.yml
- /Users/caizh/fsdownload/record_rule.yml:/etc/prometheus/record_rule.yml
ports:
- "9090:9090"
networks:
- monitor alertmanager:
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always
volumes:
- /Users/sf/fsdownload/config.yml:/etc/alertmanager/config.yml
ports:
- "9093:9093"
networks:
- monitor grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
ports:
- "3000:3000"
networks:
- monitor

注:

  解释一下上边的record_rule.yml是啥,不关心则删掉record_rule.yml那行,并跳过这段  

record_rule.yml 配的是一个record rule的例子,是一个提前计算好的变量以方便grafana更快的调用

groups:
- name: memory_sum_by_job
rules:
- record: jvm_memory_bytes_used_total
expr: sum(jvm_memory_bytes_used) by (instance)

我的规则是计算各个节点JVM的堆和非堆内存使用量,当然要先装好jmx exporter,可参考 https://www.cnblogs.com/caizhenghui/p/9132414.html

更多信息参考官网:https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/

启动容器:

docker-compose -f /Users/caizh/Desktop/docker-compose-monitor.yml up -d

停止容器:

docker-compose -f /Users/caizh/Desktop/docker-compose-monitor.yml down

需要注意,down之后grafana中的登陆信息,配置等就没了,会自动删除容器,若不想删除可以用 docker stop 容器名 来停止容器

虽然简单,但还是先配一次熟悉一下为好~

内容较多,不是很详细,可以多参考之前的随笔~

【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控的更多相关文章

  1. cadvisor+prometheus+alertmanager+grafana完成容器化监控告警(一)

    一.概况 1.拓扑图 2.名词解释 Grafana 可视化监控容器运行情况 Prometheus: 开源系统监视和警报工具包 Alertmanager 一个独立的组件,负责接收并处理来自Prometh ...

  2. jmx_prometheus_javaagent+prometheus+alertmanager+grafana完成容器化java监控告警(二)

    一.拓扑图 二.收集数据 2.1前期准备 创建共享目录,即为了各节点都创建该目录,有两个文件,做数据共享 /home/target/prom-jvm-demo 1.下载文件 jmx_prometheu ...

  3. 群晖-使用docker套件部署Prometheus+Grafana

    Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...

  4. ELK 性能(3) — 在 Docker 上运行高性能容错的 Elasticsearch 集群

    ELK 性能(3) - 在 Docker 上运行高性能容错的 Elasticsearch 集群 介绍 在 Docker 上运行高性能容错的 Elasticsearch 集群 内容 通常熟悉的开发流程是 ...

  5. Prometheus Alertmanager Grafana 监控警报

    Prometheus Alertmanager Grafana 监控警报 #node-exporter, Linux系统信息采集组件 #prometheus , 抓取.储存监控数据,供查询指标 #al ...

  6. 定期从Docker上部署的MySQL备份数据

    前段时间公司停电,正巧赶上周一领导要开会要过一遍项目,然而项目所依赖的MySQL数据库是直接部署在宿主机,且因为各人部署方式不同的原因,花了很久才在开会前启动起来.于是开完会后,我第一件事就是把原先依 ...

  7. 部署 Prometheus 和 Grafana 到 k8s

    在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...

  8. [原创]在Docker上部署mongodb分片副本集群。

    一.安装docker. 请参考:http://www.cnblogs.com/hehexiaoxia/p/6150584.html 二.编写dockerfile. 1.在根目录下创建mongod的do ...

  9. Kubernetes1.16下部署Prometheus+node-exporter+Grafana+AlertManager 监控系统

    Prometheus 持久化安装 我们prometheus采用nfs挂载方式来存储数据,同时使用configMap管理配置文件.并且我们将所有的prometheus存储在kube-system #建议 ...

随机推荐

  1. 为什么有了Compose和Swarm,还会有Kubernetes的出现?

    一.k8s设计思想更先进 k8s的主要设置思想,是从更宏观的角度,以统一的方式来定义任务之间的各种关系 1.k8s的核心功能图 2.k8s的全局架构图 kube-apiserver:API服务 Kub ...

  2. POJ-2230-Watchcow-欧拉回路的路径输出+结构体

    Watchcow 这道题的题意好理解,就是要从1出发,每条边都走两遍,最后再回到1: 但是,我一开始没有想到和欧拉回路有什么关系: 学了求欧拉的dfs()后,试了一下发现和样例差不多: 感觉求回路,什 ...

  3. HDU - 4305 - Lightning 生成树计数 + 叉积判断三点共线

    HDU - 4305 题意: 比较裸的一道生成树计数问题,构造Krichhoof矩阵,求解行列式即可.但是这道题还有一个限制,就是给定的坐标中,两点连线中不能有其他的点,否则这两点就不能连接.枚举点, ...

  4. CF915C Permute Digits 字符串 贪心

    You are given two positive integer numbers a and b. Permute (change order) of the digits of a to con ...

  5. 牛客小白月赛6 A 鲲 数学

    链接:https://www.nowcoder.com/acm/contest/136/A来源:牛客网 北冥有鱼,其名为鲲,鲲之大,不知其几千里也. ——<庄子·逍遥游> HtBest有一 ...

  6. 一台Linux服务器可以负载多少个连接?

    首先我们来看如何标识一个TCP连接?系统是通过一个四元组来识别,(src_ip,src_port,dst_ip,dst_port)即源IP.源端口.目标IP.目标端口.比如我们有一台服务192.168 ...

  7. GNU大型项目构建和覆盖率生成(第一篇)

    目录 0. 序言 1. 项目描述 2. 项目构建 2.1 编译规则 2.2 构建过程 3. 覆盖率分析 0. 序言 在开始正文之前,请允许我先说明一下本文的目的和写作的动机,好让读者不惑. 我们知道, ...

  8. Python---网络爬虫初识

    1. 网络爬虫介绍 来自wiki的介绍: 网络爬虫(英语:web crawler),也叫网上蜘蛛(spider),是一种用来自动浏览万维网的网络机器人. 但是我们在写网络爬虫时还要注意遵守网络规则,这 ...

  9. 零基础一年拿下BAT三家offer

    背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...

  10. linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...