栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Prometheus + Grafana 实现监控功能总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Prometheus + Grafana 实现监控功能总结


一个简洁的博客网站:http://lss-coding.top,欢迎大家来访
学习娱乐导航页:http://miss123.top/


1. Prometheus 简介

Prometheus 是近几年比较火的开源监控框架,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。Prometheus 的上报客户端分为不同语言的 SDK 和不同用途的 exporter 两种,比如如果你想要监控机器状态、mysql 性能等,有大量已经成熟的 exporter 来直接开箱使用,通过 http 通信来对服务端提供信息上报(server 去 pull 信息);而如果想要监控自己的业务状态,那么针对各种语言都有官方或其他人写好的 sdk 可供使用,都比较方便。Prometheus 是客户端本地也会存储监控数据,服务端定时来拉取想要的数据。Prometheus 界面是比较简洁的,简洁到只能算一个测试和配置平台。可以搭配 Grafana 得到更加清晰的监控页面。

Prometheus 作为一个中间点,Grafana 作为可视化展示,exporter 作为监控,exporter 将需要获取的数据获取并连接到 Prometheus,而 Prometheus 连接到 Grafana,直观展示被监控者状态;

2. Grafana 简介

一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。主要有以下六大特点:

    展示方式:快速灵活的客户端图标,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图标等多种展示方式;数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch 和 KairosDB 等;通知提醒:以可视方式定义最重要指标的警报规则,Grafana 将不断计算并发送通知,在数据达到阈值时通过 Slack、PagerDuty 等获得通知;混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在时间上会显示完整的事件元数据和标记;过滤器:Ad-hoc 过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用与使用该数据源的所有查询。

简单说:这是一个多用途的监控工具,同时通过邮件等方式进行有效的预警通知,丰富的直观的可视化界面,多种数据源配置是它的优点。

3. 安装 Prometheus

下载地址:https://gitee.com/lishisen123_admin/software/raw/master/prometheus/prometheus-2.7.2.linux-amd64.tar.gz

下载好之后上传到服务器的 /opt/ 目录下进行解压操作

# 解压
tar -zxvf prometheus-2.7.2.linux-amd64.tar.gz
# 进入解压目录
cd prometheus-2.7.2.linux-amd64
# 运行
./prometheus --config.file=prometheus.yml

# 启动后浏览器访问 “ ip + :9090” ,如果出现可视化界面说明成功

prometheus.yml 配置文件:后面在配置一些监控信息的时候需要用到这个配置文件

# my global config 
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
    
分为 4 部分:
1. global:全局配置,其中 scrape_interval 表示抓取一次数据的间隔事件,evaluation_interval 表示进行告警规则检测的间隔时间;
2. alerting:告警管理器(alertmanager)的配置,目前还没有安装 alertmanager;
3. rule_files:告警规则有哪些;
4. scrape_configs:抓取监控信息的目标,一个 job_name 就是一个目标,其中 targets 就是采集信息的 ip 和端口。这里默认监控了 Prometheus自己,可以通过修改这里来修改  Prometheus 的监控端口。Prometheus 的每个 exporter 都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者 mysql 性能等等,不同语言 sdk 也会是一个目标,它们会上报你自定义的业务监控信息。
4. 安装 Grafana

下载地址:https://gitee.com/lishisen123_admin/software/raw/master/prometheus/grafana-6.0.0.linux-amd64.tar.gz

下载好之后上传到服务器的 /opt/ 目录下进行解压操作

# 解压
tar -zxvf grafana-6.0.0.linux-amd64.tar.gz
# 进入解压目录
cd grafana-6.0.0/
# 进入 bin 目录下执行下面命令更新插件
./grafana-cli plugins install grafana-piechart-panel
# 启动 Grafana
./grafana-server web

# 启动后在浏览器输入 “ ip + :3000 ” 进行访问,管理员账号密码默认都是 admin/admin。首次登录会提示修改管理员密码,然后就可以登录查看了

5. 监控机器状态

监控机器的运行状态:CPU、磁盘、网络等状态

    下载需要的监控采集工具:https://gitee.com/lishisen123_admin/software/raw/master/prometheus/node_exporter-0.17.0.linux-amd64.tar.gz

    下载好之后上传到服务器的 /opt/ 目录下进行解压运行操作

# 解压
tar -zxvf node_exporter-0.17.0.linux-amd64.tar.gz
# 进入目录
cd node_exporter-0.17.0.linux-amd64/
# 运行监控采集服务
./node_exporter
# 运行之后可以在浏览器通过访问 “ ip + :9100/metrics ” 访问,有内容则表示成功

    修改配置文件
# 进入 prometheus 目录中修改 prometheus.yml 配置文件
cd /opt/prometheus-2.7.2.linux-amd64/
# vim 编辑配置文件
vim prometheus.yml
# 添加以下内容

  - job_name: 'server'
    static_configs:
      - targets: ['localhost:9100']
      
# 添加完内容后重启 ./prometheus

    在 Grafana 中配置展示监控页面

    添加数据源

​ 选择 prometheus

​ 填入名称, http://ip + 9090 然后点击下方 Save&Test 按钮

​ 然后点击 Dashboards 按钮

​ 然后点击左侧加号 import

​ 在 dashboard usrl or id 中输入 8919

​ 也可以自己选择官方展示面板,链接: https://grafana.com/dashboards

​ 点击 import

6. 监控 Redis 访问情况
    下载需要的监控采集工具:https://gitee.com/lishisen123_admin/software/raw/master/prometheus/redis_exporter-v1.0.3.linux-amd64.tar.gz下载好之后上传到服务器的 /opt/ 目录下进行解压运行操作
# 解压
tar -zxvf redis_exporter-v1.0.3.linux-amd64.tar.gz	
# 进入目录
cd redis_exporter-v1.0.3.linux-amd64/
# 运行监控采集服务
./redis_exporter redis

# 在浏览器中访问 “ ip + :9121/metrics ” 可以看到信息就是启动成功了
    修改 prometheus 的配置文件
# 在下面加上如下内容
- job_name: 'redis'
    static_configs:
      - targets: ['localhost:9121']
# 添加完内容后重启 ./prometheus

    然后在 Grafana 中配置面板的信息,与上面的步骤一样

    点击左侧加号 import 导入,填入 11835 这个是面板的id,在官网都能找到 https://grafana.com/dashboards

7. 监控 Nginx 访问情况

​ 在此使用的是 nginx1.18.0 版本,如遇到配置失败可能是版本问题

    下载模块

    配置 nginx 的监控需要两个模块:

    nginx-module-vts:https://gitee.com/lishisen123_admin/software/raw/master/prometheus/nginx-module-vts.zip Nginx的监控模块,能够提供JSON格式的数据产出:

    nginx-vts-exporter: https://gitee.com/lishisen123_admin/software/raw/master/prometheus/nginx-vts-exporter-0.10.3.linux-386.tar.gz 收集 Nginx 的监控数据,并给Prometheus 提供监控接口,默认端口号 9913

    nginx-module-vts 模块编译

    下载好之后上传到服务器,然后在 nginx 编译时添加 vts 模块

# 进入 nginx 的解压目录(有 configure 的目录)
cd /usr/local/nginx-1.18.0
# 执行下面命令进行编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module  --add-module=/opt/nginx-module-vts
make   # 注意是make 不是makeinstall 否则会被覆盖
# 替换启动的二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp ./objs/nginx /usr/local/nginx/sbin/
pkill -9 nginx ## 关闭nginx
./usr/local/nginx/sbin/nginx  ##	启动nginx
    在 nginx 的配置文件中添加如下配置
http {
    ...
    vhost_traffic_status_zone;  
    vhost_traffic_status_filter_by_host on;
    ...
    server {
        ...   
        location /status {
               vhost_traffic_status_display;
               vhost_traffic_status_display_format html;
        }
}

配置信息:

vhost_traffic_status_filter_by_host on; 开启此功能,在 Nginx 配置有多个 server_name 的情况下,会根据不同的 server_name 进行流量的统计,否则默认会把流量全部计算到第一个 server_name 上

在不想统计流量的 server 区域禁用 vhost_traffic_status 配置示例

server{
	vhost_traffic_status off;
}

假如 nginx 没有规范配置 server_name 或者无需进行监控的 server 上,那么建议在此 vhost 上禁用统计监控功能。否则会出现 “127.0.0.1” hostname 等的域名监控信息。

    配置完成后再浏览器访问 “ ip + /status ” 可以看到一下信息

    使用 nginx-vts-exporter 收集 nginx 性能指标的 JSON 格式数据,并汇总后暴露监控接口给 Prometheus
# 解压
tar -zxvf nginx-vts-exporter-0.10.3.linux-386.tar.gz
# 进入解压目录
cd nginx-vts-exporter-0.10.3.linux-386
# 启动
./nginx-vts-exporter  -nginx.scrape_uri http://ip/status/format/json &
# 浏览器访问地址 “ ip + 9913 ” 结果如图启动成功

    修改 prometheus 的配置文件,添加以下内容
  - job_name: 'nginx'
    static_configs:
      - targets: ['ip:9913']
      
# 重启 prometheus
./prometheus --config.file=prometheus.yml
# 在 9090 端口下可以看到我们配置的一些节点的信息

    然后在 Grafana 中配置面板信息

    点击加号 import 然后填入 Dashboard id: 2949

学习参考1:https://blog.csdn.net/qq_37128049/article/details/108143110

学习参考2:https://blog.csdn.net/weixin_41709748/article/details/88063548

学习参考3:https://www.jb51.net/article/230006.htm

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号