Prometheus单机部署测试

  • A+
所属分类:监控

环境准备

为了便于prometheus监控,首先部署一套测试k8s集群,参照以下文章

https://www.cnblogs.com/xiao987334176/p/11771657.html

https://www.cnblogs.com/xiao987334176/p/12696740.html

https://www.cnblogs.com/xiao987334176/p/11899321.html

https://blog.51cto.com/tryingstuff/2445675?source=dra

下载安装Prometheus

prometheus官网下载址:https://prometheus.io/download/

wget https://github.com/prometheus/prometheus/releases/download/v2.19.1/prometheus-2.19.1.linux-amd64.tar.gz
tar xf prometheus-2.19.1.linux-amd64.tar.gz
mv prometheus-2.19.1.linux-amd64 /usr/local/prometheus
chmod +x /usr/local/prometheus/prom*
cp -rp /usr/local/prometheus/promtool /usr/bin/

 Prometheus的配置文件是YAML格式,大致分为四大块,包括:global、alerting、rule_files、scrape_configs。在下面的prometheus.yml配置文件中来描述其用途。

修改默认配置:

cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml_$date +%F
[root@node1 ~]# cat /usr/local/prometheus/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: 15s # 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']
      labels:
        app: prometheus
        nodename: node1

  - job_name: 'k8s'
    static_configs:
    - targets: ['192.168.8.11:9100']
      labels:
        app: master01
        nodename: master01
        role: master

    - targets: ['192.168.8.101:9100']
      labels:
        app: node1
        nodename: node1
        role: node        

    - targets: ['192.168.8.102:9100']
      labels:
        app: node2
        nodename: node
        role: node

注释:

scrape_interval:     30s  # Server端去endpoint端拉取数据的时间间隔(频率),这个值也表示是时间序列的颗粒度,可以被局部配置覆盖。

evaluation_interval: 30s  # 该参数用于控制记录规则和报警规则的执行间隔(频率),Prometheus使用记录规则来创建新的时间序列并生成告警(Prometheus会拉取大量的时间序列度量数据,如CPU、内存、磁盘等,但这些单个的度量数据不能直接拿来告警,需要先用PromQL来编写规则得到我们想要的指标值,然后给这个规则定义一个名字,这个编写好的规则我们称之为记录规则,同时,这也是一个新的时间序列数据,这个已定义的规则名可以在告警规则中引用)。

scrape_timeout: 30s   #拉取数据的超时时间,该值不能大于scrape_interval的值。

# alertmanagers  用于设置Prometheus的告警,Prometheus本身不支持告警通知功能,需要借助Alertmanager组件,详细可参考Alertmanager使用篇。

rule_files #用来指定包含记录规则或告警规则的文件列表。

scrape_configs  #用来配置Prometheus要拉取的目标endpoint端点(即要监控的目标资源)。目前配置是基于静态列表方式,后续还可以配置成文件读取和自动发现等方式。

监控目标说明

以上目标监控prometheus本机和k8s的master、node,为了便于区分,指定了labels标签,定义role角色。

检查配置文件

promtool check config prometheus.yml

配置文件修改通过以下两种方式重载:

方法一:

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

方法二:

ps -ef|grep prometheus
kill -HUP 90713

检查日志tailf /var/log/message

添加系统服务

cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus

[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --web.enable-lifecycle --storage.tsdb.retention.time=180d
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

设置开机启动

systemctl enable prometheus.service 
systemctl start prometheus.service

查看日志

tail -f /var/log/messages

验证服务

Prometheus内置的控制台访问入口:http://IP:9090/graph

WEB通过status--Targets,可以看到监控目标状态

Prometheus本身暴露度量数据的HTTP接口为:http://IP:9090/metrics



YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: