一个简洁的博客网站: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
在此使用的是 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



