侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Prometheus(1)之快速安装Prometheus

zze
zze
2020-11-16 / 0 评论 / 0 点赞 / 636 阅读 / 3894 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

二进制安装

官网下载二进制包:

$ wget https://github.com/prometheus/prometheus/releases/download/v2.22.1/prometheus-2.22.1.linux-amd64.tar.gz

创建安装目录:

$ mkdir -p /opt/apps/prometheus/{conf,bin,data}

解压并移动文件:

$ tar xf prometheus-2.22.1.linux-amd64.tar.gz
$ cd prometheus-2.22.1.linux-amd64
$ mv prometheus promtool /opt/apps/prometheus/bin/
$ mv prometheus.yml /opt/apps/prometheus/conf/

创建 Systemd 配置文件:

$ cat > /lib/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
 
[Service]
ExecStart=/opt/apps/prometheus/bin/prometheus \
  --config.file=/opt/apps/prometheus/conf/prometheus.yml \
  --storage.tsdb.path=/opt/apps/prometheus/data \
  --storage.tsdb.retention=15d \
  --web.listen-address=:9090 \ 
  --web.enable-lifecycle
ExecReload=/usr/bin/curl -X POST http://127.0.0.1:9090/-/reload
 
[Install]
WantedBy=multi-user.target
EOF

上述几个启动选项描述如下:

  • --config.file:指定 Prometheus 启动程序使用的主配置文件;
  • --storage.tsdb.path:Prometheus 本身也是个 tsdb,此选项用来指定一个目录来保存采集到的数据;
  • --storage.tsdb.retention:指定保存数据的周期,这里指定的 15d 表示仅保存 15 天内采集到的数据;
  • --web.listen-address:指定 Prometheus 监听地址和端口;
  • --web.enable-lifecycle:如果开启了这个命令行参数,每当 prometheus.yml 文件发生改变时,就不需要对 Prometheus 进行重新启动的操作了,而可以通过发送 http 请求到 Prometheus 服务的指定 path 来让服务配置重载,如 curl -X POST http://localhost:9090/-/reload

除了上述已使用的几个选项以外,还有几个常用选项如下:

  • --web.external-url:用于返回 Prometheus 的相对和绝对链接地址,可以在后续告警通知中直接点击链接访问 Prometheus Web UI,格式为 http[s]:<ip|domain_name>:<port>
  • --web.max-connections:设置同一时间最大连接数;

下面为 prometheus.yml 的配置内容(各配置功用已以注释说明):

# global 模块是全局配置信息,它定义的内容会被 scrape_configs 块中的每个 Job 单独覆盖
global:
  # 抓取 target 的时间间隔,设置为 15 秒,默认值为 1 分钟
  scrape_interval:     15s 
  # 计算一条规则配置的时间间隔,设置为 15 秒,默认值为 1 分钟
  evaluation_interval: 15s 
  # 抓取 target 的超时时间,默认值为 10 秒
  scrape_timeout: 5s 
  # 与外部系统通信时添加到任意时间序列或告警所用的外部标签
  #external_labels: 

# 告警模块
alerting:
  alertmanagers:
  # 静态配置 Alertmanager 的地址,也可以依赖服务发现动态识别
  - static_configs:
    # 可以配置多个地址
    - targets:
      # - alertmanager:9093

# 自定义的 Rule 主要分为 Recording rule 和 Alerting rule 两类
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
# 抓取配置
scrape_configs:
  # Job 名称很重要,Prometheus 会将该名称作为 Label 追加到抓取的每条时序中
  - job_name: 'prometheus-server'
    # 指定抓取指标的 path,默认值为 /metrics
    metrics_path: /metrics
    # 用于请求的协议,默认 http
    scheme: http
    # 静态方式抓取指标配置
    static_configs:
    - targets: ['localhost:9090']

启动服务并设置开机自启:

$ systemctl start prometheus && systemctl enable prometheus

启动浏览器访问:

image.png

Docker 安装

快速安装 Docker:

$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

直接运行一个 Docker 容器,由于这里默认的 9090 端口已经被上面二进制方式启动的 Prometheus 占用了,所以这里我将容器的 9090 端口映射到 9091 端口,命令如下:

$ docker run -d -p 9091:9090 -v /opt/apps/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/prometheus

启动浏览器访问:

image.png

0

评论区