prometheus监控(小试牛刀)
prometheus监控(小试牛刀)
环境:全部服务都是基于docker运行
本文略微草率,好文章在这里,特别好如下:
https://www.cnblogs.com/tchua/p/11120228.html
- 整体环境思路:
注意:每一个操作建议结合情况使用,文章里的也会有很多错误,只是给一个思路方便理解
prometheus通过node-exporter收集当前主机运行的情况,因为本环境所有都使用的容器,所以对于node-exporter来说我们要将对应的目录进行映射,因为node-exporter是跑在容器里,但是我们要让他监控的是宿主机的各个状态
接着,部署grafana,它是从prometheus收集到的现成的数据,做一个合理的前端展示,它有丰富的模板,兼容性也很好
继续,我们部署了cadvisor容器服务.CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
再然后,部署了alertmanager容器服务,使之映射在主机的9093端口;prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向alertmanager发送告警信号,alertmanager收到告警信号之后,发送给相应的接受者(已经在配置文件定义好的)
docker pull prom/prometheus
#拉取prometheus镜像
docker pull prom/node-exporter
#拉取node-exporter镜像
docker pull grafana/grafana
#拉取grafana镜像
cat 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']
#prometheus运行端口
- job_name: 'linux'
static_configs:
- targets: ['172.21.71.50:9100']
#node节点端口
labels:
instance: node
运行容器
$ docker run -d \
> --net="host" \
> --pid="host" \
> -v "/:/host:ro,rslave" \
> prom/node-exporter \
> --path.rootfs /host
#运行node-exporter,这个比较特殊,在不是特别了解之前,先这样操作着
$ sudo docker run -d \
-p 9090:9090 \
-v /usr/local/prometheus/file/prometheus.yml:/usr/local/prometheus/file/prometheus.yml \
prom/prometheus \
--config.file=/usr/local/prometheus/file/prometheus.yml --web.enable-lifecycle
#运行prometheus容器
$ git clone https://github.com/grafana/piechart-panel.git
#饼图插件
$ docker run -d --name=grafana -v /usr/local/prometheus/grafana/plugin/:/var/lib/grafana/plugins/ -p 3333:3000 grafana/grafana
#运行grafana,grafana的默认账号密码是admin/admin
- Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行。
下载镜像
$ docker pull google/cadvisor
运行
cadvisor我们需要运行在docker宿主机上(与node_exporter类似),然后通过HTTP方式供Prometheus获取数据
$ docker run \
--volume=/:/roos:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=9101:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
#这个cadvisor也是比较特殊,在你不是很熟悉它之前,按照我的操作做下去
注意:这里是把容器8080端口映射到主机9101,cadvisor有web界面地址:http://IP:9101
接入Grafana展示容器监控数据
这里我们去Grafana官网,找别人做好的Dashboard模板,地址:https://grafana.com/dashboards/4170,下载模板json文件然后导入本地Grafana。关于导入Dashbozrd模板参考https://www.cnblogs.com/tchua/p/11115146.html
接下来进行的操作是修改下该模板文件的一个变量,因为它本来是为cadvisor定做的;
修改成我这个样子即可(在你对它不是很了解之前,按照文档的做下去,再变通)
如果一切顺畅,那么就会出现下图这样
现在这个程度还不行,因为版本的问题,因为该模板不是基于最新版Node_exporter开发,有些值并不适用,我们需要修改对应的值,具体我们也可以通过Prometheus查询界面确定value值。
- 部署alertmanager实现报警功能
$ docker pull prom/alertmanager(linuxtips/alertmanager_alpine)
#拉取alertmanager镜像
$ cat /usr/local/prometheus/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receivers: ying.qiao
receivers:
- name: 'ying.qiao'
webhook_configs:
- url: 'https://hook.bearychat.com/=bwD9B/prometheus/2e31f72d81f31d322db49e85d22e1cee'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
prometheus添加告警规则
$ sudo mkdir /usr/local/prometheus/rules
$ sudo vim /usr/local/prometheus/rules/node_alerts.yml
groups:
- name: node_alerts
rules:
- alert: InstanceDown ## alert名称
expr: up{job='node'} == 0 ## 报警条件
for: 1m ## 超过1分钟,prometheus会把报警信息发送至alertmanger
labels:
severity: "warning"
annotations:
summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!
这里有一个很坑的问题,花括号里的job后面那个node,必须要和在prometheus.yml里定义的job名称严格一致
$ sudo vim /usr/local/prometheus/file/prometheus.yml
rule_files:
- /usr/local/prometheus/rules/node_alerts.yml
#指定对应的规则文件
alerting:
alertmanagers:
- static_configs:
- targets:
- 172.21.71.50:9093 ## alertmanager服务地址
## 添加prometheus对alertmanager服务的监控
#以上配置文件,注意下添加的位置
- job_name: 'alertmanager'
static_configs:
- targets: ['172.21.71.50:9093']
重启prometheus,并启动alertmanager
$ docker rm -f c1473106d0f0
$ docker run -d -p 9090:9090\
-v /usr/local/prometheus/file/prometheus.yml:/usr/local/prometheus/file/prometheus.yml\
-v "/usr/local/prometheus/file/alertmanager_rules.yml:/usr/local/prometheus/file/alertmanager_rules.yml:ro"\
prom/prometheus\
--config.file=/usr/local/prometheus/file/prometheus.yml\
--web.enable-lifecycle
$ docker run -d -p 9093:9093 \
-v /usr/local/prometheus/alertmanager/:/usr/local/prometheus/alertmanager/ \
-v /var/lib/alertmanager:/alertmanager \
--name alertmanager prom/alertmanager \
--config.file="/usr/local/prometheus/alertmanager/alertmanager.yml" \
--storage.path=/alertmanager
prometheus监控(小试牛刀)的更多相关文章
- prometheus监控系统
关于Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等,以找到系统的 ...
- Kubernetes集群部署史上最详细(二)Prometheus监控Kubernetes集群
使用Prometheus监控Kubernetes集群 监控方面Grafana采用YUM安装通过服务形式运行,部署在Master上,而Prometheus则通过POD运行,Grafana通过使用Prom ...
- SpringCloud使用Prometheus监控(基于Eureka)
本文介绍SpringCloud使用Prometheus,基于Eureka服务发现. 1.Prometheus介绍 在之前写过两篇有关Prometheus使用的文章,如下: <SpringBoot ...
- SpringBoot使用prometheus监控
本文介绍SpringBoot如何使用Prometheus配合Grafana监控. 1.关于Prometheus Prometheus是一个根据应用的metrics来进行监控的开源工具.相信很多工程都在 ...
- Prometheus 监控Haproxy
Prometheus 监控Haproxy 普罗米修斯是一个完整的监控和趋势系统,包括基于时间序列数据的内置和主动刮削,存储,查询,绘图和警报,以下使用Prometheus+grafana对Haprox ...
- 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库
一.背景 在平时开发过程当中需要针对 MySQL 数据库进行监控,这里我们可以使用 Grafana 和 Prometheus 来实现监控功能.Grafana 是一款功能强大的仪表盘面板,支持多种数据源 ...
- Prometheus监控学习记录
官方文档 Prometheus基础文档 从零开始:Prometheus 进阶之路:Prometheus —— 技巧篇 进阶之路:Prometheus —— 理解篇 prometheus的数据类型介绍 ...
- Prometheus监控学习笔记之prometheus的federation机制
0x00 概述 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目.也就是说整个监控系统不 ...
- Prometheus监控学习笔记之Prometheus不完全避坑指南
0x00 概述 Prometheus 是一个开源监控系统,它本身已经成为了云原生中指标监控的事实标准,几乎所有 k8s 的核心组件以及其它云原生系统都以 Prometheus 的指标格式输出自己的运行 ...
随机推荐
- 多个wav音频文件合并(连接)成一个文件
场景:一段声音从浏览器麦克风缓冲上一段一段发给服务器,按照时间戳生成很多文件. 目的:把他们按时间顺序连到一个时间轴上. 命令如下: ffmpeg -f concat -i list.txt out. ...
- Python - Django - simple_tag 和 inclusion_tag
simple_tag: simple_tag 和自定义 filter 类似,但可以接收更多更灵活的参数 在 app01/templatetags/ 目录下创建 mysimple_tag.py mysi ...
- (NSNumber **)value和(NSNumber * __autoreleasing *)value
今天在看别人开源项目的时候看到这样的代码: 正文从这里开始~~~ 定义如下: /** 评论详情页基础设置 @param BaseSettingBlock 基础设置 */ - (void)setUpCo ...
- PNG压缩工具-PNGGauntlet
PNGGauntlet下载地址 对于前端来说非常实用的PNG压缩软件,支持拖拽,就是软件速度比较慢.
- 知识点-Spark小节
Spark处理字符串日期的max和min的方式Spark处理数据存储到Hive的方式Spark处理新增列的方式map和udf.functionsSpark处理行转列pivot的使用Python 3.5 ...
- eNSP下配置Trunk接口实现跨交换机传递数据
当Trunk端口发送数据帧的时候,当所发送帧的VLAN ID与端口的PVID不同是,检查是否允许该VLAN通过,若允许的话,直接透传,不允许就直接丢弃:当该帧的VLAN ID与端口的PVID相同时,则 ...
- ACL 实验
一.环境准备 1. 软件:GNS3 2. 路由:c7200 二.实验操作 实验要求: 1. 掌握标准 ACL.扩展 ACL 的配置方法. 2. 掌握命名 ACL 的配置方法. 3. 掌握访问控制列表配 ...
- [CF1005F]Berland and the Shortest Paths_最短路树_堆优化dij
Berland and the Shortest Paths 题目链接:https://www.codeforces.com/contest/1005/problem/F 数据范围:略. 题解: 太鬼 ...
- Quartz.Net—基本操作
Quratz基本架构 Scheduler基本操作 /// <summary> /// 调度器信息 /// </summary> /// <returns></ ...
- 二十二、DMA驱动
一.DMA简介 DMA(Direct Memory Access,直接内存存取),DMA传输将数据从一个地址空间复制到另外一个地址空间.传输过程由DMA控制器独立完成,它并没有拖延CPU的工作,可以让 ...