一、prometheus基础监控
一、系统环境
1 2 3 4 5 6 | root@prometheus:~ # cat /etc/issue Ubuntu 20.04.3 LTS \n \l 192.168.88.200 prometheus-server 192.168.88.201 node1 192.168.88.202 node2<br><br>192.168.88.101 k8s-master<br>192.168.88.102 k8s-node1<br>192.168.88.103 k8s-node2 |
二、二进制安装prometheus
prometheus官网下载地址:https://prometheus.io/download/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # 解压二进制包 root@prometheus:~ # tar xf /usr/local/src/prometheus-2.30.3.linux-amd64.tar.gz -C /usr/local/ root@prometheus:~ # cd /usr/local/ root@prometheus: /usr/local # ln -sv prometheus-2.30.3.linux-amd64/ prometheus 'prometheus' -> 'prometheus-2.30.3.linux-amd64/' root@prometheus: /usr/local # cd prometheus root@prometheus: /usr/local/prometheus # ls LICENSE NOTICE console_libraries consoles prometheus prometheus.yml promtool root@prometheus: /usr/local/prometheus # # prometheus.service 文件 root@prometheus:~ # cat > /etc/systemd/system/prometheus.service << EOF > [Unit] > Description=Prometheus Server > Documentation=https: //prometheus .io /docs/introduction/overview > After=network.target > > [Service] > Restart=on-failure > WorkingDirectory= /usr/local/prometheus > ExecStart= /usr/local/prometheus/prometheus --config. file = /usr/local/prometheus/prometheus .yml > > [Install] > WantedBy=multi-user.target > EOF root@prometheus:~ # # 启动 root@prometheus: /usr/local # systemctl daemon-reload root@prometheus: /usr/local # systemctl start prometheus root@prometheus: /usr/local # netstat -tnpl | grep 9090 tcp6 0 0 :::9090 :::* LISTEN 2787 /prometheus root@prometheus: /usr/local # # prometheus配置文件 root@prometheus:~ # cat /usr/local/prometheus/prometheus.yml global: scrape_interval: 15s # 全局配置,15s收集一次数据 evaluation_interval: 15s # 全局配置,15s评估一次告警规则是否触发 # 告警组件Alertmanager的配置 alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # 告警规则文件,根据evaluation_interval评估间隔”定期评估 rule_files: # - "first_rules.yml" # - "second_rules.yml" # 配置指标数据采集 scrape_configs: - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. # 目标主机地址和端口 static_configs: - targets: [ "localhost:9090" ] |
访问prometheus的9090端口,可通过prometheus:9090/metrics来获取prometheus服务器自己的指标数据
三、prometheus采集node指标数据
在node1和node2节点上部署node_exporter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # 在node1和node2上执行以下步骤 # 二进制解包 root@node1:~ # cd /usr/local/src/ root@node1: /usr/local/src # tar xf node_exporter-1.2.2.linux-amd64.tar.gz root@node1: /usr/local/src # cd node_exporter-1.2.2.linux-amd64/ root@node1: /usr/local/src/node_exporter-1 .2.2.linux-amd64 # ls LICENSE NOTICE node_exporter root@node1: /usr/local/src/node_exporter-1 .2.2.linux-amd64 # mv node_exporter /usr/local/bin/ root@node1: /usr/local/src/node_exporter-1 .2.2.linux-amd64 # # 创建service文件 root@node1:~ # cat > /etc/systemd/system/node-exporter.service << EOF > [Unit] > Description=Prometheus Node Exporter > After=network.target > > [Service] > ExecStart= /usr/local/bin/node_exporter > > [Install] > WantedBy=multi-user.target > EOF root@node1:~ # # 启动 root@node1:~ # systemctl daemon-reload root@node1:~ # systemctl start node-exporter root@node1:~ # netstat -tnlp | grep 9100 tcp6 0 0 :::9100 :::* LISTEN 2648 /node_exporter root@node1:~ # |
访问node节点的9100:/metrics即可查看node的指标数据
在prometheus服务器上配置采集node节点数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | root@prometheus: /usr/local/prometheus # cat prometheus.yml 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" ] - job_name: "nodes" static_configs: - targets: - 192.168.88.201:9100 - 192.168.88.202:9100 labels: system: linux root@prometheus: /usr/local/prometheus # # 重启prometheus root@prometheus:~ # systemctl restart prometheus |
访问prometheus web页面查看node1和node2已经添加至prometheus
验证node数据
四、prometheus采集blackbox exporter指标数据
blackbox_exporter可以通过HTTP、HTTPS、DNS、TCP和ICMP对被监控节点进行监控和数据采集
1 2 3 4 | HTTP /HTTPS :URL /API 可用性检测 TCP:端口监听检测 ICMP:主机存活性检测 DNS:域名解析检测 |
1、部署blackbox_exporter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | # 解包 root@node1: /usr/local/src # tar xf blackbox_exporter-0.19.0.linux-amd64.tar.gz -C /usr/local/ root@node1: /usr/local/src # cd /usr/local/ root@node1: /usr/local # ls bin blackbox_exporter-0.19.0.linux-amd64 etc games include lib man sbin share src root@node1: /usr/local # ln -sv blackbox_exporter-0.19.0.linux-amd64/ blackbox_exporter 'blackbox_exporter' -> 'blackbox_exporter-0.19.0.linux-amd64/' root@node1: /usr/local # # service启动文件 root@node1: /usr/local/blackbox_exporter # cat > /etc/systemd/system/black-exporter.service << EOF > [Unit] > Description=Prometheus Blackbox Exporter > After=network.target > > [Service] > Type=simple > User=root > Group=root > ExecStart= /usr/local/blackbox_exporter/blackbox_exporter --config. file = /usr/local/blackbox_exporter/blackbox .yml --web.listen-address=:9115 > Restart=on-failure > > [Install] > WantedBy=multi-user.target > EOF # blackbox配置文件 root@node1: /usr/local/blackbox_exporter # cat blackbox.yml modules: http_2xx: prober: http http_post_2xx: prober: http http: method: POST tcp_connect: prober: tcp pop3s_banner: prober: tcp tcp: query_response: - expect: "^+OK" tls: true tls_config: insecure_skip_verify: false ssh_banner: prober: tcp tcp: query_response: - expect: "^SSH-2.0-" - send: "SSH-2.0-blackbox-ssh-check" irc_banner: prober: tcp tcp: query_response: - send: "NICK prober" - send: "USER prober prober prober :prober" - expect: "PING :([^ ]+)" send: "PONG ${1}" - expect: "^:[^ ]+ 001" icmp: prober: icmp # 启动 root@node1: /usr/local/blackbox_exporter # systemctl daemon-reload root@node1: /usr/local/blackbox_exporter # systemctl start black-exporter.service root@node1: /usr/local/blackbox_exporter # netstat -tnlp | grep 9115 tcp6 0 0 :::9115 :::* LISTEN 3211 /blackbox_expor root@node1: /usr/local/blackbox_exporter # |
验证web界面
2、blackbox_exporter实现URL监控
prometheus调用blackbox_exporter实现对URL/ICMP的监控
URL监控配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # prometheus.yml 配置 - job_name: "http_status" metrics_path: /probe params: module: [http_2xx] static_configs: - targets: [ 'http://www.xiaomi.com' , 'http://www.magedu.com' ] labels: instance: http_status group: web relabel_configs: - source_labels: [__address__] # relabel 通过将__address__(当前目标地址)写入__param_target标签来创建一个label target_label: __param_target # 监控目标www.xiaomi.com,作为__address__的value - source_labels: [__param_target] # 监控目标 target_label: url # 将监控目标与url创建一个label - target_label: __address__ replacement: 192.168.88.201:9115 # 重启prometheus root@prometheus: /usr/local/prometheus # ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: 0 rule files found root@prometheus: /usr/local/prometheus # systemctl restart prometheus root@prometheus: /usr/local/prometheus # |
prometheus验证数据
blackbox_exporter界面验证数据
3、blackbox_exporter实现ICMP监控
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # prometheus.yml 配置 - job_name: "ping_status" metrics_path: /probe params: module: [icmp] static_configs: - targets: [ '223.6.6.6' , '8.8.8.8' ] labels: instance: 'ping_status' group: 'icmp' relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: ip - target_label: __address__ replacement: 192.168.88.201:9115 # 重启prometheus root@prometheus: /usr/local/prometheus # ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: 0 rule files found root@prometheus: /usr/local/prometheus # systemctl restart prometheus |
prometheus验证数据
backbox_exporter验证数据
4、blackbox_exporter实现端口监控
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # prometheus.yml 配置 - job_name: "port_status" metrics_path: /probe params: module: [tcp_connect] static_configs: - targets: [ '192.168.88.201:9100' , '192.168.88.201:22' ] labels: instance: 'port_status' group: 'port' relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: ip - target_label: __address__ replacement: 192.168.88.201:9115 # 重启 root@prometheus: /usr/local/prometheus # ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: 0 rule files found root@prometheus: /usr/local/prometheus # systemctl restart prometheus root@prometheus: /usr/local/prometheus # |
prometheus验证数据
blackbox_exporter验证数据
五、grafana配置
1、安装grafana
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # 安装 root@prometheus:~ # apt install adduser libfontconfig1 -y root@prometheus:~ # dpkg -i grafana_7.5.11_amd64.deb # grafana.ini 配置文件 root@prometheus:~ # vim /etc/grafana/grafana.ini [server] # Protocol (http, https, h2, socket) protocol = http # The ip address to bind to, empty will bind to all interfaces http_addr = 0.0.0.0 # The http port to use http_port = 3000 # 启动 root@prometheus:~ # systemctl restart grafana-server.service root@prometheus:~ # systemctl enable grafana-server.service Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install . Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user .target.wants /grafana-server .service → /lib/systemd/system/grafana-server .service. root@prometheus:~ # |
登录web界面
添加数据源
2、导入node_exporter模板
搜索模板
导入模板-1860
3、导入blackbox_exporter模板
导入模板-13659
分类:
prometheus
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)