prometheus 安装配置

prometheus安装方法

  • 二进制安装:便于学习理解
  • docker安装:方便和可移植
  • k8s安装:也是基于docker,实现可管理

监控指标
在这里插入图片描述

  • cAdvisor:是一个谷歌开发的容器监控工具,提供http方式获取数据和web界面,它被内嵌到k8s中作为k8s的监控组件(kubelet)

看下docker默认的监控

docker stats

在这里插入图片描述

缺点:无法被获取数据和界面,也就是说是个单机版的,cAdvisor就是弥补这样的缺点

cadvisor是可以单独安装的,但是如果安装了kubelet,就能直接访问(端口默认是4194)
在这里插入图片描述

在这里插入图片描述

  • node_exporter:监控node节点的资源,需要单独安装
  • mysqld_exporter:监控mysql数据库的资源,需要单独安装

exporter都是对于本身不支持数据采集,提供给prometheus拉取的程序和系统,很好理解,因为mysql是在prometheus 之前就出现的
下载地址:https://prometheus.io/download/

  • kube-state-metrics:获取k8s集群资源,比如replicas调度情况,Pod重启次数等等

配置过程复杂,因为涉及到k8s的集群访问
github:https://github.com/kubernetes/kube-state-metrics/tree/master/examples/autosharding

Metric 指标

metric是Prometheus监控的核心,Prometheus服务端通过拉取metric获取到数据,metric可以理解为就是监控的数据

  • metric格式:其实就是符合prometheus的时间序列存储类型
    Prometheus server其实本身也会暴露出 metric,也就是 server 本身也可以是个 Prometheus client(安装好prometheus 服务后就能访问到)
prometheus_http_request_duration_seconds_bucket{
    
    handler="/api/v1/targets",le="8"}  1
                      metric name                           labels                值 
  • metric name:一般用于表示 metric 的功能
  • labels:使同一个时间序列有了不同维度的识别,即:多维标签,通过更换标签实现一个功能的多个维度metric

Metric(指标)类型

  • Counter:计数器,是一种累加的metric,比如请求的个数,结束的任务数
  • Gauge:用于记录一个瞬时的值,能增也能减:比如cpu温度
  • Histogram:柱状图,可以对观察结果采样,分组及统计,比如请求持续时间,响应大小
    在这里插入图片描述
  • Summary:类似于 histogram,也是一组数据。不同的是,它统计的不是区间的个数而是统计分位数(百分比)
    在这里插入图片描述
    二进制安装

prometheus服务端安装

wget https://github.com/prometheus/prometheus/releases/download/v2.24.1/prometheus-2.24.1.linux-amd64.tar.gz
tar zxf prometheus-2.24.1.linux-amd64.tar.gz 
mv mv prometheus-2.24.1.linux-amd64 /usr/local/prometheus/
#下载最新版的2.24prometheus和解压
./prometheus --config.file=prometheus.yml
#启动prometheus,--config.file指定配置文件
http://localhost:9090
http://localhost:9090/metrics
#prometheus服务端已经好了

配置systemctl
vi /usr/lib/systemd/system/prometheus.service 
[Unit]
Description=Prometheus Node Exporter
After=network.target
 
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
User=root
[Install]
WantedBy=multi-user.target
#添加systemctl文件
systemctl start prometheus.service 
systemctl enable prometheus.service
#启动服务和开启自启

在这里插入图片描述可以看到默认就是监控自己,类似zabbix安装好后也有一个默认的主机

./prometheus --help(启动参数)

  • –config.file:指定配置文件
  • –web.xx:web相关
  • –storage.xx:存储相关
  • –rules:告警相关
  • –alertmanager.xx:告警相关
  • –query.xx:查询相关

prometheus配置文件(yaml格式)

  • global:全局配置
  • alerting:告警配置
  • rule_files:告警规则
  • scrape_configs:配置数据源,配置抓取客户端(target),可以是静态配置和动态发现

global字段

  • scrape_interval:全局默认的数据拉取间隔
    • [ scrape_interval: <duration> | default = 1m ]
  • scrape_timeout:全局默认的单次数据拉取超时
    • [ scrape_timeout:\ | default = 10s ]
  • external_labels:用于外部系统标签的,不是用于metrics数据
    • [ <labelname>: <labelvalue> … ]
  • query_log_file:PromQL查询记录到的文件
    • [ query_log_file: <string> ]

通用占位符定义如下:

  • boolean:可以接受值的布尔值true或false
  • duration:持续时间相匹配正则表达式((([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?|0),例如1d,1h30m,5m,10s
  • filename:当前工作目录中的有效路径
  • host:由主机名或IP后跟可选端口号组成的有效字符串
  • int:整数值
  • labelname:与正则表达式匹配的字符串 [a-zA-Z_][a-zA-Z0-9_]*
  • labelvalue:一串unicode字符
  • path:有效的网址路径
  • scheme>:可以采用值的字符串http或https
  • secret>:是秘密的常规字符串,例如密码
  • string:常规字符串
  • tmpl_string:使用前已模板扩展的字符串

scrape_configs字段:拉取数据配置

  • job_name:定义job名称,是一个拉取单元

    • 默认配置:
      • scrape_interval 依赖全局配置
      • scrape_timeout 依赖全局配置
      • metrics_path 默认为/metrics
      • scheme 默认为http
  • honor_labels:服务端拉取过来的数据也会存在标签,配置文件中也会有标签,这样就可能发生冲突

    • true就是以抓取数据中的标签为准
    • false就会重新命名抓取数据
    • [ honor_labels: <boolean> | default = false ]
  • scheme:抓取数据所用的协议,默认为http

  • params:可选HTTP URL参数

    • [ <string>: [<string>, …] ]
  • basic_auth:抓取认证
    password和password_file互斥只可以选择其一
    basic_auth:
    [ username: <string> ]
    [ password: <secret> ]
    [ password_file: <string> ]

  • bearer_token:认证令牌
    bearer_token和bearer_token_file互斥只可以选择其一
    [ bearer_token: <secret> ]
    [ bearer_token_file: /path/to/bearer/token/file ]

  • tls_config:tls认证配置
    tls_config:
    [ ca_file: ]
    [ cert_file: ]
    [ key_file: ]
    [ server_name: ]
    [ insecure_skip_verify: ]
    #禁用证书验证

  • proxy_url:通过代理拉取数据

    • [ proxy_url: <string> ]

服务发现
Prometheus支持多种服务现工具(sd就是service discovery的缩写)

  • azure_sd_configs:
  • consul_sd_configs:
  • dns_sd_configs:
  • ec2_sd_configs:
  • openstack_sd_configs:
  • file_sd_configs:
  • gce_sd_configs:
  • kubernetes_sd_configs:
  • marathon_sd_configs:
  • nerve_sd_configs:
  • serverset_sd_configs:
  • triton_sd_configs:

static_configs:静态配置发现

  • targets:
    指定静态目标
    [ - ‘<host>’ ]
    labels:
    给抓取出来的所有指标添加指定的标签
    [ <labelname>: <labelvalue> … ]

配置参考:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config
配置参考:https://www.dazhuanlan.com/2019/12/12/5df11ada207ce/

配置cAdvisor

vi prometheus.yml 
  - job_name: 'cAdvisor'
    static_configs:
    - targets: ['192.168.12.3:4194']  #填写多个cadvisor的主机地址用逗号隔开
#节点无须任何安装,配置文件添加,注意配置基于scrape_configs字段下一层
systemctl restart prometheus.service

查看targets信息
在这里插入图片描述

最基本的监控配置完成

配置grafana(docker)

docker run -d \
--name=grafana \
 -p 3000:3000 \
grafana/grafana

http://localhost:3000/login(账号密码:admin)

安装插件

docker exec -it grafana bash 
grafana-cli plugins install grafana-kubernetes-app

docker restart grafana
#web进入插件管理,开启

监控cAdvisor

  • 找cAdvisor资源的dashboards模板
    • https://grafana.com/grafana/dashboards?search=cAdvisor
    • 代码编号:10566
  • 导入面板:Home->Dashboards->Import
    在这里插入图片描述简单的监控就出来了
    在这里插入图片描述

node_exporter没做,不然图形会好看点,部分显示N/A

猜你喜欢

转载自blog.csdn.net/yangshihuz/article/details/113752240