使用Prometheus监控服务器端口

发布时间 2023-09-14 17:15:09作者: 木易-故事里的人

背景:

服务器自定义安装的服务在不查看或不使用时服务挂掉不能主动知道,导致使用时要重新排查

 

操作:

1,部署Prometheus

Prometheus服务已经安装完成,本文不做赘述

2,安装 blackbox exporter 黑盒监控终端

blackbox exporter 

Prometheus 下如何进行白盒监控,我们监控主机的资源用量、容器的运行状态、数据库中间件的运行数据、自动发现 Kubernetes 集群中的资源等等,这些都是支持业务和服务的基础设施,通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化。而从完整的监控逻辑的角度,除了大量的应用白盒监控以外,还应该添加适当的 HTTP 探针 等用于检测站点或者服务的可访问性,以及访问效率等。

黑盒监控相较于白盒监控最大的不同在于黑盒监控是以故障为导向当故障发生时,黑盒监控能快速发现故障,而白盒监控则侧重于主动发现或者预测潜在的问题。一个完善的监控目标是要能够从白盒的角度发现潜在问题,能够在黑盒的角度快速发现已经发生的问题。

Blackbox Exporter 是 Prometheus 社区提供的官方黑盒监控解决方案,其允许用户通过:HTTPSTCP 以及 同样首先需要在 Kubernetes 集群中运行 modules: http_2xx: #http模块监控http协议 http: follow_redirects: true preferred_ip_protocol: ip4 valid_http_versions: - HTTP/1.1 - HTTP/2.0 prober: http timeout: 5s tcp_connect: #tcp模块监控端口连通性 prober: tcp timeout: 10s

 

Kuberbetes 安装 blackbox exporter

Get Repository Info

#添加 prometheus chart 源并更新

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

 

helm repo update

Install Chart

#安装

helm install prometheus-blackbox-exporter prometheus-community/prometheus-blackbox-exporter -n monitoring

 

 

#此处安装chart时 名字可以自定义

Uninstall Chart

卸载

helm uninstall prometheus-blackbox-exporter n monitoring

 

 

#此处名称修改成上一步自定义的名称

 

安装完成后编辑配置文件

将以下配置添加到 prometheus-server.yaml 配置文件

 - job_name: 'port_status'  # 自定义任务名称
  metrics_path: /probe
  params:
    module: [tcp_connect]  #选择tcp模块
  static_configs:
    - targets:
      - 10.1.2.10:6379    #需要监控的服务器及端口,此处若资源过多可使用yaml文件统一配置
      - 10.1.2.2:10620
      - 10.1.2.3:10620
      - 10.1.2.4:10620
      - 10.1.2.7:16000
      - 10.1.2.8:16000
      - 10.1.2.11:8123
      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: prometheus-blackbox-exporter:9115 #blackbox-exporter的真是ip+port

 

添加后效果

 

编辑告警规则

groups:                       #定义组
- name: portStatus            ##组名
  rules:                      #定义告警规则
  - alert: probe_success      #规则名称
    expr: probe_success == 0  #告警表达式
    for: 1m                   #告警间隔
    labels:                   #定义标签
      severity: critical      #告警等级
    annotations:              #以下为注释(告警内容,可自定义编辑)
      summary: "{{ $labels.appname }}"
      description: "{{ $labels.env }} {{ $labels.hostname  }} 服务 {{ $labels.appname }} 端口 无法联通, 请尽快检测"
      value: "{{ $value }}"

 

添加后效果

 

编辑完配置文件重启生效

 

grafana:

若需要dashboard可在grafana导入

grafana dashboard模板 ID 9965

导入模板

 

 

 

至此端口监控完成