prometheus搭建

一 简介

Prometheus是继Kubernetes后第2个正式加入CNCF基金会的项目,容器和云原生领域事实的监控标准解决方案。

Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合

 

 

prometheus的架构图

 

 

更多理论性描述可自行百度。

 

 

从监控数据的获取一直到报警的过程,采用监控mysql数据库为例用白话来说。

 

exporter:用于获取mysql的各项指标,包括资源指标,甚至表里数据。并格式化为prometheus指定的数据格式。exporter的来源有以下几种,1从Prometheus官网或社区找。2 从mysql官网或社区找。3 从万能的网上扒。 4 自己写。

理论上来说。只要提供exporter,我们能监控任何东西。包括计算机硬件,软件,我们自己的程序,传感器,汽车,飞机大炮等。

指标数据格式大体如下:

 

Prometheus : 请求mysql的exporter提供的接口,获取指标数据。 并判断本次拉取的指标数据是否符合我们设置的报警规则。

 

 

alertManger: 如果指标数据符合我们设置的报警规则,则采用alertManager设置的告警方式发出报警。比如发邮件,企业微信等等等等。

 

 

同时,我们可以用grafana添加Prometheus数据源。以图形方式直观查看监测情况

 

 

 

二 以docker方式安装Prometheus

 

1. 拉取镜像

 

docker pull prom/prometheus

 

2. 编写配置文件

/mnt/docker_volume/prometheus/conf/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=<job_name>` to any timeseries scraped from this config.

  - job_name: 'prometheus'

 

    # metrics_path defaults to '/metrics'

    # scheme defaults to 'http'.

 

    static_configs:

    - targets: ['localhost:9090']

 

 

 

 

 

3. 运行

1. 执行命令 vim /etc/passwd

添加一行数据

nobody:x:65534:65534:nobody:/home:/bin/false

 

2. 执行命令 vim /etc/group

添加一行数据

nobody:x:65534:

 

3. 创建路径/mnt/docker_volume/prometheus/data

并将data目录设置用户和组为 65534

cd /mnt/docker_volume/prometheus/

chown 65534:65534 data/

这样做的原因是需要把prometheus 的数据路径映射出来,避免容器删除后历史监控数据丢失。

而更改文件所有者只是为了解决 open /prometheus/lock: permission denied 的报错。

 

之后运行如下命令启动容器。

 

 

 

 docker run -p 9090:9090 -v /mnt/docker_volume/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml -v /mnt/docker_volume/prometheus/conf/:/etc/prometheus/rules -v /mnt/docker_volume/prometheus/data:/prometheus --privileged  -d --name prometheus_container  prom/prometheus

 

 

4. 确认安装成功

访问 ip:9090 进入如下页面

即为安装完成。

 

 

三 以docker方式安装 grafana

1. 拉取镜像

docker pull grafana/grafana

 

2. 运行

docker run -d --name grafana_container -p 3000:3000 grafana/grafana

 

 

3. 确认安装成功

访问 ip:3000 ,默认账号密码为admin,admin。添加Prometheus数据源,添加dashboard,输入指标prometheus    grafana将自动提示指标全名,任意选择,并查询,查看结果。

 

 

四 以docker方式安装 alertmanager

1. 拉取镜像

docker pull prom/alertmanager

 

2. 编写配置文件

/mnt/docker_volume/prometheus/alertManager/alertmanager.yml

 

 

global:

  resolve_timeout: 5m

 

route:

  group_by: ['alertname']

  group_wait: 10s

  group_interval: 10s

  repeat_interval: 1h

  receiver: 'email'

receivers:

#- name: 'web.hook'

#  webhook_configs:

#  - url: 'http://127.0.0.1:5001/'

- name: 'email'

  email_configs:

  - to: 接收者的@qq.com

    from: 发送者的@qq.com

    smarthost: smtp.qq.com:587

    auth_username: 发送人账号

    auth_password: 发送人授权码

inhibit_rules:

  - source_match:

      severity: 'critical'

    target_match:

      severity: 'warning'

    equal: ['alertname', 'dev', 'instance']

上面的配置文件中,我配置的是用qq邮箱发送告警信息。其他告警方式可自行调研。

3. 运行

docker run  -d  -p  9093:9093  -v /mnt/docker_volume/prometheus/alertManager:/etc/alertmanager --name alertmanager_container prom/alertmanager

 

 

 

 

五 结合exporter 入门使用

1. node-exporter监控服务器

从Prometheus官网

https://prometheus.io/docs/instrumenting/exporters/ 可以找到node-exporter

 

但是这里我们采用docker,

拉取镜像

docker pull prom/node-exporter

运行

docker run -d -p 9100:9100 --name node-exporter_container prom/node-exporter

 

访问ip:9100/metrics

返回很多指标数据。

 

2. 编写告警规则

我们在/mnt/docker_volume/prometheus/conf目录下新建一个文件node_rules.yml

 

配置告警规则

groups:

- name: node_memory_MemFree_bytes

  rules:

  - alert:  node_memory_MemFree_bytes

    expr: node_memory_MemFree_bytes/node_memory_MemTotal_bytes < 0.60

    for: 1m

    labels:

      severity: page

    annotations:

      summary: "内存已经使用4"

 

3. 修改prometheus 配置文件

添加一个job

 

 

 

添加 alertManager

 

 

添加 rules 文件

 

 

 

4. 重启 Prometheus

 

docker restart prometheus_container

 

 

5. 查看grafana

 

 

6. 等待邮件

 

 

 

六 待续

1.   Prometheus 目前不支持集群,因为一般来说监控只是一个观察措施。 但是如果对监控及告警要求较高,比如工业上,错过报警就容易发生事故等场景。可以考虑横向扩展,具体实现方案还未探索。

2.  目前每加一个监控项,报警规则。都需要重启Prometheus服务。配置文件热加载方案还没去了解。

3.  关于Prometheus如何监控我们的springboot工程或者数据库表里的数据,分为 资源监控(系统级参数)和自定义监控(我们自己写入我们想看的监控数据)。都已经有现成的集成方案了。后续将发到群里。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Prometheus是一个开源的监控和警报系统。搭建Prometheus可以按照以下步骤进行操作: 1. 首先,下载Prometheus的安装包,并解压到指定目录。可以使用以下命令下载和解压: ``` tar -xvf prometheus-2.16.0.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/prometheus-2.16.0.linux-amd64/ /usr/local/prometheus ``` 2. 进入Prometheus的安装目录: ``` cd /usr/local/prometheus ``` 3. 启动Prometheus服务: ``` ./prometheus & ``` 4. 确认Prometheus服务已经启动成功。可以查看日志文件`/var/log/messages`,如果一切正常,会看到类似以下的打印信息: ``` Mar 10 10:08:55 centos7 systemd: Started prometheus. Mar 10 10:08:55 centos7 systemd: Starting prometheus... ... Mar 10 10:08:55 centos7 prometheus: level=info ts=2020-03-10T14:08:55.895Z caller=main.go:630 msg="Server is ready to receive web requests." ``` 5. 现在,可以通过访问Prometheus的Web界面来进行监控。在浏览器中输入Prometheus的地址,例如`http://localhost:9090`,即可访问。 需要注意的是,Prometheus的配置文件是`prometheus.yml`,通过配置该文件可以确定其服务发现机制,以便更新exporter而无需重启Prometheus服务。可以根据需要进行相应的配置。\[3\] 希望以上信息对您有所帮助。如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* [Prometheus搭建](https://blog.csdn.net/zjz5740/article/details/115652357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Prometheus搭建](https://blog.csdn.net/u010039418/article/details/104782792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Prometheus初步搭建和配置(Windows)](https://blog.csdn.net/zyl042/article/details/123082790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值