第1章 Consul_template自动注册prometheus

https://github.com/hashicorp/consul-template#templating-language

1.1 搭建blackbox_exporter

Blackbox_exporter 主动监测主机与服务状态

Prometheus 官方提供的 exporter 之一,可以提供 httpdnstcpicmp 的监控数据采集

官方github: https://github.com/prometheus/blackbox_exporter

使用docker镜像版的blackbox_exporter

监控项

HTTP 测试
定义 Request Header 信息
判断 Http status / Http Respones Header / Http Body 内容
TCP 测试
业务组件端口状态监听
应用层协议定义与监听
ICMP 测试
主机探活机制
POST 测试
接口联通性
SSL 证书过期时间
证书到期时间表达式
probe_ssl_earliest_cert_expiry{job="blackbox"} - time() < 86400 * 30

1.1.1 手动安装blackbox_exporter

下载安装包

wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.14.0/blackbox_exporter-0.14.0.linux-amd64.tar.gz

部署

tar zxvf blackbox_exporter-0.14.0.linux-amd64.tar.gz
cd blackbox_exporter-0.12.0.linux-amd64
ll
-rwxr-xr-x. 1 1000 1000 16074005 Feb 27  2018 blackbox_exporter
-rw-rw-r--. 1 1000 1000      932 Nov 21 16:05 blackbox.yml
-rw-rw-r--. 1 1000 1000    11357 Feb 27  2018 LICENSE
-rw-rw-r--. 1 1000 1000       94 Feb 27  2018 NOTICE
cp -r blackbox_exporter /usr/local/bin

启动

/usr/local/bin/blackbox_exporter   --config.file=/usr/local/prometheus/blackbox_exporter/blackbox_exporter-0.14.0.linux-amd64/blackbox.yml

启动后会启动9115端口

 

1.1.2 Docker方式部署(中间有坑缺文件)

git clone https://github.com/prometheus/blackbox_exporter.git
docker build -t blackbox_exporter .
docker run -d -p 9115:9115 --name blackbox_exporter -v `pwd`:/config blackbox_exporter --config.file=/config/blackbox.yml

 

1.1.3 概念介绍

配置文件为/etc/blackbox_exporter/blackbox.yml
blackbox_exporter通过配置文件和命令行标志(例如要加载什么配置文件,监听哪个端口以及日志记录格式和级别)进行配置。 
同时可以运行时动态的重新加载配置文件,当重新加载配置文件失败时,不影响在运行的配置 
重载方式:curl -XPOST http://127.0.0.1:9115/-/reload
blackbox_exporter 的超时时间由Prometheus配置中的scrape_timeout自动确定,略微减少以允许网络延迟.默认是10s

 

示例配置:

https://github.com/prometheus/blackbox_exporter/blob/master/example.yml

 

 

1.2 配置prometheus

 

1.2.1 Tcp端口检测配置

- job_name: 'black_box_tcp_port'
    scrape_interval: 5s
    metrics_path: /probe
    params:
      module: [tcp_connect]
    file_sd_configs:
      - files:
        - /home/work/software/Prometheus/config/tcp_port.json
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.111.x.xxx:30392
重载prometheus配置
curl -XPOST http://127.0.0.1:9090/-/reload

 

1.2.2 Ping ip 检测配置

- job_name: 'black_box_ping'
    scrape_interval: 10s
    metrics_path: /probe
    params:
      module: [icmp]
    file_sd_configs:
      - files:
        - /home/work/software/Prometheus/config/ping_ip_bj.json
        - /home/work/software/Prometheus/config/ping_ip_tj.json
        - /home/work/software/Prometheus/config/ping_ip_other.json
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.111.x.xxx:30392
 
重载prometheus配置
curl -XPOST http://127.0.0.1:9090/-/reload

 

1.3 部署consul_template

$ wget https://releases.hashicorp.com/consul-template/0.18.3/consul-template_0.18.3_linux_amd64.zip
$ unzip consul-template_0.18.3_linux_amd64.zip
$ mv consul-template /usr/local/bin/

其它系统版本可在这里下载:https://releases.hashicorp.com/consul-template/

编写配置模板

ping_ip_bj_template.json
[{{ range nodes}}
{
“targets”: [“{{ .Address }}”],
“labels”: {
“node_name”: “{{ .Node }}”
}
},
{{ end }}
{
“targets”: [“10.111.x.xxx”],
“labels”: {
“node_name”: “upweb01-bj-linkdoc”
}
}
]

 

 

编写consul-template配置

Mkdir -p /home/work/software/consul_template/ && cd /home/work/software/consul_template/
Consul{
Address = “172.23.x.xxx:8500”
}
 
Template{
Source = “/home/work/software/consul_template/tcp_port_template.json”
Destination= “/home/work/software/Prometheus/config/tcp_port.json”
Command=”/usr/bin/curl -X POST http://127.0.0.1:9090/-/reload”
}
Template{
Source = “/home/work/software/consul_template/ping_ip_tj_template.json”
Destination= “/home/work/software/Prometheus/config/ping_ip_tj.json”
Command=”/usr/bin/curl -X POST http://127.0.0.1:9090/-/reload”
}
 
 
 
 
Consul{
Address = “10.111.x.xxx:8500”
}
 
Template{
Source = “/home/work/software/consul_template/ ping_ip_bj_template.json”
Destination= “/home/work/software/Prometheus/config/ ping_ip_bj.json”
Command=”/usr/bin/curl -X POST http://127.0.0.1:9090/-/reload”
}

启动consul_template

nohup consul-template -config /home/work/software/consul_template/prometheus.ops &

 

此时consul_template会自动从consul服务中获取配置并更新到prometheus配置文件中重载prometheus