状态文件部署prometheus
[ root@master srv]
.
└── salt
├── base
│ ├── apache.sls
│ ├── top.sls
│ └── web
│ └── apache
│ ├── apache.sls
│ └── install.sls
├── dev
├── pillar
│ ├── base
│ │ ├── apache.sls
│ │ └── top.sls
│ └── prod
│ ├── prometheus.sls
│ └── top.sls
├── prod
│ └── modules
│ ├── insatll.sh
│ ├── install.sls
│ ├── prometheus
│ │ ├── files
│ │ │ ├── grafana-install.sh
│ │ │ ├── node_exporter.service.j2
│ │ │ ├── prometheus-2.31.1.linux-amd64.tar.gz
│ │ │ ├── prometheus.service.j2
│ │ │ └── prometheus.yml.j2
│ │ ├── grafana_install.sls
│ │ ├── monitor.sls
│ │ ├── node_install.sls
│ │ └── prometheus_install.sls
│ └── prometheus-2.31.1.linux-amd64.tar.gz
└── test
prometheus.sls
[ root@master /]
prometheus_install_dir:/usr/local/
node_exporter_ip:192.168.197.131
[ root@master /]
prod:
'*'
- prometheus
[ root@master /]
grafana_install.sls
[ root@master /]
/usr/src/grafana-enterprise-8.2.5-1.x86_64.rpm:
file.managed:
- source: salt://modules/prometheus/files/grafana-enterprise-8.2.5-1.x86_64.rpm
- user: root
- group: root
- mode: '0644'
grafana-install:
cmd.script:
- name: salt://modules/prometheus/files/grafana-install.sh
- unless: test -d /etc/grafana
grafana-server:
service.running:
- reload: true
- enable: true
node_install.sls
[ root@master /]
unzip-node:
archive.extracted:
- name: { { pillar[ 'prometheus_install_dir' ] } }
- source: salt://modules/prometheus/files/node_exporter-1.3.0.linux-amd64.tar.gz
- if_missing: { { pillar[ 'prometheus_install_dir' ] } } /node_exporter-1.3.0.linux-amd64
rename-node:
file.rename:
- name: { { pillar[ 'prometheus_install_dir' ] } } /node_exporter
- source: { { pillar[ 'prometheus_install_dir' ] } } /node_exporter-1.3.0.linux-amd64
- force: false
- makedirs: false
/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:
- enable: true
- reload: true
prometheus_install.sls
[ root@master /]
prometheus:
uer.present:
- system:true
- shell:/sbin/nologin
- createhome:false
unzip-prometheus:
archive.extracted:
- name:{ { pillar[ 'prometheus_install_dir' ] } }
- source:salt://modules/prometheus/files/prometheus-2.31.1.linux-amd64.tar.gz
- if_missing:{ { pillar[ 'prometheus_install_dir' ] } } /prometheus-2.31.1.linux-amd64
renae-prometheus:
file.rename:
- name:{ { pillar[ 'prometheus_install_dir' ] } }
- source:salt://modules/prometheus/files/prometheus-2.31.1.linux-amd64
- force:false
makedirs:false
/data/prometheus:
file.directory:
- user:prometheus
- group:prometheus
- mode:'0755'
- makedirs:true
/usr/lib/systemd/system/prometheus.service:
file.managed:
- source: salt://modules/prometheus/files/prometheus.service.j2
- user: root
- group:root
- mode: '0644'
- template:jinja
prometheus.service:
service.running:
- enable:true
- reload:true
[ root@master /]
[ Unit]
Description = The node_exporter Server
After = network.target
[ Service]
ExecStart = /usr/local/node_exporter/node_exporter
Restart = on-failure
RestartSec = 15s
SyslogIdentifier = node_exporter
[ Install]
WantedBy = multi-user.target
[ root@master /]
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: [ "{{ pillar['node_exporter_ip'] }}:9100" ]
[ root@master /]
[ root@master /]
[ Unit]
Description = Prometheus
After = network.target
[ Service]
Type = simple
Environment = "GOMAXPROCS=4"
User = prometheus
Group = prometheus
ExecReload = /bin/kill -HUP $MAINPID
ExecStart = { { pillar[ 'prometheus_install_dir' ] } } /prometheus/prometheus \
--config.file= { { pillar[ 'prometheus_install_dir' ] } } /prometheus/prometheus.yml \
--storage.tsdb.path= /data/prometheus \
--storage.tsdb.retention= 30d \
--web.console.libraries= { { pillar[ 'prometheus_install_dir' ] } } /prometheus/console_libraries \
--web.console.templates= { { pillar[ 'prometheus_install_dir' ] } } /prometheus/consoles \
--web.listen-address= 0.0 .0.0:9090 \
--web.read-timeout= 5m \
--web.max-connections= 10 \
--query.max-concurrency= 20 \
--query.timeout= 2m \
--web.enable-lifecycle
PrivateTmp = true
PrivateDevices = true
ProtectHome = true
NoNewPrivileges = true
LimitNOFILE = infinity
ReadWriteDirectories = /data/prometheus
ProtectSystem = full
SyslogIdentifier = prometheus
Restart = always
[ Install]
WantedBy = multi-user.target
[ root@master /]