当前位置: 首页 > news >正文

Prometheus+Grafana 监控平台实践-搭建常用服务监控告警

前言

Prometheus 是一个开放性的监控解决方案,通过各种 Exporter 采集当前主机/服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能

本篇将分享使用 docker compose 构建 Prometheus+Grafana,并监控之前文章所搭建的主机&服务,分享日常使用的一些使用经验
文章较长,已安装可略过,推荐先看第三节 常用服务的 Prometheus+Grafana 配置

特点

  • 成熟稳定且强大
  • 丰富的插件,大部分情况都能满足
  • 轻量级部署,资源占用少

使用情况

  • 主要用来作为监控面板使用
  • 使用 Grafana 监控:linux ,windows,redis,clickhouse,mongodb,mysql, RabbitMQ,站点情况
  • 使用 Grafana 设置告警当服务出现无法访问时通知到企业微信群
  • Grafana 版本问题,可能存在面板失效,需要做一些调整

使用 docker compose 安装 Prometheus

配置文件说明

  • prometheus 版本:v2.47.2

  • 指定运行参数:

    • 启动配置文件路径:'--config.file=/etc/prometheus/prometheus.yml'
    • 数据存储目录:'--storage.tsdb.path=/prometheus'
    • 数据保留时间:'--storage.tsdb.retention.time=30d'
    • 允许使用 curl -X POST ``http://localhost:9090/-/reload 重载其配置:'--web.enable-lifecycle'
    • 指定 web 控制台配置,添加了账号密码:'--web.config.file=/etc/prometheus/web-config.yml'
  • 开放端口:9090

  • 指定网络:devopsnetwork (docker network create devopsnetwork

  • 挂载配置文件及数据目录,需要对数据目录进行创建及赋予权限:mkdir prometheus_data && chown 65534 ./prometheus_data 关于持久化权限的讨论

  • 用到了三个配置文件:compose.yml prometheus.yml web-config.yml

  • docker compose 文件:compose.yml

version: '3.1'
services:prometheus:restart: alwayscontainer_name: prometheusimage: prom/prometheus:v2.47.2command:# 配置文件- '--config.file=/etc/prometheus/prometheus.yml'# 指定web面板账号密码访问- '--web.config.file=/etc/prometheus/web-config.yml'# 数据目录- '--storage.tsdb.path=/prometheus'# 数据保留时间- '--storage.tsdb.retention.time=30d'# 运行使用 curl -X POST http://localhost:9090/-/reload  重载其配置- '--web.enable-lifecycle'volumes:# 需要权限 mkdir prometheus_data && chown 65534 ./prometheus_data- ./prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus_data:/prometheus- ./web-config.yml:/etc/prometheus/web-config.ymlports:- 9090:9090networks:- devopsnetworknetworks:devopsnetwork:external: true
  • prometheus 配置文件示例:prometheus.yml,

    • 指定了 prometheus ,并设置了访问密码 root devops666
global:scrape_interval:     15s # By default, scrape targets every 15 seconds.# Attach these labels to any time series or alerts when communicating with# external systems (federation, remote storage, Alertmanager).external_labels:monitor: 'codelab-monitor'# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:- job_name: 'prometheus'scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']# 启用了账号密码 web-config.yml basic_auth_users 需要配置basic_auth:username: rootpassword: devops666
  • web 控制台配置:web-config.yml

    • 指定账号密码 root devops666
basic_auth_users:root: $2a$10$c6OOt9f6LuhiabPyW0nkNOprb1ndQ/HHSfqjB/exe7yh5FaYUqvBy
  • 启动:docker compose up -d

Prometheus 指定账号密码访问

  • 设置 https 或基础密码验证文档
  • 要启用 web 面板账号密码访问,指定 web 访问配置文件 '--web.config.file=/etc/prometheus/web-config.yml'
  • 映射 web-config.yml 指定账号密码 root devops666 ,Prometheus 密码需要使用 htpasswd 生成 bcrypt 密码 在线生成工具
basic_auth_users:root: $2a$10$kmkC.lHR3Kwl19DE9l1KRerMDinEejEbNmJigrJZYAGkgzbVBUpa2
  • 如果需要使用 Prometheus 监听 Prometheus ,并且 Prometheus 启用了身份验证,需要在配置出增加 basic_auth 配置节
scrape_configs:- job_name: 'prometheus'scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']# 启用了账号密码 web-config.yml basic_auth_users 需要配置basic_auth:username: rootpassword: devops666
  • 掉坑里去了,如果一开始 basic_auth 没有配置对,重载配置是无效的,需要重启

重载配置

修改了配置文件后,可以使用 api 接口重载配置,如果启用了账号密码可以使用 -u 参数指定(basic_auth 修改重载配置无效),没有就不需要加 -u 参数

curl -X POST http://localhost:9090/-/reload
或
curl -X POST -u root:devops666 http://localhost:9090/-/reload

添加 nginx 配置

还不会在局域网申请 ssl 及配置的可以参考之前的文章 前后端都用得上的 Nginx 日常使用经验

server {listen 80;listen       443 ssl;server_name prometheus.devops.test.com;  # 自行修改成你的域名ssl_certificate      /certs/prometheus.devops.test.com/server.crt;ssl_certificate_key  /certs/prometheus.devops.test.com/server.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {proxy_pass http://prometheus:9090;proxy_http_version 1.1;proxy_buffering off;proxy_request_buffering off;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}
}

安装成功

根据上面的配置,完成了 Prometheus 的搭建,监听本身 Prometheus 的情况

通过https://prometheus.devops.test.com/ 使用账号密码 root devops666 登陆后即可

使用 docker compose 安装 Grafana

Grafana 是一个开源的数据可视化和监控平台,它提供了丰富的图表和面板,用于展示各种指标和数据。提到 Prometheus,Grafana 自然是不不能落下,基于官方和社区,可以很快的制作出监控可视化面板,助力日常运维检测

配置文件说明

  • grafana 版本:v10.2.0
  • 指定账号密码: root devops666
  • 端口映射:3000
  • 挂载数据目录 ./grafana_data, 需要赋予权限:mkdir -p grafana_data && chown -R 472:472 ./grafana_data
  • 指定网络为 devopsnetwork(docker network create devopsnetwork
  • docker compose 文件:compose.yml ,安装 v10.2.0 替换版本号即可
version: '3.1'
services:grafana:restart: alwayscontainer_name: grafanaimage: grafana/grafana:10.2.0ports:- "3000:3000"volumes:- ./grafana_data:/var/lib/grafanaenvironment:- GF_SECURITY_ADMIN_USER=root- GF_SECURITY_ADMIN_PASSWORD=devops666- GF_USERS_ALLOW_SIGN_UP=falsenetworks:- devopsnetworknetworks:devopsnetwork:external: true
  • 启动:docker compose up -d

添加 nginx 配置

server {

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 7月29(信息差)
  • 家庭教育系列—剑桥通用英语五级考试介绍
  • elementUI 的el-date-picker日期,开始时间不能大于结束时间
  • NSSCTF-GDOUCTF 2023新生赛
  • Springboot与SpringSecurity使用(1):介绍、登录验证
  • 【C#】 使用GDI+获取两个多边形区域相交、非相交区域
  • [数据集][目标检测]船上翻越栏杆危险行为检测数据集VOC+YOLO格式3678张1类别
  • 第13周 简历职位功能开发与Zookeeper实战
  • 4000元投影仪性价比之王:爱普生TW5750极米RS10还是当贝X5S?
  • 前端Long类型精度丢失:后端处理策略
  • 大数据学习之Flink基础
  • ChatGPT:如何在 linux 上运行 springboot 项目,不使用 jar 包的方式,直接编译运行源代码
  • Spring Cloud全解析:服务注册中心的多维度产品对比与优选指南
  • 网站如何实现HTTPS访问
  • 【Github】Github 上commit后 contribution 绿格子不显示 | Github绿格子 | Github贡献度不显示
  • android 一些 utils
  • android图片蒙层
  • JavaScript函数式编程(一)
  • leetcode388. Longest Absolute File Path
  • Median of Two Sorted Arrays
  • Mysql数据库的条件查询语句
  • nfs客户端进程变D,延伸linux的lock
  • Objective-C 中关联引用的概念
  • ReactNative开发常用的三方模块
  • TypeScript迭代器
  • 半理解系列--Promise的进化史
  • 不上全站https的网站你们就等着被恶心死吧
  • 程序员该如何有效的找工作?
  • 记一次和乔布斯合作最难忘的经历
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端自动化解决方案
  • 设计模式走一遍---观察者模式
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 我是如何设计 Upload 上传组件的
  • 详解移动APP与web APP的区别
  • 小试R空间处理新库sf
  • 译有关态射的一切
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​iOS安全加固方法及实现
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1)无线电失控保护(二)
  • (day18) leetcode 204.计数质数
  • (多级缓存)缓存同步
  • (二)正点原子I.MX6ULL u-boot移植
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)母版页和相对路径
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net 6.0 处理跨域的方式
  • .net mvc 获取url中controller和action
  • .NET MVC第三章、三种传值方式
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .vue文件怎么使用_vue调试工具vue-devtools的安装