十、微服务的可观测性实操

一、可观测性

  可观测性指的是通过工具收集系统,应用程序,组件等数据,查看其运行状态指标。分别有三个方向组成:日志(logging)、跟踪(tracing)、指标(metrices)

 

日志(logging)

   记录离散事件,为了分析程序的行为

跟踪(tracing)

   请求范围内的信息跟踪,目的是排查跟踪问题

指标(metrices)

  指的是可聚合,目的是监控和预警

 

二、Prometheus与Grafana实现指标

Prometheus:是一套开源的系统监控报警框架。

  特点:

  1.本身是时序数据库,所以支持强大的多维度数据模型。

  2.易管理, Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。

  3.有多种可视化图形界面。 易于伸缩。 需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100%。

Prometheus的适用场景:

  Prometheus在记录纯数值时间序列方面表现非常好。它既适用于以服务器为中心的监控,也适用于高动态的面向服务架构的监控。 在微服务的监控上,Prometheus对多维度数据采集及查询的支持也是特殊的优势。

  Prometheus更强调可靠性,即使在故障的情况下也能查看系统的统计信息。但设计金钱的统计就不适用,因为采集数据可能不是100%的

  Prometheus核心组件介绍

  Prometheus Server:Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

  Exporter:Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。

  Alertmanager:Prometheus的告警组件,负责整个集群的告警发送、分组、调度、警告抑制等功能。

  PushGateway:Pushgateway 它是prometheus的一个中间网管组件,类似于zabbix的zabbix-proxy。它主要解决的问题是一些不支持pull方式获取数据的场景,比如:自定义shell脚本来监控服务的健康状态,这个就没办法直接让prometheus来拉数据,这时就可以借助pushgateway,它是支持推送数据的,我们可以把对应的数据按照prometheus的格式推送到pushgateway,然后配置prometheus server拉取pushgateway即可。

  ui:Grafana、prometheus-ui是用来图形化展示数据的组件,其中prometheus-ui是prometheus项目原生的ui界面,但是在数据展示方面不太好用,因此推荐grafana来展示你的数据,grafana支持prometheus的PromQL语法

安装Prometheus

复制代码
mkdir /var/prometheus

docker run -d --name=prometheus -p 9090:9090 prom/prometheus

docker cp prometheus:/etc/prometheus/prometheus.yml /var/prometheus/ 

docker rm -f prometheus //上面的目的是为了把prometheus.yml文件复制出去运行



docker run -d --name=prometheus -p 9090:9090 -v /var/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
复制代码

安装完成后运行服务器+9090的端口,即会出现以下界面

 

安装Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana

安装完成后运行服务器+3000端口,默认账号密码是admin;成功登录会出现以下界面

 

 

 安装Node Exporter(linux安装的是node,而windows安装的是win)

docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  --restart always \
  prom/node-exporter

安装完成后输入9100/metrics,即可出现以下界面

配置Prometheus

vim /var/prometheus/prometheus.yml

在job_name下面新增以下配置文件

- job_name: service-a
    static_configs:
      - targets: ["159.75.18.105:9100"]
        labels:
          instance: node

重新启动Prometheus,打开浏览器可以见下图

配置Grafana

导入模板,其他模板可以到 https://grafana.com/grafana/dashboards 查看

 

 

 最终效果

使用Docker Exporter监控容器

用docker进行安装

docker run --name docker_exporter --detach --restart always --volume "/var/run/docker.sock":"/var/run/docker.sock" --publish 9417:9417 prometheusnet/docker_exporter

在Prometheus进行配置,添加下面配置项

- job_name: service-a
    static_configs:
      - targets: ["159.75.18.105:9417"]
        labels:
          instance: node

在grafana根据上面node-exporter的步骤进行导入对应的模板 https://grafana.com/grafana/dashboards/11467,最终效果

使用docker metrics 监控docker

开启metrics

vim  /etc/docker/daemon.json
{
  "metrics-addr" : "159.75.18.105:9323",
  "experimental" : true
}

重启docker

systemctl daemon-reload
service docker restart

配置Prometheus

- job_name: "docker"
    static_configs:
      - targets: ["159.75.18.105:9323", "192.168.88.146:9323"]

导入模板https://grafana.com/grafana/dashboards/1229

 最后:文章实现参考博主https://www.cnblogs.com/skychen1218/p/15325120.html

posted @   冼润伟  阅读(406)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示