本章概述
- 监控tomcat
- 监控redis
- 监控mysql
- 监控haproxy
- 监控nginx
- blackbox_exporter监控URL
前言
基于第三方 exporter 实现对目的服务的监控
exporter功能:
(1)收集指标数据
(2)将收集的数据进行格式转换,转换为prometheus能够识别的为key/value格式的数据
(3)将转化后的数据暴露出去
7.1 监控tomcat
监控 tomcat 的活跃连接数、堆栈内存等信息:
活跃连接数:
# TYPE tomcat_connections_active_total gauge
tomcat_connections_active_total{name="http-nio-8080",} 2.0
堆栈内存信息:
# TYPE jvm_memory_bytes_used gauge
jvm_memory_bytes_used{area="heap",} 2.4451216E7
7.1.1 自定义tomcat镜像
1、准备镜像所需文件
(1)准备tomcat配置文件server.xml(server.xml可通过拉起tomcat容器获取)
vim server.xml #这里只贴出修改部分
<Host name="localhost" appBase="/data/tomcat/webapps" unpackWARs="false" autoDeploy="false">
(2)准备代码文件
mkdir -p ./app
echo “<h1>tomcat app1</h1>” > ./app/index.jsp
tar -zcvf myapp.tar.gz ./app/index.jsp
(3)准备jar包,可通过以下百度网盘链接下载
需要的包为:metrics.war、simpleclient-0.8.0.jar、simpleclient_common-0.8.0.jar、simpleclient_hotspot-0.8.0.jar、simpleclient_servlet-0.8.0.jar、tomcat_exporter_client-0.0.12.jar
下载链接:https://pan.baidu.com/s/1R4jGzxRV5Qs_HGHP2LGu_Q
提取码:9mxa
2、编辑Dockfile文件(基础镜像为官方tomcat镜像,加载server.xml,创建数据目录并加载代码文件到数据目录,加载jar包用于暴露tomcat中的指标数据,jar包要放在/usr/local/tomcat/lib/目录)
vim Dockerfile
FROM tomcat:8.5.73
LABEL maintainer="957464230@qq.com"
ADD server.xml /usr/local/tomcat/conf/server.xml
RUN mkdir /data/tomcat/webapps -p
ADD myapp /data/tomcat/webapps/myapp
ADD metrics.war /data/tomcat/webapps
ADD simpleclient-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_common-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_hotspot-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_servlet-0.8.0.jar /usr/local/tomcat/lib/
ADD tomcat_exporter_client-0.0.12.jar /usr/local/tomcat/lib/
EXPOSE 8080 8443 8009
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
3、编辑构建镜像脚本并运行脚本构建镜像
vim build-command.sh
#!/bin/bash
docker build -t harbor.magedu.local/magedu/tomcat-app1:v1 .
docker push harbor.magedu.local/magedu/tomcat-app1:v1
(1)为脚本添加可执行权限
chmod a+x *.sh #如果不添加可执行权限,构建镜像会提示权限不足
(2)运行脚本构建镜像
bash build-command.sh
7.1.2 通过自定义镜像构建容器进行验证
1、通过镜像手动拉起容器验证镜像是否可用
执行命令:
docker run -it -p 9080:8080 harbor.magedu.local/magedu/tomcat-app1:v1
2、浏览器访问 172.31.7.101:9080/myapp
3、访问 172.31.7.101:9080/metrics ,查看metrics数据
7.1.3 在k8s集群部署tomcat
1、部署tomcat
(1)编辑yaml文件
vim tomcat-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
namespace: default
spec:
selector:
matchLabels:
app: tomcat
replicas: 1 # tells deployment to run 2 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: tomcat
annotations: #配置注解,便于prometheus条件过滤
prometheus.io/scrape: 'grue' #值为true,可以通过该注解抓取service后端pod数据
spec:
containers:
- name: tomcat
image: harbor.magedu.local/magedu/tomcat-app1:v1
ports:
- containerPort: 8080
securityContext:
privileged: true
(2)部署tomcat
kubectl apply -f tomcat-deploy.yaml
(3)查看tomcat,地址为10.200.36.78
2、为tomcat创建service,暴露端口,便于集群外部的prometheus通过该端口抓取数据
(1)编辑yaml文件
vim tomcat-svc.yaml
kind: Service #service 类型
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
name: tomcat-service
spec:
selector:
app: tomcat
ports:
- nodePort: 31080
port: 80
protocol: TCP
targetPort: 8080
type: NodePort
(2)创建service
kubectl apply -f tomcat-svc.yaml
(3)查看service,地址为10.100.208.104
注意:使用service暴露tomcat数据的方式存在问题:
如果tomcat存在多副本,prometheus通过service暴露的端口获取数据,获取到的数据可能是多个不同pod的数据,而不是同一个pod的数据(这是因为service会把请求后端容器的数据调度到不同的tomcat上)。
因此,prometheus最好部署在k8s集群内部,可以通过pod发现来抓取不同pod的数据,抓取到的数据比较准确
7.1.4 prometheus采集数据并验证
1、在k8s集群外部主机节点172.31.7.201上修改prometheus配置文件
(1)修改配置
vim /apps/prometheus/prometheus.yml
- job_name: "prometheus-tomcat-metrics"
static_configs:
- targets: ["172.31.7.111:31080"]
(2)查看监控页面:172.31.7.201:9090
(3)由于prometheus的service开启注解(annotations),可以通过k8s集群内部的prometheus对service后端的pod进行数据抓取
查看k8s集群内部部署的prometheus监控页面:172.31.7.113:39090
可以看到ip地址为10.200.36.78的容器已经被监控
7.1.5 grafana查看数据
1、获取监控模板:
可以使用以下github上的tomcat监控模板,也可以从grafana官网获取监控tomcat的模板
https://github.com/nlighten/tomcat_exporter/blob/master/dashboard/example.json
json文件下载完成后,导入grafana或者复制全部文件内容,粘贴到grafana中
2、查看监控数据:
7.2 监控redis
通过 redis_exporter 监控 redis 服务状态。
github链接:https://github.com/oliver006/redis_exporter
如果redis运行在虚拟机上,redis_exporter需要和redis运行在同一个虚拟机中;如果redis运行在k8s集群内,redis_exporter需要和redis运行在同一个pod中
7.2.1 部署redis
1、部署redis
(1)编辑yaml文件
vim redis-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: studylinux-net
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis #指定refis容器
image: redis:4.0.14
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
- name: redis-exporter #指定redis_exporter容器
image: oliver006/redis_exporter:latest
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 9121
(2)创建namespace
kubectl create ns studylinux-net
(3)部署redis
kubectl apply -f redis-deployment.yaml
2、为redis创建service,暴露端口,专门用于k8s集群外部的prometheus获取监控数据
vim redis-exporter-svc.yaml
kind: Service #service 类型
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: "9121"
name: redis-exporter-service
namespace: studylinux-net
spec:
selector:
app: redis
ports:
- nodePort: 31082
name: prom
port: 9121
protocol: TCP
targetPort: 9121
type: NodePort
创建service
kubectl apply -f redis-svc.yaml
3、为redis创建service暴露端口,用于在k8s集群外部访问进行redis测试
(1)编写yaml文件
vim redis-svc.yaml
kind: Service #service 类型
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
name: redis-redis-service
namespace: studylinux-net
spec:
selector:
app: redis
ports:
- nodePort: 31081
name: redis
port: 6379
protocol: TCP
targetPort: 6379
type: NodePort
(2)创建service
kubectl apply -f redis-svc.yaml
(3)查看创建的pod和service
(4)telnet验证redis端口是否能通
(5)验证通过指标数据端口是否可以正常获取指标数据
执行命令:
curl http://172.31.7.111:31082/metrics
7.2.2 prometheus采集数据
1、修改k8s集群外部的监控主机节点172.31.7.201的prometheus配置文件
(1)修改配置
vim /apps/prometheus/prometheus.yml
- job_name: "prometheus-redis-metrics"
static_configs:
- targets: ["172.31.7.111:31082"]
(2)重启服务
systemctl restart prometheus.service
(3)查看监控页面
(4)由于redis的service开启了注解,因此k8s集群内部的prometheus可以抓取service后端的容器数据
查看prometheus监控页面 172.31.7.113:39090
7.2.3 grafana查看监控数据
模板id:11835
查看监控数据
7.3 监控mysql
通过 mysqld_exporter 监控 MySQL 服务的运行状态
github链接:https://github.com/prometheus/mysqld_exporter
版本要求:
要求mysql版本大于等于5.6,mariadb版本大于等于10.3
7.3.1 部署mysql
在172.31.7.192上部署mariadb
1、安装mariadb
centos系统yum默认安装的mariadb版本较低, 但mysql_exporter有版本要求,这里需要安装10.3版本的mariadb。
(1)通过配置yum仓库,yum安装
配置阿里mariadb yum仓库源(mariadb官方yum源下载较慢或无法下载,因此配置阿里yum源进行安装)
vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64/
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
下载完成后安装mariadb-server
yum install MariaDB-server MariaDB-client -y
(2)下载rpm包安装
下载mariadb rpm安装进行安装,连接如下:
https://mirrors.aliyun.com/mariadb/yum/10.3.35/centos7-amd64/rpms/MariaDB-rocksdb-engine-10.3.35-1.el7.centos.x86_64.rpm
通过yum命令安装
yum -y install MariaDB-rocksdb-engine-10.3.35-1.el7.centos.x86_64.rpm
启动mysql服务
systemctl restart mariadb
2、创建账号并授权,用于prometheus监控
(1)进入mysql,创建账号
#mysql
MariaDB [(none)]> CREATE USER 'mysql_exporter'@'localhost' IDENTIFIED BY 'magedun66'; #允许mysql_exporter账号从本地连接mysql,由于mysql_exporter和mysql在同一台机器,可以通过localhost连接mysql
(2)对账号授权
MariaDB [(none)]> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'localhost';
(3)验证:使用授权账号连接数据库
mysql -umysql_exporter -pmagedun66 -hlocalhost
7.3.2 部署mysql_exporter
1、在172.31.7.192上安装mysql_exporter
(1)下载mysql_exporter
在github下载mysql_exporter
github网站链接:https://github.com/prometheus/mysqld_exporter/releases
mysql_exporter下载链接:https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
(2)下载完成后解压
tar xf mysqld_exporter-0.13.0.linux-amd64.tar.gz
(3)把二进制文件复制到/usr/local/bin目录下,便于命令的执行
cd mysqld_exporter-0.13.0.linux-amd64/
cp mysqld_exporter /usr/local/bin/
(4)验证二进制命令可以正常执行
mysqld_exporter --help
2、配置mysql_exporter用户免密码登录mysql
为了便于数据库访问,在本地配置/root/.my.cnf文件,使mysql_exporter用户可以免密登录mysql
vim /root/.my.cnf
[client]
user= mysql_exporter
password=magedun66
验证:
mysql -umysql_exporter -hlocalhost
3、启动mysql_exporter
(1)为mysql_exporter创建service文件
vim /etc/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/root/.my.cnf
[Install]
WantedBy=multi-user.target
(2)启动mysql_exporter并设置为开机自启动
systemctl daemon-reload
systemctl restart mysqld_exporter
systemctl enable mysqld_exporter
(3)验证:
查看9104端口是否被监听
(4)访问mysql metrics页面,查看指标数据
浏览器访问:http://172.31.7.192:9104/metrics
点击Metrics按钮,查看指标数据
7.3.3 prometheus采集数据
在prometheus监控主机172.31.7.201上
1、修改配置文件
vim /apps/prometheus/prometheus.yml
- job_name: "prometheus-mysql-metrics"
static_configs:
- targets: ["172.31.7.192:9104"]
2、重启服务
systemctl restart prometheus.service
3、查看监控页面
7.3.4 grafana查看监控数据
模板id:13106
查看监控数据
模板id:11323
由于没有配置数据库主从,因此没有获取从库数据
7.4 监控haproxy
通过 haproxy_exporter 监控 haproxy
github链接:https://github.com/prometheus/haproxy_exporter
haproxy支持两种数据采集方式:(1)通过unix socket方式 (2)通过uri方式
7.4.1 部署haproxy
(1)在172.31.7.192上部署haproxy
使用yum安装
yum -y install haproxy
修改haproxy配置文件
vim /etc/haproxy/haproxy.cfg
#修改socket为admin权限,可以通过socket对haproxy进行增删改查权限
# turn on stats unix socket
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
#开启状态页,可以通过uri的方式抓取haproxy数据
listen stats
bind :9009
stats enable
#stats hide-version
stats uri /haproxy-status
stats realm HAproxy\ Stats\ Page
stats auth hadmin:123456 #配置状态页账号和密码
#为了便于查看监控效果,配置haproxy监听,便于产生访问数据(通过haproxy负载prometheus监控)
listen prometheus
bind 172.31.7.192:80
mode http
server server1 172.31.7.201:9090 check inter 3s fall 3 rise 3
(2)启动haproxy服务
systemctl restart haproxy
(3)通过负载均衡访问prometheus监控页面
在haproxy配置文件中,配置了haproxy负载的后端server是prometheus,所以可以通过访问haproxy地址访问prometheus监控页面
浏览器输入:172.31.7.192
(4)访问状态页:
账号/密码:admin/123456
7.4.2 部署haproxy_exporter
1、在haproxy主机172.31.7.192上安装haproxy_exporter
(1)下载haproxy_exporter
github链接:https://github.com/prometheus/haproxy_exporter/releases
haproxy_exporter下载链接:https://github.com/prometheus/haproxy_exporter/releases/download/v0.13.0/haproxy_exporter-0.13.0.linux-amd64.tar.gz
使用命令下载:
wget https://github.com/prometheus/haproxy_exporter/releases/download/v0.13.0/haproxy_exporter-0.13.0.linux-amd64.tar.gz
(2)解压安装包
tar -xvf haproxy_exporter-0.13.0.linux-amd64.tar.gz
(3)把二进制复制到/usr/local/bin目录下
cd haproxy_exporter-0.13.0.linux-amd64
cp haproxy_exporter /usr/local/bin/
(4)验证:二进制命令可以正常执行
执行命令:haproxy_exporter –help
在前面提到过两种启动方式,下面是第一种数据抓取方式:通过socket启动haproxy_exporter抓取数据
2、启动haproxy_exporter(通过socket方式启动)
haproxy_exporter --haproxy.scrape-uri=unix:/var/lib/haproxy/haproxy.sock &
验证:查看9101端口是否被监听
3、访问指标数据页面
点击Metrics按钮,查看指标数据
第二种数据抓取方式:通过uri启动haproxy_exporter抓取数据
由于通过uri抓取数据是通过状态页获取指标数据,因此这种方式一定要开启haproxy的状态页
启动haproxy_exporter命令:
haproxy_exporter --haproxy.scrape-uri="http://haadmin:q1w2e3r4ys@127.0.0.1:9009/haproxy-status;csv" &
7.4.3 prometheus采集数据
在prometheus监控主机172.31.7.201上
vim /apps/prometheus/prometheus.yml
- job_name: "prometheus-haproxy-metrics"
static_configs:
- targets: ["172.31.7.192:9101"]
重启服务
systemctl restart prometheus.service
查看监控页面
7.4.4 grafana查看监控数据
模板id:367
模板id:2428
7.5 监控nginx
通过 prometheus 监控 nginx
需要在编译安装 nginx 的时候添加 nginx-module-vts 模块,
github 地址:https://github.com/vozlt/nginx-module-vts
架构图:
数据收集过程:
(1)编译安装nginx,在nginx内置nginx-module-vts模块,收集nginx数据,以html格式(状态页)显示,但该模块不能转换数据,需要安装nginx_vts_exporter
(2)安装nginx_vts_exporter,将状态页数据收集过来,转换为prometheus可以识别的key/value格式的数据,通过服务端看将数据暴露出去
(3)prometheus通过服务端口获取nginx_vts_exporter收集的数据
(4)grafana导入模板,展示监控数据
7.5.1 编译安装nginx
在172.31.7.192上安装nginx
1、将github上的源码clone下来
yum -y install git
cd /usr/local/src/
git clone https://github.com/vozlt/nginx-module-vts.git
2、下载nginx源码包并解压
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar xvf nginx-1.20.2.tar.gz
3、编译安装nginx
(1)安装编译环境
yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
(2)编译安装nginx(主要是添加功能模块nginx-module-vts:--add-module=/usr/local//src/nginx-module-vts/)
# cd nginx-1.20.2/
# ./configure --prefix=/apps/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-file-aio \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--add-module=/usr/local//src/nginx-module-vts/
# make && make install
4、修改nginx配置文件
vim /apps/nginx/conf/nginx.conf
#http 范围配置:
#gzip on;
vhost_traffic_status_zone; #打开数据传输状态页
#server 字段配置:
location / {
root html;
index index.html index.htm;
}
location /status {
vhost_traffic_status_display; #显示状态页
vhost_traffic_status_display_format html; #以html格式显示状态页
}
5、检查nginx配置并启动
(1)检查配置:
/apps/nginx/sbin/nginx -t
(2)启动nginx:
/apps/nginx/sbin/nginx
6、验证
(1)访问nginx :172.31.7.192
(2)访问nginx状态页: 172.31.7.192/status
(3)查看json格式的数据:http://172.31.7.192/status/format/json
7.5.2 安装nginx-vts-exporter
在nginx所在主机172.31.7.192上安装nginx-vts-exporter
github链接:https://github.com/hnlq715/nginx-vts-exporter/releases
1、下载nginx-vts-exporter
cd /usr/local/src
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
2、解压并将二进制复制到/usr/local/src
tar -xvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
cd nginx-vts-exporter-0.10.3.linux-amd64
cp nginx-vts-exporter /usr/local/bin/
3、验证二进制命令是否可以正常使用
nginx --help
4、启动nginx-vts-exporter并验证
(1)启动nginx-vts-exporter,后台运行(这里的地址是nginx-vts-exporter安装的主机地址)
nginx-vts-exporter -nginx.scrape_uri http://172.31.7.192/status/format/json &
(2)验证:
查看9913端口是否被监听
(3)查看指标数据:172.31.7.192:9913/metrics
7.5.3 Prometheus采集数据
在prometheus监控主机172.31.7.201上
1、修改配置
vim /apps/prometheus/prometheus.yml
- job_name: "prometheus-nginx-metrics"
static_configs:
- targets: ["172.31.7.192:9913"]
2、重启服务
systemctl restart prometheus.service
3、查看监控页面
7.5.4 grafana查看监控数据
模板id:2949
查看监控数据:
7.6 blackbox_exporter监控URL
官网链接:https://prometheus.io/download/#blackbox_exporter
blackbox_exporter 是 Prometheus 官方提供的一个 exporter,可以通过 HTTP,HTTPS, DNS, TCP 和 ICMP 对被监控节点进行监控和数据采集。
各协议用途说明:
HTTP/HTPPS:URL/API 可用性检测
TCP:端口监听检测
ICMP:主机存活检测
DNS:域名解析
7.6.1 部署blackbox_exporter
官网下载界面:https://prometheus.io/download/#blackbox_exporter
blackbox_exporter可以和prometheus不在同一个主机,将blackbox_exporter部署在172.31.7.202上
1、下载blackbox_exporter
cd /apps
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.21.0/blackbox_exporter-0.21.0.linux-amd64.tar.gz
2、解压并做软连接
tar -xvf blackbox_exporter-0.21.0.linux-amd64.tar.gz
ln -sv /apps/blackbox_exporter-0.21.0.linux-amd64 /apps/blackbox_exporter
3、通过service文件启动blackbox_exporter
(1)创建service文件
vim /etc/systemd/system/blackbox-exporter.service
[Unit]
Description=Prometheus Blackbox Exporter
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/apps/blackbox_exporter/blackbox_exporter --config.file=/apps/blackbox_exporter/blackbox.yml --web.listen-address=:9115 #指定二进制文件、配置文件路径以及端口
Restart=on-failure
[Install]
WantedBy=multi-user.target
注意:配置文件/apps/blackbox_exporter/blackbox.yml使用默认配置即可,无需更改
(2)启动blackbox-exporter并设置为开机自启动
systemctl restart blackbox-exporter.service && systemctl enable blackbox-exporter.service
4、验证:
(1)查看端口9115是否被监听
(2)访问web页面:172.31.7.202:9115
(3)点击Metrics按钮,查看blackbox_exporter指标数据页面
7.6.2 blackbox exporter实现 URL 监控
prometheus 调用 blackbox exporter 实现对 URL/ICMP 的监控。
注意:要通过blackbox exporter监控url时,并不是通过修改blackbox exporter的配置文件实现,而是修改prometheus的配置文件,通过prometheus调用blackbox exporter,把要监控的目标告知blackbox exporter,再由blackbox exporter去抓取数据,然后把数据返回给prometheus,prometheus对数据进行监控
7.6.2.1 prometheus URL监控配置
在prometheus监控主机172.31.7.201上
vim /apps/prometheus/prometheus.yml
- job_name: 'http_status'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets: ['http://www.xiaomi.com', 'http://www.magedu.com'] #由于网站会自动跳转到https,因此写http协议也可以正常监控
labels:
instance: http_status
group: web
relabel_configs:
- source_labels: [__address__] #relabel通过将__address__(当前目标地址)写入__param_target标签来创建一个label。
target_label: __param_target #监控目标www.xiaomi.com,作为__address__的value
- source_labels: [__param_target] #监控目标
target_label: url #将监控目标与url创建一个label
- target_label: __address__
replacement: 172.31.7.202:9115 #这里要写blackbox_exporter所在主机的ip和端口
重启服务
systemctl restart prometheus.service
7.6.2.2 验证
查看prometheus监控页面 172.31.7.201:9090
查看blackbox_exporter的web页面,可以看到对url的监控结果
7.6.3 blackbox exporter 实现 ICMP 监控
主要是监控ip地址的连通性
7.6.3.1 Prometheus ICMP 监控配置
在prometheus监控主机172.31.7.201上
vim /apps/prometheus/prometheus.yml
# icmp 检测
- job_name: 'ping_status'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets: ['172.31.7.2',"223.6.6.6"] #监控地址分别是本机虚拟机网关地址和阿里dns服务器地址
labels:
instance: 'ping_status'
group: 'icmp'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: ip #将ip与__param_target创建一个label
- target_label: __address__
replacement: 172.31.7.202:9115
重启服务
systemctl restart prometheus.service
7.6.3.2 验证
查看prometheus监控页面http://172.31.7.201:9090/
查看blackbox_exporter数据页面,可以看到icmp的返回结果
7.6.4 blackbox exporter 实现端口监控
主要是监控端口是否被监听,可以用来对服务进行监控
7.6.3.1 Prometheus ICMP 监控配置
在prometheus监控主机172.31.7.201上
vim /apps/prometheus/prometheus.yml
# 端口监控
- job_name: 'port_status'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets: ['172.31.7.201:9090', '172.31.7.192:80','172.31.7.101:22'] #分别是prometheus server的端口9090,nginx的80端口以及master1节点的22端口
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: 172.31.7.202:9115
重启服务
systemctl restart prometheus.service
7.6.3.2 验证
查看prometheus监控页面http://172.31.7.201:9090/
查看blackbox_exporter数据页面,可以看到tcp_connect的返回结果
7.6.5 grafana查看监控数据
模板id:9965
文章评论