1、部署prometheus server

 官网下载地址:https://prometheus.io/download/
 ​
 [root@ubuntu2004 ~]#tar xf prometheus-2.40.2.linux-amd64.tar.gz -C /usr/local/
 ​
 [root@ubuntu2004 ~]#cd /usr/local/
 [root@ubuntu2004 local]#mv prometheus-2.40.2.linux-amd64 prometheus-2.40.2
 [root@ubuntu2004 local]#ln -s /usr/local/prometheus-2.40.2 /usr/local/prometheus
 ​
 [root@ubuntu2004 local]#cd prometheus
 [root@ubuntu2004 prometheus]#ln -s /usr/local/prometheus/prometheus /usr/local/bin/
 [root@ubuntu2004 prometheus]#cp prometheus.yml{,.bak}
 ​
 #基于systemd管理启动、停止
 [root@ubuntu2004 prometheus]#vim /usr/lib/systemd/system/prometheus.service
 [Unit]
 Description=Monitoring system and time series database
 Documentation=https://prometheus.io/docs/introduction/overview/
 ​
 [Service]
 Restart=always
 #User=prometheus
 ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
 ExecReload=/bin/kill -HUP $MAINPID
 TimeoutStopSec=20s
 SendSIGKILL=no
 LimitNOFILE=8192
 ​
 [Install]
 WantedBy=multi-user.target
 ​
 [root@ubuntu2004 prometheus]#systemctl daemon-reload
 ​
 [root@ubuntu2004 prometheus]#systemctl stop prometheus.service 
 [root@ubuntu2004 prometheus]#systemctl start prometheus.service 
 [root@ubuntu2004 prometheus]#ss -ntlp
 State  Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process                                    
 LISTEN 0       128            0.0.0.0:22          0.0.0.0:*     users:(("sshd",pid=772,fd=3))             
 LISTEN 0       4096     127.0.0.53%lo:53          0.0.0.0:*     users:(("systemd-resolve",pid=739,fd=13)) 
 LISTEN 0       128               [::]:22             [::]:*     users:(("sshd",pid=772,fd=4))             
 LISTEN 0       4096                 *:9090              *:*     users:(("prometheus",pid=6640,fd=3))

image-20221121204834909

2、部署node exporter

 #prometheus节点:
 [root@ubuntu2004 ~]#tar xf node_exporter-1.4.0.linux-amd64.tar.gz
 [root@ubuntu2004 ~]#cd node_exporter-1.4.0.linux-amd64/
 [root@ubuntu2004 node_exporter-1.4.0.linux-amd64]#mv node_exporter /usr/local/bin/
 ​
 [root@ubuntu2004 node_exporter-1.4.0.linux-amd64]#vim /usr/lib/systemd/system/exporter.service 
 ​
 [Unit]
 Description=node_exporter
 Documentation=https://prometheus.io/
 After=network.target
 ​
 [Service]
 Type=simple
 #User=prometheus
 ExecStart=/usr/local/bin/node_exporter  --collector.ntp --collector.mountstats --collector.systemd --collector.ethtool --collector.tcpstat
 ExecReload=/bin/kill -HUP $MAINPID
 TimeoutStopSec=20s
 Restart=always
 ​
 [Install]
 WantedBy=multi-user.target
 ​
 ​
 [root@ubuntu2004 node_exporter-1.4.0.linux-amd64]#systemctl daemon-reload 
 [root@ubuntu2004 node_exporter-1.4.0.linux-amd64]#systemctl start exporter.service 
 ​
 [root@ubuntu2004 ~]#ss -ntlp
 State  Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process                                    
 LISTEN 0       128            0.0.0.0:22          0.0.0.0:*     users:(("sshd",pid=772,fd=3))             
 LISTEN 0       4096     127.0.0.53%lo:53          0.0.0.0:*     users:(("systemd-resolve",pid=739,fd=13)) 
 LISTEN 0       128               [::]:22             [::]:*     users:(("sshd",pid=772,fd=4))             
 LISTEN 0       4096                 *:9090              *:*     users:(("prometheus",pid=6640,fd=3))      
 LISTEN 0       4096                 *:9100              *:*     users:(("node_exporter",pid=51385,fd=7))
 #其他被监控节点:
 [root@ubuntu2004 ~]#tar xf node_exporter-1.4.0.linux-amd64.tar.gz 
 [root@ubuntu2004 ~]#mv node_exporter-1.4.0.linux-amd64/node_exporter /usr/local/bin/
 [root@ubuntu2004 ~]#vim /usr/lib/systemd/system/exporter.service 
 [Unit]
 Description=node_exporter
 Documentation=https://prometheus.io/
 After=network.target
 ​
 [Service]
 Type=simple
 ExecStart=/usr/local/bin/node_exporter 
 ExecReload=/bin/kill -HUP $MAINPID
 TimeoutStopSec=20s
 Restart=always
 ​
 [Install]
 WantedBy=multi-user.target
 ​
 [root@ubuntu2004 ~]#systemctl daemon-reload 
 [root@ubuntu2004 ~]#systemctl start exporter.service 
 ​
 [root@ubuntu2004 ~]#ss -ntlp
 State  Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process                                    
 LISTEN 0       4096     127.0.0.53%lo:53          0.0.0.0:*     users:(("systemd-resolve",pid=739,fd=13)) 
 LISTEN 0       128            0.0.0.0:22          0.0.0.0:*     users:(("sshd",pid=772,fd=3))             
 LISTEN 0       4096                 *:9100              *:*     users:(("node_exporter",pid=46958,fd=3))  
 LISTEN 0       128               [::]:22             [::]:*     users:(("sshd",pid=772,fd=4))  

3、修改prometheus配置监控各节点

 [root@ubuntu2004 prometheus]#pwd
 /usr/local/prometheus
 [root@ubuntu2004 prometheus]#vim prometheus.yml
 ......
   - job_name: "node_exporter"
     metrics_path: '/metrics'
     scheme: 'http'
     static_configs:
       - targets:
         - "10.0.0.101:9100"
         - "10.0.0.102:9100"
         - "10.0.0.103:9100"
 [root@ubuntu2004 prometheus]#systemctl restart prometheus.service

image-20221122104753552

4、基于文件自动发现节点

 [root@ubuntu2004 prometheus]#mkdir targets
 [root@ubuntu2004 prometheus]#vim targets/node-linux.yaml
 - targets:
   - 10.0.0.101:9100
   - 10.0.0.102:9100
   - 10.0.0.103:9100
   labels:
     os: ubuntu
 ​
 #更改配置为:
 [root@ubuntu2004 prometheus]#vim prometheus.yml
 ......
   - job_name: "node_exporter"
     metrics_path: '/metrics'
     scheme: 'http'
     file_sd_configs:
       - files:
           - targets/node*.yaml
         refresh_interval: 2m
 ​
 ​
 [root@ubuntu2004 prometheus]#systemctl restart prometheus.service 
 [root@ubuntu2004 prometheus]#systemctl status prometheus.service

image-20221122135215849

5、基于consul自动发现监控节点

 [root@ubuntu2004 ~]#curl -LO https://releases.hashicorp.com/consul/1.14.1/consul_1.14.1_linux_amd64.zip
 [root@ubuntu2004 ~]#unzip consul_1.14.1_linux_amd64.zip 
 ​
 [root@ubuntu2004 ~]#mv consul /usr/local/bin
 [root@ubuntu2004 ~]#mkdir -pv /consul/data
 [root@ubuntu2004 ~]#mkdir /etc/consul
 ​
 #以开发者模式运行:
 [root@ubuntu2004 ~]#consul agent -dev -ui -data-dir=/consul/data/ --config-dir=/etc/consul -client=0.0.0.0

image-20221122142443625

 [root@ubuntu2004 ~]#vim /etc/consul/nodes.json
 {
   "services": [
     {
       "id": "node_exporter-node01",
       "name": "103.wang.org",
       "address": "10.0.0.103",
       "port": 9100,
       "tags": ["nodes"],
       "checks": [{
         "http": "http://10.0.0.103:9100/metrics",
         "interval": "5s"
       }]
     },
     {
       "id": "node_exporter-node02",
       "name": "102.wang.org",
       "address": "10.0.0.102",
       "port": 9100,
       "tags": ["nodes"],
       "checks": [{
         "http": "http://10.0.0.102:9100/metrics",
         "interval": "5s"
       }]
     },
     {
       "id": "node_exporter-node03",
       "name": "prometheus-server",
       "address": "10.0.0.101",
       "port": 9100,
       "tags": ["nodes"],
       "checks": [{
         "http": "http://10.0.0.101:9100/metrics",
         "interval": "5s"
       }]
     }
   ]
 }
 ​

image-20221122143517391

 #修改配置文件:
 [root@ubuntu2004 prometheus]#vim prometheus.yml
 .......
   - job_name: "node_exporter"
     metrics_path: '/metrics'
     scheme: 'http'
     consul_sd_configs:
     - server: "10.0.0.101:8500"
       tags:
       - "nodes"
       refresh_interval: 2m 
       
 [root@ubuntu2004 prometheus]#systemctl reload prometheus.service 

image-20221122144210297

6、基于docker-compose部署prometheus

温馨提示:所有节点提前部署好docker和docker-compose,如需脚本,请参照:https://blog.51cto.com/dayu/5878166

避免冲突,请提前关闭宿主机部署的prometheus和node-exporter

6-1、部署prometheus
 [root@ubuntu2004 01-prometheus-basics-example]#tree
 .
 ├── docker-compose.yml
 ├── prometheus
 │?? ├── prometheus.yml
 │?? └── targets
 │??     ├── nodes-linux.yaml
 │??     └── prometheus-servers.yaml
 └── README.md
 ​
 ​
 [root@ubuntu2004 01-prometheus-basics-example]#cat docker-compose.yml
 version: '3.6'
 ​
 volumes:
     prometheus_data: {}
 ​
 networks:
   monitoring:
     driver: bridge
 ​
 services:
 ​
   prometheus:
     image: prom/prometheus:v2.40.2
     volumes:
       - ./prometheus/:/etc/prometheus/
       - prometheus_data:/prometheus
     command:
       - '--config.file=/etc/prometheus/prometheus.yml'
       - '--storage.tsdb.path=/prometheus'
       - '--web.console.libraries=/usr/share/prometheus/console_libraries'
       - '--web.console.templates=/usr/share/prometheus/consoles'
       - '--web.enable-lifecycle'
     networks:
       - monitoring
     ports:
       - 9090:9090
     restart: always
 ​
   node-exporter:
     image: prom/node-exporter:v1.4.0
     volumes:
       - /proc:/host/proc:ro
       - /sys:/host/sys:ro
       - /:/rootfs:ro
     command:
       - '--path.procfs=/host/proc'
       - '--path.sysfs=/host/sys'
       - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
       - '--path.rootfs=/rootfs'
     ports:
       - 9100:9100
     networks:
       - monitoring
     restart: always
 ​
 ​
 [root@ubuntu2004 01-prometheus-basics-example]#cd prometheus/
 [root@ubuntu2004 prometheus]#ls
 prometheus.yml  targets
 [root@ubuntu2004 prometheus]#cat prometheus.yml 
 # my global config
 # Author: MageEdu <mage@magedu.com>
 # Repo: http://gitlab.magedu.com/MageEdu/prometheus-configs/
 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
 ​
   # All nodes
   - job_name: 'nodes'
     file_sd_configs:
     - files:                                               
       - targets/nodes-*.yaml  
       refresh_interval: 2m 
       
  
 [root@ubuntu2004 prometheus]#cd targets/
 [root@ubuntu2004 targets]#ls
 nodes-linux.yaml  prometheus-servers.yaml
 [root@ubuntu2004 targets]#cat prometheus-servers.yaml 
 - targets:
   - localhost:9090
   labels:
     app: prometheus
     job:  prometheus
 [root@ubuntu2004 targets]#cat nodes-linux.yaml 
 - targets:
   - 10.0.0.101:9100
   - 10.0.0.102:9100
   - 10.0.0.103:9100
   labels:
     app: node-exporter
 ​
 [root@ubuntu2004 targets]#cd ../..
 [root@ubuntu2004 01-prometheus-basics-example]#ls
 docker-compose.yml  prometheus  README.md
 ​
 [root@ubuntu2004 01-prometheus-basics-example]#docker-compose up -d
 Creating 01-prometheus-basics-example_node-exporter_1 ... done
 Creating 01-prometheus-basics-example_prometheus_1    ... done
 [root@ubuntu2004 01-prometheus-basics-example]#docker-compose ps
                     Name                                  Command               State                    Ports                  
 --------------------------------------------------------------------------------------------------------------------------------
 01-prometheus-basics-example_node-exporter_1   /bin/node_exporter --path. ...   Up      0.0.0.0:9100->9100/tcp,:::9100->9100/tcp
 01-prometheus-basics-example_prometheus_1      /bin/prometheus --config.f ...   Up      0.0.0.0:9090->9090/tcp,:::9090->9090/tcp
 ​
 [root@ubuntu2004 00-node-exporter]#ss -ntlp
 State             Recv-Q            Send-Q                       Local Address:Port                       Peer Address:Port           Process                                              
 LISTEN            0                 128                                0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=772,fd=3))                       
 LISTEN            0                 4096                               0.0.0.0:9090                            0.0.0.0:*               users:(("docker-proxy",pid=65747,fd=4))             
 LISTEN            0                 4096                               0.0.0.0:9100                            0.0.0.0:*               users:(("docker-proxy",pid=65721,fd=4))             
 LISTEN            0                 4096                         127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=739,fd=13))           
 LISTEN            0                 128                                   [::]:22                                 [::]:*               users:(("sshd",pid=772,fd=4))                       
 LISTEN            0                 4096                                  [::]:9090                               [::]:*               users:(("docker-proxy",pid=65754,fd=4))             
 LISTEN            0                 4096                                  [::]:9100                               [::]:*               users:(("docker-proxy",pid=65730,fd=4))  
 ​

image-20221122152924101

6-2、部署node-exporter
 [root@ubuntu2004 ~]#cat docker-compose.yml
 version: '3.3'
 ​
 volumes:
     prometheus_data: {}
 ​
 networks:
   monitoring:
     driver: bridge
 ​
 services:
   node-exporter:
     image: prom/node-exporter:v1.4.0
     volumes:
       - /proc:/host/proc:ro
       - /sys:/host/sys:ro
       - /:/rootfs:ro
     command:
       - '--path.procfs=/host/proc'
       - '--path.sysfs=/host/sys'
       - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
       - '--path.rootfs=/rootfs'
     ports:
       - 9100:9100
     networks:
       - monitoring
     restart: always
     
     
     
 [root@ubuntu2004 ~]#docker-compose up -d
 ​
 [root@ubuntu2004 ~]#ss -ntlp
 State             Recv-Q            Send-Q                       Local Address:Port                       Peer Address:Port           Process                                              
 LISTEN            0                 4096                               0.0.0.0:9100                            0.0.0.0:*               users:(("docker-proxy",pid=61112,fd=4))             
 LISTEN            0                 4096                         127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=740,fd=13))           
 LISTEN            0                 128                                0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=773,fd=3))                       
 LISTEN            0                 4096                                  [::]:9100                               [::]:*               users:(("docker-proxy",pid=61118,fd=4))             
 LISTEN            0                 128                                   [::]:22                                 [::]:*               users:(("sshd",pid=773,fd=4))

原文地址:http://www.cnblogs.com/wdy001/p/16917476.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性