{"id":267,"date":"2026-01-26T01:49:59","date_gmt":"2026-01-26T01:49:59","guid":{"rendered":"https:\/\/blog.gpst.net.cn:4008\/?p=267"},"modified":"2026-01-28T06:24:14","modified_gmt":"2026-01-28T06:24:14","slug":"grafananode_exporterprometheusalertmanagercadvisor%e9%83%a8%e7%bd%b2%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/opshub.com.cn\/?p=267","title":{"rendered":"grafana+node_exporter+prometheus+alertmanager+cadvisor\u90e8\u7f72\u7b14\u8bb0"},"content":{"rendered":"\n<p>1\u3001&nbsp;\u65b0\u5efa\u9879\u76ee\u6587\u4ef6\u5939\uff0c\u4e0a\u4f20\u5b89\u88c5\u5305\uff0c\u89e3\u538b\u5b89\u88c5\u5305, \u65b0\u5efaprometheus\u8d26\u53f7<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/opt\/gnp\ntar zxf grafana-9.5.15.linux-amd64.tar.gz\nmv grafana-v9.5.15\/ grafana\n\n\ntar zxf node_exporter-1.7.0.linux-amd64.tar.gz\nmv node_exporter-1.7.0.linux-amd64 node_exporter\n\n\ntar zxf prometheus-2.45.2.linux-amd64.tar.gz\nmv prometheus-2.45.2.linux-amd64 prometheus\n\n\nuseradd -s \/sbin\/nologin -M prometheus\nchown -R prometheus:prometheus prometheus<\/code><\/pre>\n\n\n\n<p>2\u3001\u4e3anode_exporter\u8bbe\u7f6e\u5b89\u5168\u8d26\u53f7,\u542f\u52a8\u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7528\u6237\u540d\uff1aprometheus\n\u5bc6\u7801\uff1anhlrs@202419\n\u5b89\u88c5htpasswd\u5de5\u5177\ndebian\uff1aapt-get install apache2-utils\ncentos: yum -y install httpd-tools\n\u751f\u6210bcrypt\u5bc6\u94a5\uff1a\nhtpasswd -nBC 12 '' |tr -d '\\:n'\nNew password:\nRe-type new password:\n$2y$12$rNSJIMLIIAN24YJc3LNEvuERW8JkqPHWyRlaNrWE8XAr3alItKgeG\ncat &gt;\/opt\/gnp\/node_exporter\/config.yml\nbasic_auth_users:\n  prometheus: $2y$12$rNSJIMLIIAN24YJc3LNEvuERW8JkqPHWyRlaNrWE8XAr3alItKgeG<\/code><\/pre>\n\n\n\n<p>3\u3001prometheus\u7684\u914d\u7f6e,\u7ea2\u84dd\u5b57\u4f53\u90e8\u5206\u9700\u8981\u6839\u636e\u60c5\u51b5\u5b9a\u4e49<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;\/opt\/gnp\/prometheus\/prometheus.yml\n# my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n\n\n\n# Alertmanager configuration\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n          # - alertmanager:9093\n\n\n\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\nrule_files:\n  # - \"first_rules.yml\"\n  # - \"second_rules.yml\"\n\n\n\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.\n  - job_name: \"prometheus\"\n\n\n\n\n    # metrics_path defaults to '\/metrics'\n    # scheme defaults to 'http'.\n    <mark style=\"color:#ed0303\" class=\"has-inline-color\">basic_auth:\n      username: prometheus\n      password: nhlrs@202419<\/mark>\n\n\n\n\n    static_configs:\n      <mark style=\"color:#0e31f8\" class=\"has-inline-color\">- targets: &#091;\"192.168.126.128:9090\",\"192.168.126.128:9100\"]<\/mark><\/code><\/pre>\n\n\n\n<p>4\u3001\u670d\u52a1\u542f\u52a8\u548c\u5f00\u673a\u81ea\u52a8\u542f\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;\/usr\/lib\/systemd\/system\/grafana.service\n&#091;Unit]\nDescription=grafana\nAfter=network.target\n&#091;Service]\nWorkingDirectory=\/opt\/gnp\/grafana\nExecStart=\/opt\/gnp\/grafana\/bin\/grafana-server\n&#091;Install]\nWantedBy=multi-user.target\n\n\ncat &gt;\/usr\/lib\/systemd\/system\/prometheus.service\n&#091;Unit]\nDescription=prometheus\nAfter=network.target\n&#091;Service]\nUser=prometheus\nGroup=prometheus\nWorkingDirectory=\/opt\/gnp\/prometheus\nExecStart=\/opt\/gnp\/prometheus\/prometheus <mark style=\"color:#f00303\" class=\"has-inline-color\">--web.enable-lifecycle #\u652f\u6301\u70ed\u91cd\u542f curl -X POST localhost:9090\/-\/reload<\/mark>\n&#091;Install]\nWantedBy=multi-user.target\n\n\ncat &gt;\/usr\/lib\/systemd\/system\/node_exporter.service\n&#091;Unit]\nDescription=node_exporter\nAfter=network.target\n&#091;Service]\nType=simple\nUser=root\nExecStart=\/opt\/gnp\/node_exporter\/node_exporter <mark style=\"color:#f006e5\" class=\"has-inline-color\">--web.config.file=\/opt\/gnp\/node_exporter\/config.yml<\/mark>\nRestart=on-failure\n&#091;Install]\nWantedBy=multi-user.target\n\n\nsystemctl daemon-reload\n\n\n<mark style=\"color:#27f313\" class=\"has-inline-color\">for i in grafana prometheus node_exporter;do systemctl enable --now $i;done<\/mark><\/code><\/pre>\n\n\n\n<p>5\u3001web\u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grafana:\nhttp:\/\/192.168.126.128:3000 \u9ed8\u8ba4\u7528\u6237\u540d\/\u5bc6\u7801\uff1aadmin\/admin\n\u65b0\u589e\u6570\u636e\u6e90\u662fhttp:\/\/localhost:9090\ndashboard import\u5bfc\u5165\u79bb\u7ebf\u6a21\u677f\n\n\nprometheus\uff1a\nhttp:&#047;&#047;192.168.126.128:9090\/targets?search=\n\n\nnode_exporter:\nhttp:\/\/192.168.126.128:9100\/metrics<\/code><\/pre>\n\n\n\n<p>6\u3001\u544a\u8b66<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>prometheus.yml\u914d\u7f6e\uff1a\n# my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n\n\n\n<mark style=\"color:#f30808\" class=\"has-inline-color\"># Alertmanager configuration\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n           - 10.46.143.50:9093<\/mark>\n\n\n\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\n<mark style=\"color:#f10a0a\" class=\"has-inline-color\">rule_files:\n  - \"rules\/*_rules.yml\"\n  - \"rules\/*_alerts.yml\"<\/mark>\n\n\n\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.\n  - job_name: \"prometheus\"\n\n\n\n\n    # metrics_path defaults to '\/metrics'\n    # scheme defaults to 'http'.\n    basic_auth:\n      username: prometheus\n      password: nhlrs@202419\n    static_configs:\n      - targets: &#091;\"10.46.143.50:9090\", \"10.46.143.49:9100\", \"10.46.143.50:9100\", \"10.46.143.51:9100\", \"10.46.143.52:9100\", \"10.46.143.53:9100\", \"10.46.143.65:9100\", \"10.46.143.66:9100\", \"10.46.143.164:9100\", \"10.46.143.165:9100\", \"10.46.143.166:9100\", \"10.46.143.171:9100\", \"10.46.143.172:9100\"]\n<mark style=\"color:#ed0303\" class=\"has-inline-color\">  - job_name: 'alertmanager'\n    static_configs:\n      - targets: &#091;'10.46.143.50:9093']<\/mark>\nrules\/node_alerts.yml\u7684\u914d\u7f6e\uff1a\n<mark style=\"color:#f70505\" class=\"has-inline-color\">groups:\n- name: \u4e3b\u673a\u72b6\u6001-\u76d1\u63a7\u544a\u8b66\n  rules:\n  - alert: \u4e3b\u673a\u72b6\u6001\n    expr: up {job=\"kubernetes-nodes\"} == 0\n    for: 15s\n    labels:\n      status: \u975e\u5e38\u4e25\u91cd\n    annotations:\n      summary: \"{{.instance}}:\u670d\u52a1\u5668\u5b95\u673a\"\n      description: \"{{.instance}}:\u670d\u52a1\u5668\u5ef6\u65f6\u8d85\u8fc715s\"\n\n\n\n\n  - alert: CPU\u4f7f\u7528\u60c5\u51b5\n    expr: 100-(avg(irate(node_cpu_seconds_total{mode=\"idle\"}&#091;5m])) by(instance)* 100) &gt; 60\n    for: 1m\n    labels:\n      status: warning\n    annotations:\n      summary: \"{{$labels.instance}}: High CPU Usage Detected\"\n      description: \"{{$labels.instance}}: CPU usage is {{$value}}, above 60%\"\n\n\n\n\n  - alert: NodeFilesystemUsage\n    expr: 100 - (node_filesystem_free_bytes{fstype=~\"ext4|xfs\"} \/ node_filesystem_size_bytes{fstype=~\"ext4|xfs\"} * 100) &gt; 80\n    for: 1m\n    labels:\n      severity: warning\n    annotations:\n      summary: \"Instance {{ $labels.instance }} : {{ $labels.mountpoint }} \u5206\u533a\u4f7f\u7528\u7387\u8fc7\u9ad8\"\n      description: \"{{ $labels.instance }}: {{ $labels.mountpoint }} \u5206\u533a\u4f7f\u7528\u5927\u4e8e80% (\u5f53\u524d\u503c: {{ $value }})\"\n\n\n\n\n  - alert: \u5185\u5b58\u4f7f\u7528\n    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) \/ node_memory_MemTotal_bytes * 100 &gt; 80\n    for: 1m\n    labels:\n      status: \u4e25\u91cd\u544a\u8b66\n    annotations:\n      summary: \"{{ $labels.instance}} \u5185\u5b58\u4f7f\u7528\u7387\u8fc7\u9ad8\uff01\"\n      description: \"{{ $labels.instance }} \u5185\u5b58\u4f7f\u7528\u5927\u4e8e80%(\u76ee\u524d\u4f7f\u7528:{{ $value}}%)\"\n\n\n\n\n\n\n\n\n  - alert: IO\u6027\u80fd\n    expr: (avg(irate(node_disk_io_time_seconds_total&#091;1m])) by(instance)* 100) &gt; 60\n    for: 1m\n    labels:\n      status: \u4e25\u91cd\u544a\u8b66\n    annotations:\n      summary: \"{{$labels.instance}} \u6d41\u5165\u78c1\u76d8IO\u4f7f\u7528\u7387\u8fc7\u9ad8\uff01\"\n      description: \"{{ $labels.instance }} \u6d41\u5165\u78c1\u76d8IO\u5927\u4e8e60%(\u76ee\u524d\u4f7f\u7528:{{ $value }})\"\n\n\n\n\n\n\n\n\n  - alert: \u7f51\u7edc\n    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}&#091;5m])) by (instance)) \/ 100) &gt; 102400\n    for: 1m\n    labels:\n      status: \u4e25\u91cd\u544a\u8b66\n    annotations:\n      summary: \"{{ $labels.instance}} \u6d41\u5165\u7f51\u7edc\u5e26\u5bbd\u8fc7\u9ad8\uff01\"\n      description: \"{{ $labels.instance }}\u6d41\u5165\u7f51\u7edc\u5e26\u5bbd\u6301\u7eed2\u5206\u949f\u9ad8\u4e8e100M. RX\u5e26\u5bbd\u4f7f\u7528\u7387{{ $value }}\"\n  - alert: TCP\u4f1a\u8bdd\n    expr: node_netstat_Tcp_CurrEstab &gt; 1000\n    for: 1m\n    labels:\n      status: \u4e25\u91cd\u544a\u8b66\n    annotations:\n      summary: \"{{ $labels.instance }} TCP_ESTABLISHED\u8fc7\u9ad8\uff01\"\n      description: \"{{ $labels.instance }} TCP_ESTABLISHED\u5927\u4e8e1000%(\u76ee\u524d\u4f7f\u7528:{{ $value }}%)\"<\/mark>\n<mark style=\"color:#0a14ec\" class=\"has-inline-color\">curl -X POST localhost:9090\/-\/reload #\u70ed\u751f\u6548\u914d\u7f6e<\/mark>\nalertmanager.yml\u914d\u7f6e\uff1a\nglobal:\n  resolve_timeout: 1m   # \u6bcf1\u5206\u949f\u68c0\u6d4b\u4e00\u6b21\u662f\u5426\u6062\u590d\n  <mark style=\"color:#f10ddf\" class=\"has-inline-color\">wechat_api_url: 'https:\/\/qyapi.weixin.qq.com\/cgi-bin\/'\n  wechat_api_corp_id: ''      # \u4f01\u4e1a\u5fae\u4fe1\u4e2d\u4f01\u4e1aID\n  wechat_api_secret: ''<\/mark>\n\n\n\n\ntemplates:\n  - '\/opt\/gnp\/alertmanager\/template\/*.tmpl'\nroute:\n  receiver: 'wechat'\n  group_by: &#091;'env','instance','type','group','job','alertname']\n  group_wait: 10s\n  group_interval: 5s\n  repeat_interval: 1h\n\n\n\n\nreceivers:\n- name: 'wechat'\n  wechat_configs:\n  - send_resolved: true\n    message: '{{ template \"wechat.default.message\" . }}'\n    to_party: '1'\n    agent_id: ''   #\u4f01\u5fae\u540e\u53f0\u67e5\u8be2\u7684agentid\n    to_user : \"@all\"\n    api_secret: ''  #\u540e\u53f0\u67e5\u8be2\u7684secret\n\n\ntemplate\/wechat.tmpl\u7684\u914d\u7f6e\uff1a\n\n\n{{ define \"wechat.default.message\" }}\n{{- if gt (len .Alerts.Firing) 0 -}}\n{{- range $index, $alert := .Alerts -}}\n{{- if eq $index 0 }}\n=========\u4e91\u73af\u5883\u76d1\u63a7\u62a5\u8b66 =========\n\u544a\u8b66\u72b6\u6001\uff1a{{   .Status }}\n\u544a\u8b66\u7ea7\u522b\uff1a{{ .Labels.severity }}\n\u544a\u8b66\u7c7b\u578b\uff1a{{ $alert.Labels.alertname }}\n\u6545\u969c\u4e3b\u673a: {{ $alert.Labels.instance }} {{ $alert.Labels.pod }}\n\u544a\u8b66\u4e3b\u9898: {{ $alert.Annotations.summary }}\n\u544a\u8b66\u8be6\u60c5: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};\n\u89e6\u53d1\u9600\u503c\uff1a{{ .Annotations.value }}\n\u6545\u969c\u65f6\u95f4: {{ ($alert.StartsAt.Add 28800e9).Format \"2006-01-02 15:04:05\" }}\n========= = end =  =========\n{{- end }}\n{{- end }}\n{{- end }}\n{{- if gt (len .Alerts.Resolved) 0 -}}\n{{- range $index, $alert := .Alerts -}}\n{{- if eq $index 0 }}\n=========\u4e91\u73af\u5883\u5f02\u5e38\u6062\u590d =========\n\u544a\u8b66\u7c7b\u578b\uff1a{{ .Labels.alertname }}\n\u544a\u8b66\u72b6\u6001\uff1a{{   .Status }}\n\u544a\u8b66\u4e3b\u9898: {{ $alert.Annotations.summary }}\n\u544a\u8b66\u8be6\u60c5: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};\n\u6545\u969c\u65f6\u95f4: {{ ($alert.StartsAt.Add 28800e9).Format \"2006-01-02 15:04:05\" }}\n\u6062\u590d\u65f6\u95f4: {{ ($alert.EndsAt.Add 28800e9).Format \"2006-01-02 15:04:05\" }}\n{{- if gt (len $alert.Labels.instance) 0 }}\n\u5b9e\u4f8b\u4fe1\u606f: {{ $alert.Labels.instance }}\n{{- end }}\n========= = end =  =========\n{{- end }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n\n\u6ce8\u518calertmanager\u4e3a\u7cfb\u7edf\u670d\u52a1\ncat \/lib\/systemd\/system\/alertmanager.service\n&#091;Unit]\nDescription=prometheus\nAfter=network.target\n&#091;Service]\nUser=prometheus\nGroup=prometheus\nWorkingDirectory=\/opt\/gnp\/alertmanager\nExecStart=\/opt\/gnp\/alertmanager\/alertmanager\n&#091;Install]\nWantedBy=multi-user.target\n\n\n\u542f\u52a8\u548c\u5f00\u673a\u81ea\u542f\u52a8\uff1asystemctl daemon-reload &amp;&amp; systemctl enable --now alertmanager\n\n\n\u70ed\u751f\u6548\u914d\u7f6e\uff1acurl -X POST localhost:9093\/-\/reload<\/code><\/pre>\n\n\n\n<p>7\u3001\u5b89\u88c5cadvisor\uff0c\u76d1\u63a7docker\u5bb9\u5668<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/opt\/gnp\nif &#091; -d \"\/opt\/gnp\/cadvisor\" ];then\n\/bin\/rm -rf \/opt\/gnp\/cadvisor\nfi\nmkdir -p \/opt\/gnp\/cadvisor\nmv \/root\/cadvisor-v0.47.2-linux-amd64 \/opt\/gnp\/cadvisor\/cadvisor\ndocker_root=$(docker info |egrep \"Docker Root Dir: \" |awk -F': ' '{print $2}')\ncat &gt;\/usr\/lib\/systemd\/system\/cadvisor.service &lt;&lt;EOF\n&#091;Unit]\nDescription=cadvisor\nAfter=network.target\n&#091;Service]\nWorkingDirectory=\/opt\/gnp\/cadvisor\nExecStart=\/opt\/gnp\/cadvisor\/cadvisor -port 28080 -docker_root ${docker_root:-'\/var\/lib\/docker'}\n&#091;Install]\nWantedBy=multi-user.target\nEOF\nchmod a+x \/opt\/gnp\/cadvisor\/cadvisor\nsystemctl daemon-reload\nsystemctl restart cadvisor\nsystemctl enable cadvisor\niptables -I INPUT -p tcp --dport 28080 -j ACCEPT\n\n\nprometheus.yml\uff1a\n\n\n# my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n\n\n\n# Alertmanager configuration\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n           - 10.46.143.50:9093\n\n\n\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\nrule_files:\n  - \"rules\/*_rules.yml\"\n  - \"rules\/*_alerts.yml\"\n\n\n\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.\n  - job_name: \"prometheus\"\n\n\n\n\n    # metrics_path defaults to '\/metrics'\n    # scheme defaults to 'http'.\n    basic_auth:\n      username: prometheus\n      password: nhlrs@202419\n    static_configs:\n      - targets: &#091;\"10.46.143.50:9090\", \"10.46.143.49:9100\", \"10.46.143.50:9100\", \"10.46.143.51:9100\", \"10.46.143.52:9100\", \"10.46.143.53:9100\", \"10.46.143.65:9100\", \"10.46.143.66:9100\", \"10.46.143.164:9100\", \"10.46.143.165:9100\", \"10.46.143.166:9100\", \"10.46.143.171:9100\", \"10.46.143.172:9100\", \"10.46.143.49:28080\", \"10.46.143.50:28080\", \"10.46.143.51:28080\", \"10.46.143.52:28080\", \"10.46.143.53:28080\", \"10.46.143.65:28080\", \"10.46.143.66:28080\", \"10.46.143.164:28080\", \"10.46.143.165:28080\", \"10.46.143.166:28080\", \"10.46.143.171:28080\", \"10.46.143.172:28080\"]\n  - job_name: 'alertmanager'\n    static_configs:\n      - targets: &#091;'10.46.143.50:9093']\n\n\nrules\/docker_alerts.yml:\ngroups:\n- name: container.rules\n  rules:\n\n\n\n\n  - alert: Container_cpu_usage\n    expr: (sum by(name)(rate(container_cpu_usage_seconds_total{image!=\"\"}&#091;5m]))*100) &gt; 75\n    for: 5m\n    labels:\n      severity: critical\n    annotations:\n      description: \u5bb9\u5668 {{ $labels.name }} CPU \u8d44\u6e90\u5229\u7528\u7387\u5927\u4e8e 75% , (current value is {{ $value }})\n      summary: Dev CPU \u8d1f\u8f7d\u544a\u8b66\n\n\n\n\n  - alert: Container_memory_usage\n    expr: sort_desc(avg by(name)(irate(container_memory_usage_bytes{name!=\"\"}&#091;5m]))*100) &gt; 1024*10^3*4\n    for: 10m\n    labels:\n      severity: critical\n    annotations:\n      description: \u5bb9\u5668 {{ $labels.name }} Memory \u8d44\u6e90\u5229\u7528\u7387\u5927\u4e8e 4G , (current value is {{ $value }})\n      summary: Dev Memory \u8d1f\u8f7d\u544a\u8b66\n\n\n\n\n  - alert: Container_network_receive_usage\n    expr: sum by (name)(irate(container_network_receive_bytes_total{image!=\"\"}&#091;1m])) &gt; 1024*1024*50\n    for: 10m\n    labels:\n      severity: critical\n    annotations:\n      description: \u5bb9\u5668 {{ $labels.name }} network_receive \u8d44\u6e90\u5229\u7528\u7387\u5927\u4e8e 50M , (current value is {{ $value }})\n      summary: network_receive \u8d1f\u8f7d\u544a\u8b66\n\n\ngrafana\u5bfc\u5165dashboard\u6a21\u677f\uff1a\n11600_rev1.json\n\n\n.\/promtool check config .\/prometheus.yml\nChecking .\/prometheus.yml\n  SUCCESS: 2 rule files found\nSUCCESS: .\/prometheus.yml is valid prometheus config file syntax\n\n\n\n\nChecking rules\/docker_alerts.yml\n  SUCCESS: 3 rules found\n\n\n\n\nChecking rules\/node_alerts.yml\n  SUCCESS: 7 rules found\n\n\ncurl -X POST localhost:9090\/-\/reload<\/code><\/pre>\n\n\n\n<p>8\u3001\u5b89\u88c5blackbox_exporter\u76d1\u63a7\u7f51\u7ad9<\/p>\n\n\n\n<p>\u4e0b\u8f7d\uff1a<a href=\"https:\/\/github.com\/prometheus\/blackbox_exporter\">https:\/\/github.com\/prometheus\/blackbox_exporter<\/a><\/p>\n\n\n\n<p>\u6ce8\u518c\u670d\u52a1\uff1a<\/p>\n\n\n\n<p>\/lib\/systemd\/system\/blackbox.service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;Unit]\nDescription=blackbox_exporter\nAfter=network.target\n&#091;Service]\nUser=root\nType=simple\nExecStart=\/opt\/gnp\/blackbox_exporter\/blackbox_exporter --config.file=\/opt\/gnp\/blackbox_exporter\/blackbox.yml\nRestart=on-failure\n&#091;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f\u52a8\u5e76\u542f\u52a8\u670d\u52a1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now blackbox<\/code><\/pre>\n\n\n\n<p>prometheus\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n\n\n\n\n\n\n\n# Alertmanager configuration\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n          # - alertmanager:9093\n\n\n\n\n\n\n\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\nrule_files:\n  # - \"first_rules.yml\"\n  # - \"second_rules.yml\"\n\n\n\n\n\n\n\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.\n  - job_name: \"prometheus\"\n\n\n\n\n\n\n\n\n    # metrics_path defaults to '\/metrics'\n    # scheme defaults to 'http'.\n    basic_auth:\n      username: prometheus\n      password: nhlrs@202419\n\n\n\n\n\n\n\n\n    static_configs:\n      - targets: &#091;\"127.0.0.1:9092\",\"127.0.0.1:9102\",\"127.0.0.1:28080\"]\n  - job_name: 'http\u54cd\u5e94\u72b6\u6001\u7801\u76d1\u63a7'\n    metrics_path: \/probe\n    params:\n      module: &#091;http_2xx]\n    static_configs:\n      - targets:\n        - https:\/\/example.com\n        - https:\/\/example1.com\n        labels:\n          group: 'web'\n    relabel_configs:\n      - source_labels: &#091;__address__]\n        target_label: __param_target\n      - source_labels: &#091;__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: 127.0.0.1:9115<\/code><\/pre>\n\n\n\n<p>\u91cd\u542fprometheus\u670d\u52a1\uff0c\u67e5\u770btargets<\/p>\n\n\n\n<p>grafana\u5bfc\u51659965\u53f7\u6a21\u677f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1\u3001&nbsp;\u65b0\u5efa\u9879\u76ee\u6587\u4ef6\u5939\uff0c\u4e0a\u4f20\u5b89\u88c5\u5305\uff0c\u89e3\u538b\u5b89\u88c5\u5305, \u65b0\u5efaprometheus\u8d26\u53f7 2\u3001\u4e3anode_exporter\u8bbe\u7f6e\u5b89\u5168\u8d26\u53f7,\u542f\u52a8\u914d\u7f6e 3\u3001prometheus\u7684\u914d\u7f6e,\u7ea2\u84dd\u5b57\u4f53\u90e8\u5206\u9700\u8981\u6839\u636e\u60c5\u51b5\u5b9a\u4e49 4\u3001\u670d\u52a1\u542f\u52a8\u548c\u5f00\u673a\u81ea\u52a8\u542f\u52a8 5\u3001web\u914d\u7f6e 6\u3001\u544a\u8b66 7\u3001\u5b89\u88c5cadvisor\uff0c\u76d1\u63a7docker\u5bb9\u5668 8\u3001\u5b89\u88c5blackbox_exporter\u76d1\u63a7\u7f51\u7ad9 \u4e0b\u8f7d\uff1ahttps:\/\/github.com\/prometheus\/blackbox_exporter \u6ce8\u518c\u670d\u52a1\uff1a \/lib\/systemd\/system\/blackbox.service: \u8bbe\u7f6e\u5f00\u673a\u81ea\u542f\u52a8\u5e76\u542f\u52a8\u670d\u52a1\uff1a prometheus\u914d\u7f6e\u6587\u4ef6\uff1a \u91cd\u542fprometheus\u670d\u52a1\uff0c\u67e5\u770btargets grafana\u5bfc\u51659965\u53f7\u6a21\u677f\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-267","post","type-post","status-publish","format-standard","hentry","category-dockerkubernetes"],"_links":{"self":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":5,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions\/637"}],"wp:attachment":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}