Prometheus

一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起

假装没事ソ 提交于 2020-08-07 01:36:54
上帝之火 本系列讲述的是开源实时监控告警解决方案 Prometheus ,这个单词很牛逼。每次我都能联想到带来上帝之火的希腊之神,普罗米修斯。而这个开源的logo也是火,个人挺喜欢这个logo的设计。 本系列着重介绍 Prometheus 以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台。 本系列受众对象为初次接触 Prometheus 的用户,大神勿喷,偏重于操作和实战,但是重要的概念也会精炼出提及下。系列主要分为以下几块 Prometheus 各个概念介绍和搭建,如何抓取数据(本次分享内容) 如何推送数据至 Prometheus ,推送和拉取分别用于什么样的场景 Prometheus 数据的结构以及查询语言 PromQL 的使用 Java应用如何和 Prometheus 集成,如何启用服务发现,如果自定义业务指标 Prometheus 如何和 Grafana 可视化套件进行集成和设置告警 教你如何手写一个集成了监控Dubbo各个指标的java套件 实际案例分享,如何做各个业务端和系统端的监控大盘 Prometheus以及时序数据库的基本概念 Prometheus 现在在 Github 有3w多的star,基本上过万星的开源工具,可以认为是社区里绝对的主流,社区也相当活跃,可以有大量的经验可以借鉴。在企业级系统中,可以放心的使用。 Prometheus 是由

Kubernetes 部署 Nebula 图数据库集群

早过忘川 提交于 2020-08-06 19:40:04
Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应用部署,规划,更新,维护的一种机制。<br />Kubernetes 在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以 部署、维护和扩展应用程序的机制 ,组成 Kubernetes 的组件设计概念为 松耦合 和 可扩展 的,这样可以使之满足多种不同的工作负载。可扩展性在很大程度上由 Kubernetes API 提供,此 API 主要被作为扩展的内部组件以及 Kubernetes 上运行的容器来使用。 Kubernetes 主要由以下几个核心组件组成: etcd 保存了整个集群的状态 apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等 scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上 kubelet 负责维护容器的生命周期,同时也负责 Volume和网络的管理 Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI) kube-proxy 负责为 Service 提供 cluster

日志系统新贵 Loki,真香!!

随声附和 提交于 2020-08-06 14:11:53
最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Loki的背景。 背景和动机 当我们的容器云运行的应用或者某个节点出现问题了,解决思路应该如下: 我们的监控使用的是基于prometheus体系进行改造的,prometheus中比较重要的是metric和alert,metric是来说明当前或者历史达到了某个值,alert设置metric达到某个特定的基数触发了告警,但是这些信息明显是不够的。 我们都知道,k8s的基本单位是pod,pod把日志输出到stdout和stderr,平时有什么问题我们通常在界面或者通过命令查看相关的日志 举个例子:当我们的某个pod的内存变得很大,触发了我们的alert,这个时候管理员,去页面查询确认是哪个pod有问题,然后要确认pod内存变大的原因,我们还需要去查询pod的日志,如果没有日志系统,那么我们就需要到页面或者使用命令进行查询了: 如果,这个时候应用突然挂了,这个时候我们就无法查到相关的日志了,所以需要引入日志系统,统一收集日志,而使用ELK的话,就需要在Kibana和Grafana之间切换,影响用户体验。 所以 ,loki的第一目的就是最小化度量和日志的切换成本,有助于减少异常事件的响应时间和提高用户的体验

轻量级日志采集系统Loki+grafana搭建

坚强是说给别人听的谎言 提交于 2020-08-06 03:46:36
一.Loki介绍 整体架构 Loki的架构非常简单,使用了和prometheus一样的标签来作为索引,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据,不但减少了两种查询之间的切换成本,也极大地降低了日志索引的存储。 Loki将使用与prometheus相同的服务发现和标签重新标记库,编写了pormtail, 在k8s中promtail以daemonset方式运行在每个节点中,通过kubernetes api等到日志的正确元数据,并将它们发送到Loki。 下面是日志的存储架构: 二.使用二进制包简单搭建 使用docker-composer可能比较方便,我们这里采用二进制包安装 1.安装loki主程序包 loki-linux-amd64.zip 查看配置文件 [root@centos7 Loki]# cat loki-config.yaml auth_enabled: false server: http_listen_port: 3100 ingester: lifecycler: address: 127.0.0.1 ring: kvstore: store: inmemory replication_factor: 1 final_sleep: 0s chunk_idle_period: 5m chunk_retain_period: 30s max

IBM Cloud 云监控

给你一囗甜甜゛ 提交于 2020-08-05 19:05:25
提到Sysdig大家会想到市面比较主流的监控软件Grafana(跨平台的可视化日志分析和监控工具)、Kibana(ELK堆栈的一部分,用于数据分析和日志监视)、Prometheus(容器部署整个技术栈,开源的自主托管监控方案),基于不同的监控对象和应用规模,它们都有各自不同的特点和优势。 今天我们要介绍的是IBM Cloud的云监控解决方案Sysdig,云上的IaaS资源除了传统的虚拟机实例,同样也包括容器集群,云函数,云数据库等PaaS服务。 根据业务和服务具体需求,算力资源可能在全球多个区域部署,那么对监控平台的数据采集,日志汇总、分析和可视化仪表都会有很高的要求。 IBM Cloud选择Sysdig应该是想借助一套完全托管的企业级监视服务(客户无需维护服务系统,上手简洁方便),统一地管控云上多样化资源,并提供面向服务的视图、全面的指标和强大的预警功能,让云监控变得更加高效。 Sysdig常见的监控对象包括云主机和容器, 在IBM Cloud上云主机实例包括(经典架构)裸机和虚拟机,VPC虚拟机。 今天小实验的对象是经典架构下虚拟机的自动化agent部署和监控。 1.创建sysdig托管服务实例 选择Free tier - Lite 配置,服务创建在哪里?最好的选择是离监控资源就近的区域,如果有需要也可尝试启用“IBM Platform Metrics”

How to monitor JDBC calls and statistics with Grafana

一个人想着一个人 提交于 2020-08-05 16:44:29
问题 How can I monitor JDBC calls(Oracle/MySql/Postgre etc.) statistics for my spring boot application with Grafana/Premetheus?. Do we have any plugin for it ?. is it possible to capture this statistics through Grafana/Prometheus? Specifically I am looking for statistics like, i.e. How many open connection I have with database? Whether my database is up or not? What queries are causing longest response time etc ?. 回答1: You can try using micrometer. This is the metrics provider for spring boot. I'm

How to monitor JDBC calls and statistics with Grafana

醉酒当歌 提交于 2020-08-05 16:43:24
问题 How can I monitor JDBC calls(Oracle/MySql/Postgre etc.) statistics for my spring boot application with Grafana/Premetheus?. Do we have any plugin for it ?. is it possible to capture this statistics through Grafana/Prometheus? Specifically I am looking for statistics like, i.e. How many open connection I have with database? Whether my database is up or not? What queries are causing longest response time etc ?. 回答1: You can try using micrometer. This is the metrics provider for spring boot. I'm

grafana 7.0 支持分布式追踪框架的dashboard 展示

橙三吉。 提交于 2020-08-05 10:34:22
grafana 7.0 最近发布了,添加了对于分布式追踪(opentracing)的展示支持,同时界面ui也有调整 以下是一个简单的试用 环境准备 docker-compose 文件 version: "3" services: grafana: image: grafana / grafana: 7.0.0 ports: - "3000:3000" jaeger: image: jaegertracing / all - in - one: 1.18 environment: - "COLLECTOR_ZIPKIN_HTTP_PORT=9411" ports: - "9411:9411" - "5775:5775/udp" - "6831:6831/udp" - "6832:6832/udp" - "16686:16686" 配置 demo 项目 clone 代码 git clone https: //github.com/luoyjx/opentracing-demos.git 运行 参考node 项目运行就可以了,注意部分端口需要修改不然会有冲突的问题 查询效果 说明 grafana 的功能是越来越强大了,我们可以基于分布式追踪以及prometheus metrics 实现一个比较统一的dahsboard监控系统 参考资料 https://grafana.com/blog

我用 docker 部署 prometheus

可紊 提交于 2020-08-05 05:11:14
安装 Master 首先把所以机器名配置在 /etc/hosts 文件中。 配置文件 : /etc/prometheus/prometheus.yml 内容如下: global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_export' static_configs: - targets: - server1:9100 - server2:9100 启动命令 docker run \ --name prometheus \ -d -p 9090:9090 \ -v /etc/hosts:/etc/hosts \ -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus \ --web.read-timeout=5m \ --config.file=/etc/prometheus

prometheus 数据查询

旧时模样 提交于 2020-08-05 05:05:42
安装 学习了表达式可以再 Grafana 中直接使用 1.标签表达式 =: 精确地匹配标签给定的值 !=: 不等于给定的标签值 =~: 正则表达匹配给定的标签值 !~: 给定的标签值不符合正则表达式 正则表达式要写为.+或这.* 2.简单的使用 3.时间区间过滤 s - seconds m - minutes h - hours d - days w - weeks y - years 时间区间必须用[] http_server_requests_seconds_count{job="PingPangChat",method=~"POST|GET"}[1m] offset偏移修饰符必须直接跟在选择器后面 不用[] 在当前时间基准的基础上往前推进指定offset时间作为基准时间 count(http_server_requests_seconds_count{job="PingPangChat",method=~"POST|GET"} offset 5m) 3.函数 rate、irate计算范围向量中时间序列的每秒即时增长率, 注意这里要配合时间来用 irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter) sort、sort_desc 排序 数据量最多的前几位 topk(10,http_server_requests_seconds