当前位置:   article > 正文

Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)

Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)

1.选型对比

最近项目上有对项目服务及中间件的监控需求,要做实现方案调研,总结一下自己的成果,目前业界主流可选的方案有:

国外开源:

Prometheus:Prometheus - Monitoring system & time series database

优点:使用exporter方式+主动拉取方式,采集灵活,覆盖面广,结合grafana能快速搭建上手,promql功能强大,自定义指标方便,对云环境支持很好

缺点:采用分布式部署,基于本地文件存储数据,数据统一采集不方便,采用配置文件配置较为繁琐,(ps也支持服务发现),promql学习成本较高

zabbix 

Grandage-Zabbix中国

优点:老牌监控框架、all-in-one 部署,使用MySQL存储数据,使用页面配置采集。推荐6.0以上版本,使用agent2

缺点:比较重,灵活性比较差,自定义指标实现难度高

grafana

开源的可视化框架,可以使用多种数据源,对Prometheus支持非常友好,也支持zabbix。可以很方便的集成到自己的前端项目中。

国内开源

夜莺 夜莺 - 快猫星云

优点:集成了Prometheus和zabbix的优点,可以通过页面配置监控告警还能all-in-one 部署。文档比较友好。(由于是后来才找到这个框架,所以没有深入研究)

本次我验证了(监控服务器,rabbitmq、nacos、redis、mysql、MongoDB,spring-boot,Nginx)等常用中间件的监控,留档以备后续查看。其他的基本都可以参照官网

2. Prometheus基础环境搭建

Prometheus支持两种搭建方式,二进制安装和docker安装,基本所有的组件都提供了这两种安装方式。二进制方式可以将组件注册为Linux系统服务,使用systemctl来管理

2.1 二进制方式安装

主要安装:Prometheus+node_exporter(服务器节点监控)+alertmanager+grafana,适合在离线没有网络的环境。

网上有现成的仓库 prometheus: 二进制安装prometheus

  1. 项目使用方法
  2. 1.将项目下载到自己的Linux服务器
  3. https://gitee.com/lengedcloud/prometheus.git
  4. 进入目录 cd prometheus
  5. 2.将服务移动到系统服务目录
  6. mv *.service /etc/systemd/system/
  7. 3.创建一个普通用户
  8. useradd -M -s /usr/sbin/nologin prometheus -M不创建家目录,不允许登录
  9. 4.启动服务,并设置开机启动
  10. systemctl enable alertmanager.service --now
  11. systemctl enable grafana-server.service --now
  12. systemctl enable node_exporter.service --now
  13. systemctl enable prometheus.service --now
  14. 5.检查服务状态
  15. systemctl status alertmanager.service
  16. systemctl status grafana-server.service
  17. systemctl status node_exporter.service
  18. systemctl status prometheus.service
  19. 6.访问测试
  20. alertmanager.service 告警 端口 ip:9093/metrics
  21. grafana-server 数据展示 端口 ip:3000 账号/密码 admin/admin
  22. node_exporter 数据采集 ip:9100/metrics
  23. prometheus 数据存储 端口 ip:9090
2.2 docker方式安装

主要安装:Prometheus+cadvsior(docker监控)+node_exporter++alertmanager+grafana

此处可以下载打包 docker-compose: docker-compose仓库

 docker-compose.yaml文件如下

  1. version: '3.3'
  2. volumes:
  3. prometheus_data: {}
  4. grafana_data: {}
  5. networks:
  6. monitoring:
  7. driver: bridge
  8. services:
  9. prometheus:
  10. image: prom/prometheus:v2.37.6
  11. container_name: prometheus
  12. restart: always
  13. volumes:
  14. - /etc/localtime:/etc/localtime:ro
  15. - ./prometheus/:/etc/prometheus/
  16. - prometheus_data:/prometheus
  17. command:
  18. - '--config.file=/etc/prometheus/prometheus.yml'
  19. - '--storage.tsdb.path=/prometheus'
  20. - '--web.console.libraries=/usr/share/prometheus/console_libraries'
  21. - '--web.console.templates=/usr/share/prometheus/consoles'
  22. #热加载配置
  23. - '--web.enable-lifecycle'
  24. #api配置
  25. #- '--web.enable-admin-api'
  26. #历史数据最大保留时间,默认15
  27. - '--storage.tsdb.retention.time=30d'
  28. networks:
  29. - monitoring
  30. links:
  31. - alertmanager
  32. - cadvisor
  33. - node_exporter
  34. expose:
  35. - '9090'
  36. ports:
  37. - 9090:9090
  38. depends_on:
  39. - cadvisor
  40. alertmanager:
  41. image: prom/alertmanager:v0.25.0
  42. container_name: alertmanager
  43. restart: always
  44. volumes:
  45. - /etc/localtime:/etc/localtime:ro
  46. - ./alertmanager/:/etc/alertmanager/
  47. command:
  48. - '--config.file=/etc/alertmanager/config.yml'
  49. - '--storage.path=/alertmanager'
  50. networks:
  51. - monitoring
  52. expose:
  53. - '9093'
  54. ports:
  55. - 9093:9093
  56. cadvisor:
  57. image: google/cadvisor:latest
  58. container_name: cadvisor
  59. restart: always
  60. volumes:
  61. - /etc/localtime:/etc/localtime:ro
  62. - /:/rootfs:ro
  63. - /var/run:/var/run:rw
  64. - /sys:/sys:ro
  65. - /var/lib/docker/:/var/lib/docker:ro
  66. networks:
  67. - monitoring
  68. expose:
  69. - '8080'
  70. ports:
  71. - '8080:8080'
  72. node_exporter:
  73. image: prom/node-exporter:v1.5.0
  74. container_name: node-exporter
  75. restart: always
  76. volumes:
  77. - /etc/localtime:/etc/localtime:ro
  78. - /proc:/host/proc:ro
  79. - /sys:/host/sys:ro
  80. - /:/rootfs:ro
  81. command:
  82. - '--path.procfs=/host/proc'
  83. - '--path.sysfs=/host/sys'
  84. - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
  85. networks:
  86. - monitoring
  87. ports:
  88. - '9100:9100'
  89. grafana:
  90. image: grafana/grafana:9.4.3
  91. container_name: grafana
  92. restart: always
  93. volumes:
  94. - /etc/localtime:/etc/localtime:ro
  95. - grafana_data:/var/lib/grafana
  96. - ./grafana/provisioning/:/etc/grafana/provisioning/
  97. env_file:
  98. - ./grafana/config.monitoring
  99. networks:
  100. - monitoring
  101. links:
  102. - prometheus
  103. ports:
  104. - 3000:3000
  105. depends_on:
  106. - prometheus

使用docker-compose 一键安装

docker-compose up -d 安装

安装完成后测试 同二进制安装测试相同

Prometheus页面,可以从status>target目录下查看当前的监控任务状态,点击endpoint,确认每个target路径有数据即为正常。

grafana页面

2.3 配置Prometheus监控

打开 vim prometheus.yaml,修改ip或服务名为自己的宿主机ip

Prometheus重新热加载配置 很常用

curl -X POST http://localhost:9090/-/reload 

2.4 配置grafana监控页面

grafana提供了大量配置模板可以快速生成监控

给grafana配置Prometheus数据源

填写信息,可以测试连接一下,docker版要写宿主机的ip,http一定要加

1.配置模板-服务器监控

Dashboards | Grafana Labs

选择数据源,模板可以按照自己的需要进行修改,有些指标名称在不用版本的Prometheus库中可能已经被替换或者更新,实际使用时要进行相应的更改。

点击要使用的模板,获取模板id或者json文件,此处还有Prometheus中的配置

在grafana中导入

输入ID,并导入

选择数据源,修改面板名称

 查看效果

2.配置模板-docker服务监控

选择想要的模板

复制id 10619,重复上面的步骤导入

3.配置模板-alertmanager告警监控,告警也是Prometheus的核心功能。

选择模板id,9578

重复上面的步骤导入

 exp告警规则可以通过使用promql定义的非常丰富。

告警配置文件在,prometheus挂载出来的alert.yml文件中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/396895
推荐阅读
相关标签
  

闽ICP备14008679号