写点什么

Prometheus 实战 - 从 0 构建高可用监控平台(五)

  • 2023-05-08
    广东
  • 本文字数:3409 字

    阅读完需:约 11 分钟

当今的互联网应用系统越来越复杂,其中涉及的组件和服务越来越多,需要进行高效、可靠的监控,以保证系统的稳定性和性能。Prometheus 是一款功能强大的开源监控系统,可以实时监控多个维度的指标数据,并支持强大的查询语言和告警机制,是目前广泛使用的云原生应用监控系统之一。


本文档合集《Prometheus 实战:从 0 构建高可用监控平台》将从零开始,手把手教您如何构建一套高可用的 Prometheus 监控平台,涵盖了以下内容:


  1. Prometheus 集群搭建:实现高可用和可扩展的监控系统

  2. 动态监控指标:自动发现和注册要监控的目标

  3. 告警机制配置:灵活配置告警规则、分组、过滤、抑制,实时通知异常情况

  4. Grafana 可视化展示:直观了解系统运行状态和趋势


本文档合集的目标读者是具有一定 Linux 系统和网络知识的系统管理员和 DevOps 工程师。通过本文档合集的学习,您将掌握 Prometheus 的核心概念和实践技巧,能够快速搭建一套高效、可靠的监控平台,帮助您更好地管理和维护复杂的互联网应用系统。


本文以下内容主要设置 Grafana 可视化展示。

Grafana

Grafana 是一个流行的开源数据可视化和监控平台,它可以将来自多种数据源的数据进行可视化展示,并支持用户进行数据查询、分析、报告和告警等操作。Grafana 提供了丰富的可视化组件和面板,可以帮助用户轻松地创建自定义的仪表盘、报表和告警规则等。


Grafana 可以连接多种不同类型的数据源,包括开源的时序数据库如 Prometheus、InfluxDB、Graphite,商业数据库如 MySQL、PostgreSQL、Microsoft SQL Server,以及日志数据源如 Elasticsearch、Loki 等。Grafana 还支持通过插件扩展更多的数据源和功能。


在 Grafana 中,用户可以使用灵活的查询语言和表达式来对数据进行过滤、聚合、计算和可视化展示。Grafana 提供了丰富的可视化组件,包括图表、表格、地图、仪表盘等,用户可以根据需要自由组合和排列这些组件,创建自己的定制化监控面板。


下面内容主要介绍 Grafana 安装,系统模版-跳转链接, es 日志大盘, 同比画图, flowcharting, heatmap 等图形绘图。

node1 节点安装

cat > /etc/yum.repos.d/grafana.repo <<EOF[grafana]name=grafanabaseurl=https://packages.grafana.com/oss/rpmrepo_gpgcheck=1enabled=1gpgcheck=1gpgkey=https://packages.grafana.com/gpg.keysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtEOF
yum install grafana -y#启动Grafana服务systemctl start grafana-serversystemctl status grafana-server
#将Grafana服务设置为开机启动systemctl enable grafana-server
#Install additional font packagesyum install freetype* fontconfig urw-fonts -y
#默认账号和密码admin/admin
复制代码

从一个模版跳转到另外一个模版

主机(node_exporter)的 dashboard 用的是下面的这个模版


https://grafana.com/grafana/dashboards/8919-1-node-exporter-for-prometheus-dashboard-cn-0413-consulmanager/
复制代码


先需要模版的 《服务器资源总览表》 和 《 资源明细 | 资源明细》, 分成两个部分, 从 服务器资源总览表 dashboards 上点击主机地址,会跳转到 资源明细 | 资源明细 这个 dashboard。



Data Link:  http://monitor.xxx.com/grafana/d/aka/zhu-ji-zong-he-zi-yuan-jian-kong-xin-xi?orgId=1&var-vendor=&var-account=&var-module=All&var-name=${__data.fields.name}&var-instance=All&var-interval=5m&var-total=1&var-device=All&var-maxmount=%2Fdata&var-show_name=${__data.fields.name}&var-iid=&var-sname=
复制代码

使用 Prometheus offset 绘相对图形


namedprocess_namegroup_memory_bytes{instance=~"$instance", memtype="resident"} offset 1d
复制代码

基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化

已知的知识点:Elasticsearch 支持 Geo-point、Geo-shape 数据类型。Kibana 支持 Coordinate Map(坐标图)、Region Map(区域地图)可视化地图展示。


只缺 es 能把 IP 地址转经纬度坐标的信息这个功能, Ingest 数据预处理管道的 GeoIP processor (处理器)就能达到这个目的。

GeoIp processor 介绍

GeoIP 处理器是一种用于处理网络数据中的地理位置信息的工具。它通常用于网络数据分析、网络安全、广告定位、反欺诈检测等领域,可以根据 IP 地址或其他网络数据中包含的地理位置信息,对数据进行处理和分析。


以下是 GeoIP 处理器的一些常见功能:


IP 地址解析:GeoIP 处理器可以将输入的 IP 地址解析为对应的地理位置信息,包括国家、地区、城市、经纬度等。这可以帮助用户了解访问者的地理位置,从而进行更精准的定位和分析。


地理位置数据匹配:GeoIP 处理器可以将输入的地理位置信息与预先定义的地理位置数据进行匹配,以便对数据进行分类、筛选、聚合等操作。例如,可以将访问日志中的 IP 地址与地理位置数据进行匹配,以识别来自特定国家或地区的访问流量。


地理位置信息补全:对于缺乏完整地理位置信息的数据,GeoIP 处理器可以通过补全缺失的地理位置信息,例如根据 IP 地址推测访问者的城市或经纬度,从而对数据进行更全面的分析。


地理位置数据统计和可视化:GeoIP 处理器可以对地理位置信息进行统计和可视化,例如生成地理位置分布图、地理位置热图等,以便用户更直观地了解访问者的地理位置分布情况。


地理位置信息验证:GeoIP 处理器可以验证输入的地理位置信息的准确性,例如通过与第三方地理位置数据库进行比对,从而帮助用户判断数据的可靠性和准确性。


地理位置相关的安全检测:GeoIP 处理器可以用于网络安全领域,例如检测来自高风险地理位置的访问请求,识别可能的欺诈行为,对恶意活动进行实时响应等。


在 Elasticsearch 早期版本中 GeoIp processor 需要安装插件才能使用。7.X 版本后,ES 已自带,不需要安装。

数据预处理管道
PUT _ingest/pipeline/open_geoip_pipeline{  "processors": [    {      "grok": {        "field": "msgJson.addr",        "patterns": ["%{IPORHOST:ip_address}:%{INT:port}"]      }    },    {      "geoip": {        "field": "ip_address",        "target_field": "geo",        "ignore_missing": true      }    }  ]}
复制代码
LogStash 写入 es 之前使用预处理管道把 索引的 ip 地址(msgJson.addr)转化为带经纬度的地址信息。
input {    kafka {        # Kafka中没有初始偏移量或偏移量超出范围时该怎么办? 自动将偏移量重置为最新偏移量        auto_offset_reset => "latest"        codec => json        #consumer_id => "fb-open-buff"        # 消费者线程(默认为1),保证 消费的分区数和线程数一致以达到完美效果,线程数大于消费的分区数时将会产生空闲线程        # 如果一个logstash去消费3个分区,则应该设置为3,以提高吞吐量        consumer_threads => 3        topics => ["fb-open-buff"]        bootstrap_servers => "10.x.x.x:9092"        #提交消费情况, 默认5000ms一次        auto_commit_interval_ms => 5000    }}
filter { json { source => "message" target => "msgJson" remove_field => ["message"] }}
output { #stdout { # codec => rubydebug #} elasticsearch { hosts => ["http://10.x.x.x:9200"] user => 'admin' password => 'xxxx' index => "fb-open-buff.%{+YYYY.MM.dd}" codec => json pipeline => "open_geoip_pipeline" # 指定预处理管道名称 template_overwrite => true }}
复制代码
绘 heatmap 图

图层类型


图层样式类型有三种:markers,heatmap,geojson .
markers:就是最普通的,使用标记来展示数据。可以设置标记的图标样式和大小。数据较少时,采用markers样式是比较好的选择。
heatmap:热力图,即用热力图的形式,在地图上展示数据分布。这种适用于数据点比较多的情况。能够快速看到哪里的分布比较密集。
geojson:内置json数据文件。即导入grafana内置的一些数据。
复制代码



数据格式


geomap支持几种格式的地理位置数据。
1) coords:手动指定经纬度使用该方式,返回的数据中必须包含经度和维度信息。并且手动选择匹配经纬度的字段。
2) geohash:手动指定geohash值
3) lookup:自动查询匹配根据地理名称自动查询匹配.
4) auto:自动选择自动选择以上三种方式的一种,且不用手动指定字段。但是相对的,返回的字段里面必须严格按照规定的命名规则返回。
复制代码



效果



发布于: 14 小时前阅读数: 10
用户头像

还未添加个人签名 2018-12-12 加入

还未添加个人简介

评论

发布
暂无评论
Prometheus实战-从0构建高可用监控平台(五)_Linux_小毛驴的烂笔头_InfoQ写作社区