Prometheus

爱奇艺在 Dubbo 生态下的微服务架构实践

﹥>﹥吖頭↗ 提交于 2020-10-23 00:00:30
作者 | 周晓军 爱奇艺中间件团队负责人 导读 :本文整理自作者于 2020 年云原生微服务大会上的分享《爱奇艺在 Dubbo 生态下的微服务架构实践》,重点介绍了爱奇艺在 Dubbo、Sentinel 等开发框架方面的使用经验以及微服务生态体系的建设经验。 阿里巴巴云原生公众号后台回复 818 即可获取直播回看地址和大会 PPT 合集。 本文将主要围绕以下几个主题展开: Apache Dubbo 简介及其在爱奇艺的发展历史 爱奇艺内部对 Dubbo SDK 的扩展及围绕 Dubbo 相关的微服务生态建设 后续规划 Apache Dubbo 简介及其在爱奇艺的发展历史 1. Apache Dubbo 简介 Apache Dubbo 是一款由阿里开源的高性能 RPC 框架。Dubbo 框架本身除了通信外,还内置了微服务治理的多项功能(如注册发现,路由规则等)。 自从 2017 年重启维护以来,Dubbo 社区一直保持了较高的活跃度。从周边生态来看也相对比较完善,比如 Nacos、Sentinel 等开源框架都对其提供了支持。在语言支持方面,除了 Java 语言之外,Dubbo-go 社区目前也非常活跃,且针对 python,nodejs 等主流开发语言 Dubbo 也有一些开源实现。基于以上这些因素,我们决定引入 Dubbo 框架,用以替换原先自研的 RPC 框架。 爱奇艺是在

使用loki+promtail实现云原生日志分析

喜夏-厌秋 提交于 2020-10-22 12:21:55
** loki配置使用** 1 1. Loki 是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流配置一组标签。项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs,类似于 Prometheus 的日志系统。 2. 和其他日志系统不同的是,Loki 只会对你的日志元数据标签(就像 Prometheus 的标签一样)进行索引,而不会对原始的日志数据进行全文索引。然后日志数据本身会被压缩,并以 chunks(块)的形式存储在对象存储(比如 S3 或者 GCS)甚至本地文件系统。一个小的索引和高度压缩的 chunks 可以大大简化操作和降低 Loki 的使用成本。 对比其他日志系统 EFK(Elasticsearch、Fluentd、Kibana)用于从各种来源获取、可视化和查询日志。 Elasticsearch 中的数据以非结构化 JSON 对象的形式存储在磁盘上。每个对象的键和每个键的内容都有索引。然后可以使用 JSON 对象来定义查询(称为 Query DSL)或通过 Lucene 查询语言来查询数据。 相比之下,单二进制模式下的 Loki 可以将数据存储在磁盘上,但在水平可扩展模式下

优化:在k8s上部署的gitlab

久未见 提交于 2020-10-20 04:57:34
gitlab组件图 gitlab在k8s上占用资源 # kubectl top pods -n default | grep git* gitlab-gitaly-0 9m 444Mi gitlab-gitlab-exporter-59c6bdb69c-gz9nf 5m 36Mi gitlab-gitlab-shell-547cc48d99-kmrbp 10m 21Mi gitlab-gitlab-shell-547cc48d99-szg74 8m 25Mi gitlab-minio-5746f7f7c7-tdff5 0m 47Mi gitlab-prometheus-server-7d8bcf896d-vm5kq 14m 650Mi gitlab-redis-cd6b45457-2s4cg 9m 17Mi gitlab-registry-6c5df4646f-mbdkr 0m 15Mi gitlab-registry-6c5df4646f-mqkxl 0m 31Mi gitlab-sidekiq-all-in-1-576d89544d-8swmw 28m 967Mi gitlab-unicorn-68f8f8d8d9-6clpv 8m 1510Mi gitlab-unicorn-68f8f8d8d9-xbt8j 10m 1522Mi gitlab组件简介 对比kubectl

Prometheus 和 它的监控需求朋友们 ;)

爱⌒轻易说出口 提交于 2020-10-17 13:50:26
这篇博文的面向群体是 还不太了解 Prometheus 和 想要开始使用 Prometheus 的人群. 本文想做的事是 想尽力讲清楚 Prometheus 是如何看待监控这件事情 以及 Prometheus 是如何实现这些需求的. 本文中不会出现的内容: 跟 Prometheus 实现细节有太多相关的东西 等 当想看监控的时候, 我们到底想要什么? 我们想要看的东西也就是我们对监控的需求. 需求 在实际的生产过程中, 产生的和需要收集的监控数据分为很多种, 例如以下这些, 除此之外, 还有很多很多. 但从实现方式上来说, 大多都大同小异. 瞬时状态的 CPU 和 MEM 使用率读数 硬盘使用量的增长率 对 集群节点 状态 进行筛选 , 记录节点位于什么时刻不可用, 这就要求有 Tag 支持 瞬时状态的 网卡流量, 例如 100 Mbps, 服务请求量, 服务的 QPS, 服务的 错误率和错误次数 全部请求的平均时耗 一段时间内, 所有请求的 时耗中, 50% 的请求时耗小于多少毫秒, 95% 的请求时耗小于多少毫秒? 以此评估整体的接口情况 一段时间内, 所有请求的 时耗中, 多少请求时耗大于 1000ms, 多少请求时耗位于 200-500 区间内, 用于了解 请求时耗的具体分布, 以评估接口情况 …… 那么我们就需要一个 监控系统 来完成 上述需求, 这个监控系统

(三) Prometheus 监控思科交换机---Grafana 进行监控效果展示

折月煮酒 提交于 2020-10-16 18:23:52
Grafana Dashboard 进行监控效果展示 因为 Prometheus 的页面展示效果不是很好,一般就需要配合 Grafana 进行效果展示,Grafana更多地需要在浏览器进行操作 Prometheus 监控思科交换机文档完整地址: https://blog.51cto.com/liujingyu/category9.html 整体逻辑效果图 Grafana 连接 Prometheus 数据源(Data Source) PS:我部署的 Grafana 是经过汉化的 7.2.0 版本(已上传至阿里云仓库,公开版),对新手来说稍微友好一点,当然各位大神如果觉得不安全,或者喜欢用英文版本的,只需要去 Grafana 的官网下载部署最新版本即可。 Grafana 添加可以监控交换机的模板,我个人修改了几个,更贴合现在的使用环境 采用 Job 做的区分,而不是一个 Job 做的多个 target 一个 Job 对应多个 target 会有问题, Prometheus 会触发 400 的访问错误,然后我们的监控项也没办法做更进一步的区分 逻辑解释图 具体模板: 12492 detail 10523 所有接口 12489 SNMP Device Summary 11169 显示流量,单个交换机 示例图: 根据 10523 的模板进行的了一下简单修改,可以根据 Job 进行区分

进程在Linux上实际需要多少内存

China☆狼群 提交于 2020-10-14 11:00:09
你经常会在基于Linux的系统上面临的问题之一是管理内存预算。如果程序使用的内存多于可用内存,则可能会发生交换,这常常会对性能造成严重影响,或者激活了内存溢出(OOM),从而完全杀死了进程。 在调整内存使用之前,通过配置优化或者负载管理,有助于了解给定程序实际使用多少内存。 如果你的系统本质上运行单用户程序(总是有很多系统进程),那么这很容易。例如,如果我在具有128GB RAM的系统上运行专用的MySQL服务器,则可以使用“ used”作为已使用内存的标识,并使用“ available”作为仍可以使用的内存。 root@rocky:/mnt/data2/mysql# free -h total used free shared buff/cache available Mem: 125Gi 88Gi 5.2Gi 2.0Mi 32Gi 36Gi Swap: 63Gi 33Mi 63Gi 对于交换(swap),如果系统交换不频繁,即使使用了交换空间,它通常也会保留“不需要的垃圾”,这不需要考虑计算。 如果你使用的是Percona的监控和管理工具(PMM),则会在“Memory Utilization”中看到它: 并在“node summary”面板的的“swap activity”图中: 如果运行的多个进程共享着资源,则事情会变得复杂,因为“used”内存和进程之间没有一一对应的映射

prometheus 自定义告警 pushgateway alertmanager

主宰稳场 提交于 2020-10-13 08:56:24
1. 传输参数参考: https://github.com/prometheus/pushgateway )(prometheus pushgateway 以及alertmanager都部署好了) 2. 3. 4. 5. 6. 7. 8. 9. 10 [root@k8s-master01 pushtogatewaytest]# cat push.sh #!/bin/bash cat <<EOF | curl --data-binary @- http://192.168.48.18:9091/metrics/job/some_job/instance/some_instance another_metric 1601.284 EOF [root@k8s-master01 pushtogatewaytest]# - alert: "alert" expr: another_metric{exported_instance="some_instance",exported_job="some_job"} > 500 for: 10s labels: severity: 比较严重 annotations: summary: "{{$labels.mountpoint}} alert使用率过高!" description: "{{$labels.mountpoint }}

干掉ELK | 使用Prometheus+Grafana搭建监控平台

谁说我不能喝 提交于 2020-10-07 05:20:46
什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度数据模型。 · 灵活的查询语言。 · 不依赖分布式存储,单个服务器节点是自主的。 · 通过基于HTTP的pull方式采集时序数据。 · 可以通过中间网关进行时序列数据推送。 · 通过服务发现或者静态配置来发现目标服务对象。 · 支持多种多样的图表和界面展示,比如Grafana等 Prometheus的组件 Prometheus生态系统由多个组件组成,它们中的一些是可选的。多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署。 · Prometheus Server 主要负责数据采集和存储,提供PromQL查询语言的支持。 · 客户端SDK 官方提供的客户端类库有go、java、scala、python、ruby,其他还有很多第三方开发的类库,支持nodejs、php、erlang等。 · Push Gateway 支持临时性Job主动推送指标的中间网关。 · Exporter Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式

监控、链路追踪、日志这三者有何区别?

眉间皱痕 提交于 2020-10-06 09:06:27
   ★★★ 建议 星标 我们 ★★★   公众号改版后文章乱序推荐,希望你可以点击上方“ Java进阶架构师 ”,点击右上角,将我们设为 ★ “ 星标 ”!这样才不会错过每日进阶架构文章呀。       2020年Java原创面试题库连载中   来源:r6d.cn/mFJ6   1. 监控、链路追踪、日志   对于一个系统来说,监控、链路追踪、日志的这三者需求都是必然存在的,而有的时候我们会搞不清楚这三者相互之间是什么关系。我之前在做系统设计的时候也考虑过,是不是有必要引入那么多组件,毕竟如果这三者完全分开每一个一项的话,就有三个组件了(事实上就是:Prometheus+Grafana、Jaeger、ELK)。   因此想做个笔记尝试举例来梳理下。   外部链接:   Metrics, tracing, and logging地址:http://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html   2. 监控   Monitoring(监控)举例来说就是: 定期体检 。使用监控系统把需要关注的指标采集起来,形成报告,并对需要关注的异常数据进行分析形成告警。   特点是:   低频   定期   定量   这也是Prometheus的架构做得非常简单的原因

性能测试之Docker监控

喜夏-厌秋 提交于 2020-10-05 06:12:26
微服务、大中台盛行的当下,容器化已经被广泛使用。在性能测试过程中,对容器的监控模型构建也是必不可少的。 我们性能测试监控模型的构建一直是围绕着Prometheus和Grafana来展开的。她们可以快速的构建我们性能测试的绝大多数的监控模型:已介绍搭建了数据库监控、服务器监控。思路是相同的,也可自行快速构建自己所需的监控模型。 Docker容器监控 效果图 安装使用 Prometheus和Grafana的安装,参阅上文 安装启动cadvisor sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8090:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:v0.24.1 配置修改prometheus.yml,重启prometheus - job_name: 'docker' static_configs: - targets: - "ip:port" 下载Grafana的Node