草庐IT

Prometheus配置监控ip、端口连通,get、post接口连通和状态码

吕楚王 2023-11-29 原文

Prometheus配置监控ip、端口连通,get、post接口连通和状态码

##方法:blackbox_exporter 部署在一台主机上集中配置

第一部分
1.1下载blackbox_exporter安装包
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.19.0/blackbox_exporter-0.19.0.linux-amd64.tar.gz

tar xf blackbox_exporter-0.19.0.linux-amd64.tar.gz
cd blackbox_exporter-0.19.0.linux-amd64/

1.2,启动配置
cat > /usr/lib/systemd/system/blackbox_exporter.service << EOF

[Unit]
Description=blackbox_exporter
After=network.target

[Service]
User=root
Type=simple
ExecStart=/apps/mon/blackbox_exporter-0.19.0.linux-amd64/blackbox_exporter --config.file=/apps/mon/blackbox_exporter-0.19.0.linux-amd64/blackbox.yml
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

1.3 加载,启动
systemctl daemon-reload
systemctl start blackbox_exporter.service
systemctl enable blackbox_exporter.service
systemctl status blackbox_exporter.service

1.4 blackbox_exporter配置文件
blackbox.yml
位置:/…/blackbox_exporter/blackbox.yml(取决于blackbox_exporter的安装位置)

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
grpc:
prober: grpc
grpc:
tls: true
preferred_ip_protocol: “ip4”
grpc_plain:
prober: grpc
grpc:
tls: false
service: “service1”
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

上面是自带的,下面是自定义的

http_post_2xx_with_prometheus_post_check_token:
prober: http
http:
method: POST
headers:
Content-Type: application/json #添加头部
body: ‘{“token”:“prometheus_post_check_token”}’ #发送的相关数据

第二部分
prometheus配置
prometheus.yml
位置:/etc/prometheus/prometheus.yml

全局配置

global:

默认拉取频率

scrape_interval: 15s

拉取超时时间

scrape_timeout: 10s

评估规则频率

evaluation_interval: 15s

规则文件配置

rule_files: [‘/etc/prometheus/rules/*.yml’]

告警配置

alerting:
alertmanagers:

  • follow_redirects: true
    scheme: http
    timeout: 10s
    api_version: v2
    static_configs:
    • targets: []

拉取配置,添加监控项

scrape_configs:

监控prometheus

  • job_name: prometheus
    metrics_path: /metrics
    static_configs:
    • targets:
      • localhost:9090

监控ip是否能ping通,docker启动的blackbox-exporter不建议用此监控,可能会有报错

  • job_name: icmp_ping
    metrics_path: /probe
    params:
    module: [icmp]
    file_sd_configs:
    • files: [‘/apps/mon/prometheus-2.30.0.linux-amd64/dis/icmp_ping.yml’]
      refresh_interval: 10s
      relabel_configs:
    • source_labels: [address]
      regex: (.*)(:80)?
      target_label: __param_target
      replacement: ${1}
    • source_labels: [__param_target]
      target_label: instance
    • source_labels: [__param_target]
      regex: (.*)
      target_label: ping
      replacement: ${1}
    • source_labels: []
      regex: .*
      target_label: address
      replacement: localhost:9115

#icmp_ping.yml
位置:/etc/prometheus/conf.d/icmp_ping/icmp_ping.yml

  • targets: [‘192.168.7.254’, ‘192.168.10.200’]
    labels:
    group: ‘ping监控’

监控端口是否能连通

  • job_name: tcp_port
    metrics_path: /probe
    params:
    module: [tcp_connect]
    file_sd_configs:
    • files: [‘/apps/mon/prometheus-2.30.0.linux-amd64/dis/tcp_port.yml’]
      refresh_interval: 10s
      relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: localhost:9115

#tcp_port.yml
位置:/etc/prometheus/conf.d/tcp_port/tcp_port.yml

  • targets: [‘10.120.150.12:80’, ‘10.120.150.13:80’]
    labels:
    group: ‘Nginx-端口监控’

监控get请求

  • job_name: http_get
    metrics_path: /probe
    params:
    module: [http_2xx]
    file_sd_configs:
    • files: [‘/etc/prometheus/conf.d/http_get/*.yml’]
      refresh_interval: 10s
      relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: 192.168.7.254:9115

#http_get.yml
位置:/etc/prometheus/conf.d/http_get/http_get.yml

  • targets:

    • http://192.168.7.254:8082/api/heartbeat/check/
      labels:
      name: ‘get测试’
  • targets:

    • http://192.168.7.254:8083/api/heartbeat/check_test/
      labels:
      name: ‘get测试2’

监控post请求

  • job_name: http_post
    metrics_path: /probe
    params:
    module: [http_post_2xx]
    file_sd_configs:
    • files: [‘/etc/prometheus/conf.d/http_post/*.yml’]
      refresh_interval: 10s
      relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: 192.168.7.254:9115

#监控post请求

  • job_name: http_post_with_token
    metrics_path: /probe
    params:
    module: [http_post_2xx_with_prometheus_post_check_token]
    file_sd_configs:
    • files: [‘/etc/prometheus/conf.d/http_post_with_token/*.yml’]
      refresh_interval: 10s
      relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: 192.168.7.254:9115

#http_post.yml
位置:/etc/prometheus/conf.d/http_post/http_post.yml

  • targets:
    • http://192.168.7.254:8082/api/heartbeat/post_check/
      labels:
      name: ‘post测试’

#http_post_with_token.yml
位置:/etc/prometheus/conf.d/http_post_with_token/http_post_with_token.yml

  • targets:
    • http://192.168.7.254:8082/api/heartbeat/post_check/
      labels:
      name: ‘post带body测试’

#规则
rules.yml
位置:/etc/prometheus/rules/rules.yml

groups:

  • name: probe_http_status_code
    rules:
    • alert: probe_http_status_code
      expr: probe_http_status_code != 200
      for: 1m
      labels:
      severity: critical
      annotations:
      summary: “{{ $labels.instance }} 状态码异常”
      description: “请尽快检测”
      groups:
  • name: probe_success
    rules:
    • alert: probe_success
      expr: probe_success == 0
      for: 1m
      labels:
      severity: critical
      annotations:
      summary: “接口/主机/端口 {{ $labels.instance }} 无法联通”
      description: “请尽快检测”

#模板ID 9965号模板,数据源选择Prometheus 模板下载地址
https://grafana.com/grafana/dashboards/9965

有关Prometheus配置监控ip、端口连通,get、post接口连通和状态码的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  4. ruby-on-rails - rails : How to make a form post to another controller action - 2

    我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak

  5. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  6. ruby-on-rails - 跳过状态机方法的所有验证 - 2

    当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  9. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  10. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

随机推荐