saltstack部署Prometheus

⽤saltstack编写普罗米修斯状态文件

项目结构

说明环境

主机ip主机名安装应用
192.168.129.135serverprometheus
grafana
192.168.129.136agentnode_exporter

安装包
prometheus-2.31.1.linux-amd64.tar.gz
node_exporter-1.3.0.linux-amd64.tar.gz
grafana-enterprise-8.2.5-1.x86_64.rpm

[root@master ~]# cd /srv/salt/prod/modules
[root@master modules]# tree prometheus/
prometheus/
├── agent.sls
├── files
│   ├── grafana-enterprise-8.2.5-1.x86_64.rpm
│   ├── node_exporter-1.3.0.linux-amd64.tar.gz
│   ├── node_exporter.service.j2
│   ├── prometheus-2.31.1.linux-amd64.tar.gz
│   ├── prometheus.service.j2
│   └── prometheus.yml.j2
└── server.sls

1 directory, 8 files

pillar变量

[root@master prod]# pwd
/srv/pillar/prod
[root@master prod]# cat prometheus.sls 
prometheus_install_dir: /usr/local
nodes:
  - 192.168.129.133:9100
  - 192.168.129.136:9100
  - 192.168.129.137:9100
node_exporter_install_dir: /usr/local/

[root@master prod]# cat top.sls 
prod:
  '*':
    - prometheus

prometheus以及grafana状态文件

[root@master prometheus]# pwd
/srv/salt/prod/modules/prometheus

[root@master prometheus]# cat server.sls 
copy-grafana-enterprise:
  file.managed:
    - name: /usr/src/grafana-enterprise-8.2.5-1.x86_64.rpm
    - source: salt://modules/prometheus/files/grafana-enterprise-8.2.5-1.x86_64.rpm

install-grafana:
  cmd.run:
    - name: "cd /usr/src/ && yum -y install grafana-enterprise-8.2.5-1.x86_64.rpm"
    - unless: test $(rpm -qa | grep grafana-enterprise-8.2.5-1.x86_64)

unzip-prometheus:
  archive.extracted:
    - name: {{ pillar['prometheus_install_dir'] }}
    - source: salt://modules/prometheus/files/prometheus-2.31.1.linux-amd64.tar.gz
    - unless: test -d {{ pillar['prometheus_install_dir'] }}/prometheus-2.31.1.linux-amd64
  file.symlink:
    - name: {{ pillar['prometheus_install_dir'] }}/prometheus
    - target: {{ pillar['prometheus_install_dir'] }}/prometheus-2.31.1.linux-amd64

copy-files:
  file.managed:
    - names:
      - /usr/lib/systemd/system/prometheus.service:
        - source: salt://modules/prometheus/files/prometheus.service.j2
        - template: jinja
      - {{ pillar['prometheus_install_dir'] }}/prometheus/prometheus.yml:
        - source: salt://modules/prometheus/files/prometheus.yml.j2
        - template: jinja

start-grafana-enterprise:
  service.running:
    - name: grafana-server.service
    - enable: true
    - reload: true

start-prometheus:
  service.running:
    - name: prometheus.service
    - enable: true
    - reload: true
    - watch:
      - file: {{ pillar['prometheus_install_dir'] }}/prometheus/prometheus.yml

prometheus.yml.j2 配置文件

[root@master files]# pwd
/srv/salt/prod/modules/prometheus/files
[root@master prometheus]# cat files/prometheus.yml.j2 
# 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']

{% for ip in pillar['nodes'] %}
  - job_name: "{{ ip }}"
    static_configs:
      - targets: ["{{ ip }}"]
{% endfor %}

prometheus.service启动文件

[root@master files]# pwd
/srv/salt/prod/modules/prometheus/files
[root@master files]# cat prometheus.service.j2 
[Unit]
Description=The Prometheus Server
After=network.target

[Service]
Restart=on-failure
ExecStart={{ pillar['prometheus_install_dir'] }}/prometheus/prometheus --config.file={{ pillar['prometheus_install_dir'] }}/prometheus/prometheus.yml
ExecStop=/bin/kill -HUP $MAINPID 
RestartSec=15s

[Install]
WantedBy=multi-user.target

执行server.sls

[root@master ~]# salt 'p1' state.sls modules.prometheus.server saltenv=prod
p1:
----------
          ID: copy-grafana-enterprise
    Function: file.managed
        Name: /usr/src/grafana-enterprise-8.2.5-1.x86_64.rpm
      Result: True
     Comment: File /usr/src/grafana-enterprise-8.2.5-1.x86_64.rpm is in the correct state
     Started: 01:04:57.614250
    Duration: 477.94 ms
     Changes:   
----------
          ID: install-grafana
    Function: cmd.run
        Name: cd /usr/src/ && yum -y install grafana-enterprise-8.2.5-1.x86_64.rpm
      Result: True
     Comment: unless condition is true
     Started: 01:04:58.092946
    Duration: 1671.231 ms
     Changes:   
----------
          ID: unzip-prometheus
    Function: archive.extracted
        Name: /usr/local
      Result: True
     Comment: unless condition is true
     Started: 01:04:59.764475
    Duration: 17.066 ms
     Changes:   
----------
          ID: unzip-prometheus
    Function: file.symlink
        Name: /usr/local/prometheus
      Result: True
     Comment: Symlink /usr/local/prometheus is present and owned by root:root
     Started: 01:04:59.781935
    Duration: 7.926 ms
     Changes:   
----------
          ID: copy-files
    Function: file.managed
        Name: /usr/lib/systemd/system/prometheus.service
      Result: True
     Comment: File /usr/lib/systemd/system/prometheus.service is in the correct state
     Started: 01:04:59.789997
    Duration: 13.572 ms
     Changes:   
----------
          ID: copy-files
    Function: file.managed
        Name: /usr/local/prometheus/prometheus.yml
      Result: True
     Comment: File /usr/local/prometheus/prometheus.yml updated
     Started: 01:04:59.803711
    Duration: 20.654 ms
     Changes:   
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -29,9 +29,9 @@
                         - targets: ['localhost:9090']
                   
                   
                  -  - job_name: "192.168.129.135:9100"
                  +  - job_name: "192.168.129.133:9100"
                       static_configs:
                  -      - targets: ["192.168.129.135:9100"]
                  +      - targets: ["192.168.129.133:9100"]
                   
                     - job_name: "192.168.129.136:9100"
                       static_configs:
----------
          ID: start-grafana-enterprise
    Function: service.running
        Name: grafana-server.service
      Result: True
     Comment: The service grafana-server.service is already running
     Started: 01:04:59.824632
    Duration: 41.703 ms
     Changes:   
----------
          ID: start-prometheus
    Function: service.running
        Name: prometheus.service
      Result: True
     Comment: Service prometheus.service is already enabled, and is running
     Started: 01:04:59.867011
    Duration: 97.745 ms
     Changes:   
              ----------
              prometheus.service:
                  True

Summary for p1
------------
Succeeded: 8 (changed=2)
Failed:    0
------------
Total states run:     8
Total run time:   2.348 s

node_exporter状态文件

[root@master prometheus]# pwd
/srv/salt/prod/modules/prometheus
[root@master prometheus]# cat agent.sls 
unzip-node_exporter:
  archive.extracted:
    - name: {{ pillar['node_exporter_install_dir'] }}
    - source: salt://modules/prometheus/files/node_exporter-1.3.0.linux-amd64.tar.gz
    - unless: test -d {{ pillar['node_exporter_install_dir'] }}/node_exporter-1.3.0.linux-amd64

  file.symlink:
    - name: {{ pillar['node_exporter_install_dir'] }}/node_exporter
    - target: {{ pillar['node_exporter_install_dir'] }}/node_exporter-1.3.0.linux-amd64

/usr/lib/systemd/system/node_exporter.service:
  file.managed:
    - source: salt://modules/prometheus/files/node_exporter.service.j2
    - user: root
    - group: root
    - mode: '0644'
    - template: jinja

node_exporter.service:
  service.running:
    - reload: true
    - enable: true
    - watch:
      - file: /usr/lib/systemd/system/node_exporter.service

node_exporter.service启动文件

[root@master prometheus]# cat files/node_exporter.service.j2 
[unit]
Description=The node_exporter Server
After=network.target

[Service]
ExecStart={{ pillar['node_exporter_install_dir'] }}/node_exporter/node_exporter
Restart=on-failure
RestartSec=15s
SyslogIdentifier=node_exporter

[Install]
WantedBy=multi-user.target

执行agent.sls

[root@master ~]# salt 'p2' state.sls modules.prometheus.agent saltenv=prod
p2:
----------
          ID: unzip-node_exporter
    Function: archive.extracted
        Name: /usr/local/
      Result: True
     Comment: unless condition is true
     Started: 00:53:55.563311
    Duration: 1534.873 ms
     Changes:   
----------
          ID: unzip-node_exporter
    Function: file.symlink
        Name: /usr/local//node_exporter
      Result: True
     Comment: Symlink /usr/local//node_exporter is present and owned by root:root
     Started: 00:53:57.098551
    Duration: 5.494 ms
     Changes:   
----------
          ID: /usr/lib/systemd/system/node_exporter.service
    Function: file.managed
      Result: True
     Comment: File /usr/lib/systemd/system/node_exporter.service updated
     Started: 00:53:57.104187
    Duration: 46.98 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0644
----------
          ID: node_exporter.service
    Function: service.running
      Result: True
     Comment: Service node_exporter.service has been enabled, and is running
     Started: 00:53:57.151820
    Duration: 282.957 ms
     Changes:   
              ----------
              node_exporter.service:
                  True

Summary for p2
------------
Succeeded: 4 (changed=2)
Failed:    0
------------
Total states run:     4
Total run time:   1.870 s
[root@master ~]# salt '*' state.sls modules.prometheus.agent saltenv=prod
[root@master ~]# vim /srv/salt/prod/modules/prometheus/main.sls
prod:
  'p1'
    - modules.prometheus.server
  'p2'
    - modules.prometheus.agent

[root@master ~]# salt '*' state.highstate 

效果图

在这里插入图片描述

  • 首次登陆时需要ip+端口号(默认为3000)
  • 默认账号:admin 密码:admin
    在这里插入图片描述
    再次输入(因为你是首次登陆)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值