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 的指标格式输出自己的运行 ...
随机推荐
- ios开发将截图保存到相册
- (void)loadImageFinished:(UIImage *)image { UIImageWriteToSavedPhotosAlbum(image, self, @selector(i ...
- iOS 给view,button,text filed,label等添加边框和颜色
self.tfaaa.layer.borderWidth = 2; self.tfaaa.layer.borderColor = [UIColor blueColor].CGColor;
- 基于Python的WEB接口开发与自动化测试 pdf(内含书签)
基于Python的WEB接口开发与自动化测试 目录 目 录O V目 录章 Python 学习必知 ................................................... ...
- mysql的驱动类com.mysql.jdbc.Driver过时了,需要用com.mysql.cj.jdbc.Driver代替
springboot项目整合mybatis,配置文件如下: server: port: 8081 mybatis: config-location: classpath:mybatis/mybatis ...
- mysql的HA及openstack和k8s区别
数据库HA(Hight Availability) mysql自身支持主主/主备部署,多主(>2),一主多备 galera mariadb集群:多主相互备份 修改容器的启动配置 修改Docker ...
- 构建Springboot项目的3种方式
一.自己创建: 1.创建maven项目 2.pom.xml添加如下内容: <!--1.指定依赖都由springboot管理--> <parent> <groupId> ...
- Linux DHCP 服务器配置与管理
一.环境介绍: 运行软件:VMware Workstation Pro 14 系统环境:CentOS-7-x86_64-1810 二.操作配置: 1.DHCP 服务器搭建 1)安装DHCP yum i ...
- [转帖]InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念
InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念 2017-12-15 15:37:00 jhzh951753 ...
- [转帖]是什么阻止了在18寸(450mm)晶圆上生产芯片?
是什么阻止了在18寸(450mm)晶圆上生产芯片? https://news.cnblogs.com/n/644247/ 投递人 itwriter 发布于 2019-10-16 14:32 评论(0) ...
- [SQL SERVER] - 还原数据库备份(SQL脚本),抛出 "System.OutOfMemoryException" 异常之解决
背景 在 Microsoft SQL Server 2016 的查询窗体中,直接还原备份数据库的 SQL 脚本(99MB),抛出 Cannot execute script 异常: 原因 相关资料说: ...