目录

一、简介

二、安装 Node-exporter

三、安装 Prometheus

四、安装 Cadvisor-exporter

五、安装 Grafana

六、安装 Alertmanager

七、安装 Blackbox-exporter

八、告警效果


一、简介

软件名称简介访问地址
Node-exporter

node-exporter采用go语言开发,专门用来收集Linux系统中硬件、系统指标。

http://192.168.220.76:9100/metrics
PrometheusPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。

http://192.168.220.76:9090/graph

Cadvisor-exporter搜集容器信息。http://192.168.220.76:8080/containers
GrafanaGrafana是用于可视化大型测量数据的开源程序。http://192.168.220.76:3000
Alertmanager

Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

http://192.168.220.76:9093/#/alerts
Blackbox_exporterblackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集。http://192.168.220.76:9115/prod

图源官方

二、安装 Node-exporter

 1、启动 node-exporter

docker run -d -p 9100:9100 --name node-exporter\
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  prom/node-exporter

2、访问: http://192.168.220.76:9100/metrics 

三、安装 Prometheus

1、新建目录prometheus,编辑配置文件prometheus.yml

mkdir /home/prometheus/conf
cd /home/prometheus/conf
vim prometheus.yml

global:
  scrape_interval:     15s 
  evaluation_interval: 15s 
alerting:       #指定alertmanager报警组件地址
  alertmanagers:
  - static_configs:
    - targets: [ '192.168.220.76:9093']

rule_files:  #指定报警规则文件
  - "rules.yml"

scrape_configs:
  - job_name: 'nodehost'   
    static_configs:
      - targets: ['192.168.220.76:9100','192.168.220.76:8080']
        labels:
          appname: 'Node1'
  - job_name: 'prometheus'
    static_configs:
      - targets: [ '192.168.220.76:9090']
        labels:
          appname: 'prometheus'
  - job_name: 'prometheus_port_status'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    static_configs:
      - targets: ['192.168.220.76:12345']
        labels:
          instance: 'port_status'
          group: 'tcp'
    relabel_configs:  #此处为blackbox-exporter配置
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.220.76:9115

2、创建rules.yml文件

mkdir /home/prometheus/conf
cd /home/prometheus/conf
vim rules.yml

groups:
- name: example #定义规则组
  rules:
  - alert: InstanceDown  #定义报警名称
    expr: probe_success == 0   #Promql语句,触发规则
    for: 30s           
    labels:       #标签定义报警的级别和主机
      name: instance
      severity: Critical
    annotations: 
      summary: " {{ $labels.appname }}" #报警摘要,取报警信息的appname名称
      description: " 服务停止运行 "   #报警信息
      value: "{{ $value }}%"  # 当前报警状态值

3、创建prometheus容器

docker run -d -p 9090:9090 --name=prometheus \
 -v  /home/prometheus/conf/:/etc/prometheus/  \
prom/prometheus 

4、访问 http://192.168.220.76:9090/graph

5、访问 http://192.168.220.76:9090/targets

四、安装 Cadvisor-exporter

1、启动 Cadvisor-exporter容器

docker run --volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 --detach=true --name=cadvisor \
--net=host google/cadvisor:latest

2、访问 http://192.168.220.76:8080/containers/

五、安装 Grafana

1、创建文件夹grafana-storage,并设置权限

mkdir /home/grafana-storage
chmod 777 -R /home/grafana-storage

2、创建 grafana容器

docker run -d --name grafana\
  -p 3000:3000 \
  -v /home/grafana-storage:/var/lib/grafana \
  grafana/grafana

3、访问 http://192.168.220.76:3000/  用户名和密码默认都为admin

4、设置数据源

5、搜索模板 https://grafana.com/grafana/dashboards

添加模板ID并导入模板json文件, 实现模板展示

六、安装 Alertmanager

1、创建 alertmanager.yml

vim /home/prometheus/conf/alertmanager.yml

global:
  resolve_timeout: 5m
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
templates:
- '/etc/alertmanager/template/wechat.tmpl'
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 5m
  receiver: 'wechat'
receivers:
- name: 'wechat'
  wechat_configs:
  - corp_id: <企业ID>    #此处为企业微信的企业ID
    to_party: '1'        #此处为企业微信的部门ID
    agent_id: '1000002'  #此处为企业微信应用的AgentId
    api_secret: <secret> #此处为企业微信应用的secret
    send_resolved: true

 2、编写微信通知模板 wechat.tmpl

vim /home/prometheus/template/wechat.tmpl

{{ define "wechat.default.message" }}
{{ range $i, $alert :=.Alerts }}
===alertmanager监控报警===
告警状态:{{   .Status }}
告警级别:{{ $alert.Labels.severity }}
告警类型:{{ $alert.Labels.alertname }}
告警应用:{{ $alert.Annotations.summary }}
故障主机: {{ $alert.Labels.instance }}
告警主题: {{ $alert.Annotations.summary }}
触发阀值:{{ $alert.Annotations.value }}
告警详情: {{ $alert.Annotations.description }}
触发时间: {{ $alert.StartsAt.Format "2021-01-02 15:04:05" }}
===========end============
{{ end }}
{{ end }}

3、启动

docker run -d -p 9093:9093 --name alertmanager  \
-v /home/prometheus/conf/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-v /home/prometheus/template:/etc/alertmanager/template \
docker.io/prom/alertmanager:latest

4、访问 http://192.168.220.76:9093/#/alerts

七、安装 Blackbox-exporter

 1、启动 blackbox-exporter

docker run --name blackbox -p 9115:9115 -itd prom/blackbox-exporter

2、说明

blackbox-exporter监测icmp、tcp、http、post情况;

probe_success 指标可以判断我们的 icmp、tcp、http、post 监测是否正常。值为 1 正常,0不正常。

3、访问 http://192.168.220.76:9115/prod

八、告警效果

1、企业微信接收告警效果如下图 

* 1、需在企业微信创建企业或者直接创建应用

* 2、注意文件存放位置, 已经容器内文件位置

* 3、注意替换上文中的IP地址

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐