【云原生】Prometheus之图形化界面grafana与服务发现部署

news2024/12/24 9:48:23

内容预知

 前言

1. 部署 Grafana 

 1.1 grafana的下载与安装

(1)安装grafana 

 (2)配置数据源

(3)导入 grafana 监控面板 

(4)删除模板操作 

 4.2 grafana的中文插件安装

2. 部署 Prometheus 服务发现

 2.1 基于文件的服务发现 

 实验前准备

(1)创建用于服务发现的文件,在文件中配置所需的 target  

(2)在载入的文件中添加新的node节点监控 

2.2 基于 Consul 的服务发现 

(1)部署Consul服务 

(2)在consul中注册service 

 (3)修改 prometheus 配置文件,让Prometheus基于consul进行服务发现

(4)在consul中添加node节点,从而改变Prometheus的监控节点 

 (5)consul注销与重新注册service

2.3  基于 Kubernetes API 的服务发现


 前言

上一篇文章中我们介绍了Prometheus的组件,监控作用,部署方式,以及如何通过在客户机安装exporter再添加监控项的操作。但是不免会发现原生的Prometheus的图像化界面对于监控数据并不能其他很好的展示效果。所以本次我们将介绍一款开源非常适用于Prometheus的图形化软件grafana 。

除此之外,上面的exporter监控项都是通过手动添加,这样效率慢而且需要中止Prometheus的工作进程,所以本次我们将介绍几种让Prometheus自动完成服务发现的方法

1. 部署 Grafana 

 1.1 grafana的下载与安装

(1)安装grafana 

下载地址:https://grafana.com/grafana/download
          https://mirrors.bfsu.edu.cn/grafana/yum/rpm/

yum install -y grafana-7.4.0-1.x86_64.rpm

systemctl start grafana-server
systemctl enable grafana-server

netstat -natp | grep :3000

浏览器访问:http://192.168.73.108:3000 ,默认账号和密码为 admin/admin

 

 

 (2)配置数据源

 Configuration -> Data Sources -> Add data source -> 选择 Prometheus
HTTP -> URL 输入 http://192.168.73.108:9090
点击 Save & Test

 

 

 

 点击 上方菜单 Dashboards,Import 所有默认模板
Dashboards -> Manage ,选择 Prometheus 2.0 Stats 或 Prometheus Stats 即可看到 Prometheus job 实例的监控图像

 

 

(3)导入 grafana 监控面板 

 浏览器访问:https://grafana.com/grafana/dashboards ,在页面中搜索 node exporter ,选择适合的面板,点击 Copy ID 或者 Download JSON

 

 

 在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板

 

 

 

(4)删除模板操作 

 

 

 4.2 grafana的中文插件安装

1、备份public目录

mv /usr/share/grafana/public /usr/share/grafana/public.source

2、备份/usr/sbin/grafana-server和grafana-cli

cp /usr/sbin/grafana-server /usr/sbin/grafana-server.source

cp /usr/sbin/grafana-cli /usr/sbin/grafana-cli.source

3、进入grafana-chinese目录 停止grafana服务,拷贝grafana/bin/linux-amd64/grafana-server 和 grafana-cli /usr/sbin目录

systemctl stop grafana-server
/bin/cp -rp bin/linux-amd64/grafana-server /usr/sbin/
/bin/cp -rp bin/linux-amd64/grafana-cli /usr/sbin/

4、拷贝grafana/public 到 /usr/share/grafana/

/bin/cp -rp public /usr/share/grafana/

5、启动grafana-server

systemctl start grafana-server

2. 部署 Prometheus 服务发现

 2.1 基于文件的服务发现 

 基于文件的服务发现是仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。
Prometheus Server 会定期从文件中加载 Target 信息,文件可使用 YAML 和 JSON 格式,它含有定义的 Target 列表,以及可选的标签信息。

 实验前准备

将就手动添加的监控项清除。

(1)创建用于服务发现的文件,在文件中配置所需的 target  

cd /usr/local/prometheus
mkdir targets

vim targets/node-exporter.yaml
- targets:
  - 192.168.73.105:9100
  - 192.168.73.106:9100
  labels:
    app: node-exporter
    job: node
#修改 prometheus 配置文件,发现 target 的配置,定义在配置文件的 job 之中
vim /usr/local/prometheus/prometheus.yml
......
scrape_configs:
  - job_name: nodes
    file_sd_configs:                  #指定使用文件服务发现
    - files:                          #指定要加载的文件列表
      - targets/node*.yaml            #文件加载支持通配符
      refresh_interval: 2m            #每隔 2 分钟重新加载一次文件中定义的 Targets,默认为 5m
  

systemctl reload prometheus

 

(2)在载入的文件中添加新的node节点监控 

 

 

2.2 基于 Consul 的服务发现 

Consul 是一款基于 golang 开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 

下载地址:https://www.consul.io/downloads/ 

(1)部署Consul服务 

mkdir -p /opt/prometheus/consul
cd /opt/prometheus/consul
unzip consul_1.9.2_linux_amd64.zip
mv consul /usr/local/bin/

#创建 Consul 服务的数据目录和配置目录
mkdir /var/lib/consul-data
mkdir /etc/consul/

#使用 server 模式启动 Consul 服务
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-config-dir=/etc/consul/ \
-bind=192.168.73.108 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

#查看 consul 集群成员
consul members

 

(2)在consul中注册service 

#在配置目录中添加文件
vim /etc/consul/nodes.json
{
  "services": [
    {
      "id": "node_exporter-node01",
      "name": "node01",
      "address": "192.168.73.106",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.73.106:9100/metrics",
        "interval": "5s"
      }]
    },
    {
      "id": "node_exporter-node02",
      "name": "node02",
      "address": "192.168.73.107",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.73.107:9100/metrics",
        "interval": "5s"
      }]
    }
  ]
}
#让 consul 重新加载配置信息
consul reload		

浏览器访问:http://192.168.73.108:8500

 

 

 (3)修改 prometheus 配置文件,让Prometheus基于consul进行服务发现

 

(3)修改 prometheus 配置文件
vim /usr/local/prometheus/prometheus.yml
......
  - job_name: nodes
    consul_sd_configs:                  #指定使用 consul 服务发现
    - server: 192.168.73.108:8500        #指定 consul 服务的端点列表
      tags:                             #指定 consul 服务发现的 services 中哪些 service 能够加入到 prometheus 监控的标签
      - nodes
      refresh_interval: 2m


systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

 

 

(4)在consul中添加node节点,从而改变Prometheus的监控节点 

vim /etc/consul/nodes.json

{
  "services": [
    {
      "id": "node_exporter-node01",
      "name": "node01",
      "address": "192.168.73.106",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.73.106:9100/metrics",
        "interval": "5s"
      }]
    },
    {
      "id": "node_exporter-node02",
      "name": "node02",
      "address": "192.168.73.107",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.73.107:9100/metrics",
        "interval": "5s"
      }]
    },
   ########向consul中新添加的master节点##################
    {
      "id": "node_exporter-master01",
      "name": "node02",
      "address": "192.168.73.105",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.73.105:9100/metrics",
        "interval": "5s"
      }]
    }
  ]
}


#让 consul 重新加载配置信息
consul reload	

 

 

 

 

 (5)consul注销与重新注册service

 

#让 consul 注销 Service
consul services deregister -id="node_exporter-node02"

#重新注册
consul services register /etc/consul/nodes.json

 

2.3  基于 Kubernetes API 的服务发现

 

基于 Kubernetes API 的服务发现机制,支持将API Server 中 Node、Service、Endpoint、Pod 和 Ingress 等资源类型下相应的各资源对象视作 target, 并持续监视相关资源的变动

●Node、Service、Endpoint、Pod 和 Ingress 资源分别由各自的发现机制进行定义

●负责发现每种类型资源对象的组件,在 Prometheus 中称为一个 role

●支持在集群上基于 DaemonSet 控制器部署 node-exporter 后发现各 Node 节点,也可以通过 kubelet 来作为 Prometheus 发现各 Node 节点的入口

#基于 Kubernetes 发现机制的部分配置参数
# The API server addresses. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically
and use the pod's
# CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.
[ api_server: <host> ]

# The Kubernetes role of entities that should be discovered. One of endpoints, service, pod, node, or ingress.
role: <string>

# Optional authentication information used to authenticate to the API server.
# Note that 'basic_auth', 'bearer_token'和'bearer_token_file' 等认证方式互斥;
[ bearer_token: <secret> ]
[ bearer_token_file: <filename> ]

# TLS configuration.
tls_config:
# CA certificate to validate API server certificate with.
[ ca_file: <filename> ]

# Certificate and key files for client cert authentication to the server.
[ cert_file: <filename> ]
[ key_file: <filename> ]

# ServerName extension to indicate the name of the server.
[ server_name: <string> ]

# Optional namespace discovery. If omitted, all namespaces are used.
namespaces:
names:
[ - <string> ]

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言中二维数组的基本使用 定义 赋值读写指定元素的值 作为函数参数传递的注意点

文章目录问题依次解决C语言中二维数组如何定义、如何一次性赋值&#xff1f;如何使用 sizeof() 计算二维数组的行数、列数&#xff1f;【与定义数组的地方&#xff0c;在同一作用域内可用】如何读写指定位置的元素&#xff1f;【不同作用域&#xff0c;有两种方式】不同作用域内…

Git(见资源)

Git的概念【1】Git技术&#xff1a;公司必备&#xff0c;一定要会 【2】Git概念&#xff1a; Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的项目。【3】什么是版本控制&#xff1f; 版本控制是一种记录一个或若干文件内容变化&#…

BGP基础实验(华为)

题目&#xff1a; 思路&#xff1a; 该题分为三个AS区域&#xff0c;并且三个区别间分别使用不同的路由&#xff0c;EBGP,IBGP,OSFP连接等&#xff0c;其中AS1与AS2之间使用的是EBGP连接&#xff0c;这点需要EBGP的命令来进行实现&#xff0c;AS2中使用的OSPF&#xff0c;AS2&a…

不规范使用ThreadLocal导致的bug,说多了都是泪

ThreadLocal一般用于线程间的数据隔离&#xff0c;通过将数据缓存在ThreadLocal中&#xff0c;可以极大的提升性能。但是&#xff0c;如果错误的使用Threadlocal&#xff0c;可能会引起不可预期的bug&#xff0c;以及造成内存泄露。 因为线程重用导致的信息错乱的bug 有时我们…

一起自学SLAM算法:11.2 环境感知

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 环境感知就是机器人利用传感器获取自身及环境状态信息的过程&#xff0c;自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等&#xff0c;下面具体讨论。 11.2.1 实时定位 定位其实就是在回答图…

BI技巧丨近两年及当年月份数据汇总

BOSS&#xff1a;白茶&#xff0c;有个需求&#xff0c;不知道你能不能做&#xff1f; 白茶&#xff1a;不能&#xff01; BOSS&#xff1a;我还没说呢&#xff0c;小伙砸&#xff01;做了加钱&#xff01; 白茶&#xff1a;BOSS您吩咐&#xff01; BOSS&#xff1a;是这样的&a…

C语言开发基于RT-Thread家庭安全环境检测系统源码,RTT设计大赛

基于RT-Thread家庭安全环境检测 简介 基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能&#xff0c;主要包含如下功能&#xff1a; 1、基于RT-Thread操作系统的按键组件&#xff0c;音频播放组件等&#xff1b; 2、基于AB32VG1开发板的语音播放功能&#xff1b…

BlackByte勒索软件开始使用新的数据泄露工具ExByte

BlackByte 勒索软件在 2021 年被首次发现&#xff0c;随后不断发现其变种。BlackByte 勒索软件不仅使用双重勒索&#xff0c;还运营着勒索软件即服务&#xff08;RaaS&#xff09;。最近&#xff0c;研究人员发现 BlackByte 开始使用名为 ExByte 的数据泄露工具来窃取受害者的数…

什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐

随着时代的发展&#xff0c;蓝牙耳机的使用频率越来越高&#xff0c;在日常生活中随处可见的戴蓝牙耳机的人。或是听音乐&#xff0c;或是追剧&#xff0c;或是玩游戏等等。在现如今众多的蓝牙耳机品牌当中&#xff0c;什么品牌的蓝牙耳机音质好&#xff1f;下面&#xff0c;我…

基于Yolo实现的交通路况汽车识别 附完整代码(使用Keras框架)

一、问题描述 假设你现在在做自动驾驶的汽车,你想着首先应该做一个汽车检测系统,为了搜集数据,你已经在你的汽车前引擎盖上安装了一个照相机,在你开车的时候它会每隔几秒拍摄一次前方的道路。 您已经将所有这些图像收集到一个文件夹中,并通过在您找到的每辆车周围画边界框…

BlackStone:一款功能强大的渗透测试报告工具

关于BlackStone BlackStone是一款功能强大的渗透测试报告工具&#xff0c;该项目可以帮助广大研究人员自动起草和提交渗透测试或安全研究审计报告。该工具允许我们在数据库中提交和存储渗透测试过程中发现的漏洞&#xff0c;并通过内部和外部审计来对漏洞进行分类。除此之外&a…

界面控件DevExpress WinForm的先进技术——服务器和即时反馈模式

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

vue中如何优雅的实现数字递增特效

需求 前几天项目开发中遇到一个需求&#xff0c;需要在数字更新时&#xff0c;实现其动态递增的效果 并且&#xff0c;在数字大于10000时&#xff0c;将单位进行转换&#xff0c;如数字大于10000时&#xff0c;单位从m变为万m 我们以vue中开发为例&#xff0c;一一实现下这两个…

多目标跟踪(MOT)入门介绍

1. 相关方向 这些是我所了解的多目标跟踪&#xff08;MOT&#xff09;的一些相关方向。其中单目标跟踪&#xff08;VOT/SOT&#xff09;、目标检测&#xff08;detection&#xff09;、行人重识别&#xff08;Re-ID&#xff09;都是非常热门的方向。而偏视频的相关方向就比较冷…

java 随机数种子 java设置随机数种子教程 java随机数种子怎么设置

我们常用的随机数生成就是Math.random()&#xff1b;java.util.Random类有两种方式构建方式&#xff1a;带种子和不带种子import java.util.Random;不带种子&#xff1a;不带种子将会返回随机的数字&#xff0c;每次运行结果不一样public class RandomTest {public static void…

分享149个ASP源码,总有一款适合您

ASP源码 分享149个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 149个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/173AhCXJgM5AvPqBw-la60w?pwdqk9j 提取码&#x…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他测…

SVN服务端使用教程

前言 正式进入公司项目后&#xff0c;我们需要和同事进行协同开发&#xff0c;此时代码管理工具是必不可少的&#xff0c;目前常用的两款工具是&#xff1a;SVN 和 Git。本人因为要搭建一个自动化测试的框架&#xff0c;对SVN和Git都不熟悉&#xff0c;在调研后选择了操作更为…

组合选择器

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>组合选择器</title> <style type"text/css"> /* 多个选择器组合在一起中间用逗号","隔开就形成了组合选择器&…

销售过程管理系统对企业的好处是什么

当线索转化成销售机会后&#xff0c;要不断地跟进才有可能成交。但是这个过程时间跨度长&#xff0c;涉及人员、要素过多&#xff0c;销售过程中经常会遇到很多的问题。不少企业使用CRM销售管理系统把控销售过程。下面来说说&#xff0c;为什么企业需要销售过程管理系统? 销售…