经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
一分钟部署prometheus&grafana全方面监控SpringBoot项目
来源:cnblogs  作者:fengzeng  时间:2024/5/29 9:09:43  对本文有异议

0x01 创建目录

找一个你喜欢的地方,创建项目根目录

example:

  1. [root@demo-78 ~]# mkdir /data/prometheus

0x02 创建配置文件

进入到项目根目录:

  1. [root@demo-78 ~]# cd /data/prometheus

需要新建三个文件,分别是docker-compose.ymlprometheus.ymlnode_down.yml,详细配置如下

在以下配置中,除了docker-compose.yml中的端口映射配置以外,所有你能看到的关于hostportusernamepassowrd的配置,都修改成你自己的,顺便注意一下docker-compose.yml配置中关于文件挂载的路劲问题。

prometheus.yml配置如下:

  1. global:
  2. scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  3. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  4. # scrape_timeout is set to the global default (10s).
  5. # Alertmanager configuration
  6. alerting:
  7. alertmanagers:
  8. - static_configs:
  9. - targets: ['10.0.5.78:9093']
  10. # - alertmanager:9093
  11. # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
  12. rule_files:
  13. - "node_down.yml"
  14. # - "first_rules.yml"
  15. # - "second_rules.yml"
  16. # A scrape configuration containing exactly one endpoint to scrape:
  17. # Here it's Prometheus itself.
  18. scrape_configs:
  19. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  20. - job_name: 'prometheus'
  21. # metrics_path defaults to '/metrics'
  22. # scheme defaults to 'http'.
  23. static_configs:
  24. - targets: ['10.0.5.78:9094']
  25. - job_name: 'redis'
  26. static_configs:
  27. - targets: ['10.0.5.78:9121']
  28. labels:
  29. instance: redis
  30. - job_name: 'node'
  31. scrape_interval: 8s
  32. static_configs:
  33. - targets: ['10.0.5.78:9100']
  34. labels:
  35. instance: node
  36. - job_name: 'cadvisor'
  37. static_configs:
  38. - targets: ['10.0.5.78:8088']
  39. labels:
  40. instance: cadvisori
  41. #基于文件自动加载新监控任务
  42. - job_name: 'file_ds'
  43. file_sd_configs:
  44. - files: ['/etc/prometheus/reload/*.yml']
  45. refresh_interval: 5s

docker-compose.yml配置如下:

  1. version: '3'
  2. networks:
  3. monitor:
  4. driver: bridge
  5. services:
  6. prometheus:
  7. image: prom/prometheus
  8. container_name: prometheus
  9. hostname: prometheus
  10. restart: always
  11. volumes:
  12. - /prometheus/reload:/etc/prometheus/reload
  13. - /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
  14. - /prometheus/node_down.yml:/etc/prometheus/node_down.yml
  15. ports:
  16. - "9094:9090"
  17. networks:
  18. - monitor
  19. grafana:
  20. image: grafana/grafana
  21. container_name: grafana
  22. hostname: grafana
  23. restart: always
  24. ports:
  25. - "3000:3000"
  26. networks:
  27. - monitor
  28. redis-exporter:
  29. image: oliver006/redis_exporter
  30. container_name: redis_exporter
  31. hostname: redis_exporter
  32. restart: always
  33. ports:
  34. - "9121:9121"
  35. networks:
  36. - monitor
  37. command:
  38. - '--redis.addr=redis://10.0.5.79:6379'
  39. - '--redis.password=Pig_1234'
  40. node-exporter:
  41. image: quay.io/prometheus/node-exporter
  42. container_name: node-exporter
  43. hostname: node-exporter
  44. restart: always
  45. ports:
  46. - "9100:9100"
  47. networks:
  48. - monitor
  49. mysql-exporter:
  50. image: prom/mysqld-exporter
  51. container_name: mysql-exporter
  52. hostname: mysql-exporter
  53. restart: always
  54. ports:
  55. - "9104:9104"
  56. networks:
  57. - monitor
  58. command:
  59. - "--mysqld.address=10.0.5.79:3306"
  60. - "--mysqld.username=pigdigital:Pigdigital_1234"
  61. cadvisor:
  62. image: google/cadvisor:latest
  63. container_name: cadvisor
  64. hostname: cadvisor
  65. restart: always
  66. volumes:
  67. - /:/rootfs:ro
  68. - /var/run:/var/run:rw
  69. - /sys:/sys:ro
  70. - /var/lib/docker/:/var/lib/docker:ro
  71. ports:
  72. - "8088:8080"
  73. networks:
  74. - monitor

node_down.yml配置如下:

  1. groups:
  2. - name: node_down
  3. rules:
  4. - alert: InstanceDown
  5. expr: up == 0
  6. for: 1m
  7. labels:
  8. user: test
  9. annotations:
  10. summary: "Instance {{ $labels.instance }} down"
  11. description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."

0x03 启动容器

  1. # 启动容器
  2. [root@demo-78 prometheus]# docker-compose up -d

自行执行命令查看是否启动成功

0x04 FAQ

  1. 如何使用prometheus.yml配置的 "基于文件自动加载新监控任务"

    项目启动后,在根目录会生产一个名叫reload的文件夹,只需要在当前文件夹中加入新增的监控配置就能自动注册到prometheus服务中,配置书写格式如下:

    1. [root@demo-78 ~]# cat /prometheus/reload/web.yml
    2. - targets:
    3. - '10.0.5.79:9100'
    4. labels:
    5. job: 'pig-web'
    6. __metrics_path__: '/web/actuator/prometheus'

    或:

    1. [root@demo-piggpt-78 ~]# cat /prometheus/reload/mysql.yml
    2. - targets: ['10.0.5.78:9104']

    这里只是给个实例,有特别的需求请自行查看资料,这两种写法唯一的区别在于:第一种写法我需要自定义metrics_path,否则默认拉取指标的路径(第二种写法)就是:10.0.5.78:9104/metrics,对于很多官网的exporter,使用第二种方式即可

  2. 容器mysql-export启动报错:caller=mysqld_exporter.go:225 level=info msg="Error parsing host config" file=.my.cnf err="no configuration found"

    由于mysql-exporter更新过后,配置写法有改变,截止2024年5月28日,最新的mysql-exporter:0.15.1按照当前配置部署能够成功启动,如遇无法启动,请自行查看官方文档

原文链接:https://www.cnblogs.com/Fzeng/p/18219252

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号