一、 简介
普罗米修斯是开源的系统监控/报警工具库,功能非常全,且拥有活跃的开发者和用户社区。Prometheus通过HTTP定期主动拉取(Pull)的方式获得指标(直接获取或通过gateway推送),在本地存储所有抓取的样本,并对这些数据运行规则,从现有数据聚合和记录新的时间序列,或生成警报。
Prometheus原生的可视化界面做得比较原始(主要用于调试),所以社区(官方推荐)使用Grafana来做数据展示。
Grafana专注于数据展示,有着丰富用成熟的展示方式和插件,数据源支持Elasticsearch, Prometheus, Graphite, InfluxDB等等。可以让你通过界面点击(无需写前端代码)快速搭建一个非常专业漂亮的展示界面。即便对于前端零基础的开发者也非常友好!
二、特点
1、具有由度量名称和键/值对标识的时间序列数据的多维数据模型
2、PromQL,一种灵活的查询语言, 可以利用这一维度
3、不依赖分布式存储; 单个服务器节点是自治的
4、时间序列集合通过HTTP上的拉模型发生
5、推送时间序列通过中间网关支持
6、通过服务发现或静态配置发现目标
7、多种图形和仪表板支持模式
三、prometheus的组件
Prometheus生态系统由多个组件组成,其中许多组件是可选的:
1、主要的Prometheus服务器,用于存储时间序列数据
2、用于检测应用程序代码的客户端库
3、用于支持短期工作的推送网关
4、针对HAProxy,StatsD,Graphite等服务的专用出口商
5、一个alertmanager处理警报
6、各种支持工具
大多数Prometheus组件都是用Go编写的,因此很容易构建和部署为静态二进制文件。
四、Prometheus安装
1、下载prometheus Download | Prometheus (以版本2.36.2为例)
2、解压包到指定目录
tar -zxvf prometheus-2.36.2.linux-amd64.tar.gz -C /home/srv_cnexp_eshipv2dev/prometheus
3、修改配置文件
vim /home/srv_cnexp_eshipv2dev/prometheus/prometheus-2.36.2.linux-amd64/prometheus.yml
4、prometheus配置语法校验
建议每次修改prometheus配置之后, 都进行语法校验, 以免导致 prometheus server无法启动
./promtool check config prometheus.yml
5、启动prometheus
./prometheus --config.file=prometheus.yml
后台启动:
nohup ./prometheus --storage.tsdb.retention.time=7d --config.file=prometheus.yml --web.enable-admin-api > prometheus.log 2>&1 &
*启动参数说明:
--config.file -- 指明prometheus的配置文件路径
--web.enable-lifecycle -- 指明prometheus配置更改后可以进行热加载
--storage.tsdb.path -- 指明监控数据存储路径
--storage.tsdb.retention --指明数据保留时间;
在启动prometheus时加上参数 --web.enable-lifecycle 可启动配置热加载 修改配置后发送请求触发
curl -X POST http//localhost:9090/-/reload
6、设置prometheus系统服务,并配置开机自启动(根据情况而定可不做)
touch /usr/lib/systemd/system/prometheus.service
chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
vim /usr/lib/systemd/system/prometheus.service
[Unit] Description=Prometheus Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=srv_cnexp_eshipv2dev # --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中 ExecStart=/home/srv_cnexp_eshipv2dev/prometheus/prometheus-2.36.2.linux-amd64/prometheus --storage.tsdb.path=/home/srv_cnexp_eshipv2dev/prometheus/prometheus-2.36.2.linux-amd64/data --storage.tsdb.retention.time=7d --config.file=/home/srv_cnexp_eshipv2dev/prometheus/prometheus-2.36.2.linux-amd64/prometheus.yml --web.enable-admin-api Restart=on-failure [Install] WantedBy=multi-user.target
讯享网
讯享网设置为开机自启动 执行一下命令 systemctl daemon-reload systemctl enable prometheus.service systemctl status prometheus.service systemctl restart prometheus.service
五、集成监控SpringBoot项目
1.spingboot项目引入依赖
<-- maven --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.7.3</vsersion> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <-- gradle--> implementation "io.micrometer:micrometer-registry-prometheus:1.7.3" implementation 'org.springframework.boot:spring-boot-starter-actuator'
2.修改配置 开启Actuator 暴露prometheus指标
management.endpoints.web.exposure.include=* #或者 prometheus
3. 访问URL查看暴露的监控(如果可以说明暴露成功)
localhost:8080/actuator/prometheus
4.如果需要监控多个不同的服务需要分类 可增加配置区分
讯享网#增加配置 management.metrics.tags.application:${spring.application.name} #配置类方式 @Bean MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() { return registry -> registry.config().commonTags("application", "服务名称"); }
5.自定义指标收集(在调用接口时候对要监控的指标项通过prometheus类进行计算)
import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.PostConstruct; @RestController @RequestMapping("/api") public class OperationController { @Autowired MeterRegistry registry; private Counter counter; private Counter failCounter; @PostConstruct private void init(){ //初始化指标 failCounter= registry.counter("requests_add_fail_total","save","carson"); counter = registry.counter("requests_add_total","save","carson"); } @RequestMapping(value = "/add",method = RequestMethod.POST) public String add(@Validated String firstName,@Validated String secondName) throws Exception { try{ String name = firstName+secondName; //调用接口时对指标进行统计 counter.increment(); return name; }catch (Exception e){ //调用接口时对指标进行统计 failCounter.increment(); throw new Exception("异常"); } } }
六、prometheus监控Linux主机
1.下载node_exporter (以1.3.1为例)
2.解压到指定目录
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /home/srv_cnexp_eshipv2dev/prometheus
3. 启动node_exporter
./node_exporter
后台启动 (更改默认端口为9100)
nohup ./node_exporter --web.listen-address=":9100" > /dev/null 2>&1 &
4.配置系统并设置开机自启动(是否需要根据情况而定)
touch /usr/lib/systemd/system/node_exporter.service
chown prometheus:prometheus /usr/lib/systemd/system/node_exporter.service
chown -R prometheus:prometheus /usr/local/node_exporter*
vim /usr/lib/systemd/system/node_exporter.service

讯享网[Unit] Description=node_exporter After=network.target [Service] Type=simple User=srv_cnexp_eshipv2dev ExecStart=/home/srv_cnexp_eshipv2dev/prometheus/node_exporter-1.3.1.linux-amd64/node_exporter --web.listen-address=":9100" Restart=on-failure [Install] WantedBy=multi-user.target
启动node_exporter服务并设置开机自启动 systemctl daemon-reload systemctl enable node_exporter.service systemctl start node_exporter.service systemctl status node_exporter.service systemctl start node_exporter.service systemctl stop node_exporter.service systemctl restart node_exporter.service
七、验证prometheus
访问地址 http://prometheus_server_ip:9090/ 进入到prometheus页面
点击status -> Targets 会展示prometheus配置文件中的 Job 在最大分类的Job下会有多个微服务或者多台linux主机的具体类型信息
八、集成Grafana
1.下载grafana Download Grafana | Grafana Labs (以版本9.0.4为例)
2.解压到指定目录
tar -zxvf grafana-enterprise-9.0.4.linux-amd64.tar.gz -C 指定目录
3.启动grafana
./grafana-server
后台启动:nohup ./grafana-server > grafana.log 2>&1 &
4.登录grafana
访问地址 http://grafana_ip:3000/ 首次登录初始密码为 admin/admin 可以修改
5.配置数据源
Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url
Name:默认为Prometheus,当仅有一个Prometheus数据源时,默认即可(注意:首字母大写)
Url:默认http://localhost:9090,根据实际情况填写IP:端口。
Access:默认为Server,无需变更,默认即可。

6.添加 Dashboard导入模板 Dashboards | Grafana Labs (仪表盘)
点击+号->import->选择Upload json file或者是搜索输入仪表盘中的模板Id搜索模板------>load加载
配置完成后可查看系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IO、CPU温度等信息。


参考资料:
- 官网地址:https://prometheus.io/
- GitHub: https://github.com/prometheus
- 官方文档中文版: https://github.com/Alrights/prometheus
- 官方监控agent列表:https://prometheus.io/docs/instrumenting/exporters/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/117279.html