参考:https://mp.weixin.qq.com/s/gXffcNzixAiTKSBZcf2sBA

最终效果图:

下面全部使用docker部署:

一、部署prometheus

这是一个默认的prometheus配置文件:

[root@localhost prometheus]# cat prometheus.yml
# my global config
global:scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).
​
# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093
​
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"
​
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'
​# metrics_path defaults to '/metrics'# scheme defaults to 'http'.
​static_configs:- targets: ['localhost:9090']
[root@localhost prometheus]# docker run -d --name prometheus -p 9090:9090 -v ${PWD}:/etc/prometheus  prom/prometheus:v2.25.0

网页访问9090测试

二、部署grafana

[root@localhost ~]# docker run -d --name=grafana -p 3000:3000    grafana/grafana:7.2.2

访问3000端口,并配置prometheus数据源

三、部署blackbox-exporter

Blackbox_exporter是prometheus官方的组件,github地址: https://github.com/prometheus/blackbox_exporter

配置文件使用官方默认的,更多配置可以参考官方example.yml:

[root@localhost blackbox-exporter]# cat blackbox.yml
modules:http_2xx:  # http 检测模块  Blockbox-Exporter 中所有的探针均是以 Module 的信息进行配置prober: httptimeout: 10shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]   valid_status_codes: [200]  # 这里最好作一个返回状态码,在grafana作图时,有明示---陈刚注释。method: GETpreferred_ip_protocol: "ip4"http_post_2xx: # http post 监测模块prober: httptimeout: 10shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]method: POSTpreferred_ip_protocol: "ip4"tcp_connect:  # TCP 检测模块prober: tcptimeout: 10sdns:  # DNS 检测模块prober: dnsdns:transport_protocol: "tcp"  # 默认是 udppreferred_ip_protocol: "ip4"  # 默认是 ip6query_name: "kubernetes.default.svc.cluster.local"
[root@localhost blackbox-exporter]# docker run  -d -p 9115:9115 --name blackbox_exporter -v `pwd`:/config prom/blackbox-exporter:master --config.file=/config/blackbox.yml

访问9115端口测试

四、prometheus配置文件里添加job,对blackbox数据进行收集

这段内容从官方文档抄过来的:

[root@localhost prometheus]# tail -17 prometheus.yml - job_name: 'blackbox'metrics_path: /probeparams:module: [http_2xx]  # Look for a HTTP 200 response.static_configs:- targets:- http://prometheus.io    # Target to probe with http.- https://prometheus.io   # Target to probe with https.- https://jd.com # Target to probe with http on port 8080.- https://www.bejson.com # Target to probe with http on port 8080.relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 172.17.0.3:9115  # The blackbox exporter's real hostname:port.

Lifecycle api没有开启(curl -X POST http://127.0.0.1:9090/-/reload),只能手动重载配置:

[root@localhost prometheus]# docker exec -it prometheus kill -1 1

prometheus页面查看target

五、prometheus导入dashborad

使用的dashboard是这个: https://grafana.com/grafana/dashboards/13230

六、看效果

七、设置prometheus告警

首先在prometheus.yml文件里面通过rule_files指定告警规则文件的访问路径

/etc/prometheus/rules $ cat /etc/prometheus/prometheus.yml
rule_files:- "/etc/prometheus/rules/*.rules"

然后编辑ssl告警规则文件

/etc/prometheus $ mkdir /etc/prometheus/rules
/etc/prometheus/rules $ cat /etc/prometheus/rules/ssl-expire-alert.rules
groups:
- name: ssl_expiryrules:- alert: Ssl Cert Will Expire in 30 daysexpr: probe_ssl_earliest_cert_expiry - time() < 86400 * 300for: 5mlabels:severity: warningannotations:summary: "SSL certificate will expire soon on (instance {{ $labels.instance }})"description: "SSL certificate expires in 30 days\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"

prometheus加载配置文件

/etc/prometheus/rules $ kill -1 1

去prometheus界面查看告警,已经有了

八、配置alertmanager邮件告警

部署alertmanager,配置文件是默认的,没有改

/alertmanager $ cat /etc/alertmanager/alertmanager.yml
global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 1hreceiver: 'web.hook'
receivers:
- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:5001/'
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
➜  alertmanager docker run --name alertmanager -d -v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml -p 9093:9093 prom/alertmanager:v0.21.0

网页访问测试:

关联prometheus和alertmanager,此时需要修改prometheus.yml,添加alertmanager配置

/prometheus $ cat /etc/prometheus/prometheus.yml
alerting:alertmanagers:- static_configs:- targets:- 172.17.0.7:9093

加载prometheus配置

/prometheus $ kill -1 1

刷新alertmanager页面,发现告警已经过来了

修改alertmanager配置文件,配置邮件告警:

alertmanager重载配置文件:

/alertmanager $ kill -1 1

查看邮箱有没有收到邮件(如果没收到的话要看下alertmanager的日志有什么报错,比如smtp服务器连不上,或者配置文件某一行格式不对)

prometheus监控域名证书到期时间相关推荐

  1. 监控域名证书到期时间

    1.需求 nginx服务器中的域名,在跑的业务域名比较多,需要监控各个域名的证书到期时间,提前做好准备更换证书. 网上有很多的平台监控,但很多都是需要付费的,本次是使用telegram配合做监控提示. ...

  2. zabbix6 通过脚本监控SSL证书到期时间

    前提: zabbix6 +网上资料 写这编文件的目的是让更多的人在查询了网上资料,还会遇上无法正常读取SSL证书到期时间的问题.所以在观看本文时,你需要有搭建ZABBIX6的基础,及Cenos8系统操 ...

  3. zabbix 监控域名注册到期时间

    前言 一.运行环境 二.操作步骤 1.Centos添加whois查询功能 2.创建SH脚本 3.设置相关配置 总结 前言 搭建好了zabbix监控平台后,想着充分应用平台.公司注册的域名一般都三年以上 ...

  4. 查看域名证书到期时间

    参考:https://www.cnblogs.com/dingkailinux/p/8408929.html 一.通过域名查询: 以淘宝京东为例 root@server01:~/scripts# ec ...

  5. 域名证书到期监控告知

    域名证书到期提前监控告知 通过该网站进行服务证书监控 证书到期监控:https://letsmonitor.org/contacts 通过邮件告警通知 个人用户:baolin2200@gmail.co ...

  6. 查看https证书到期时间

    查看https证书到期时间 浏览器打开网址,点击安全,之后查看证书选项,就可以看到当前域名配置的https证书内容了,包括颁发日期.截止日期等 end

  7. ssl证书到期时间查询的三种方法

    之前,有一个域名使用了网上免费的 ssl 证书,然后想在该证书过期后更换为 Let's encrypt 的免费证书,便想查询下该域名 ssl 证书还剩多少天过期. 查询证书到期时间的方法还是很简单的, ...

  8. 基于embedded.mobileprovision描述文件查看iOS苹果证书到期时间三种方案

    在iOS开发中,embedded.mobileprovision描述文件是开发人员非常熟悉的,里面包含了证书信息,如调试设备UDID.Entitlements.AppIDName.DeveloperC ...

  9. java证书过期时间_我想用代码方式查看ca证书到期时间,以下是我的代码,可以显示日期,但是和实际的截止日期不一致...

    我想用代码方式查看ca证书到期时间,以下是我的代码,可以显示日期,但是和实际的截止日期不一致 希望各位大牛帮忙看一下问题出在哪,多谢啦 import java.io.*; import java.se ...

最新文章

  1. Android实战技巧之六:PreferenceActivity使用详解
  2. Docker Compose基本使用-使用Compose启动Tomcat为例
  3. 【287】◀▶ arcpy 常用类说明
  4. nginx反向代理和shiro权限校验产生的404问题
  5. 递归反转链表改变原链表吗_在不使用递归的情况下找到链表的长度
  6. android编辑配置文件,如何在android studio中修改配置文件
  7. python3中的rang()函数
  8. Less 官方文档学习笔记
  9. tns-03505: 无法解析名称_在 Azure上购买域名并进行域名解析
  10. Julia:String和ASCIIString
  11. CMSIS-RTOS教程中文版
  12. 一款好用的插件——油猴子
  13. 创造与魔法怎么自建服务器,创造与魔法如何建立部落 部落建造条件
  14. php zend guard php 7,zend guard php7最新版
  15. mac中实用的录音软件有哪些?
  16. 深信服EDR终端检测平台-任意用户登录漏洞复现
  17. HTML入门---慕课网
  18. 企业财务制度二--(五)损益类科目 5101 主营业务收入(转载)
  19. C++获取屏幕分辨率(屏幕窗口大小),屏幕显示比例(DPI)几种方法
  20. 65、如何解决浮动引起的父元素高度塌陷

热门文章

  1. 消息中间件:选型分析。
  2. 网管员必知:常用电脑密码破解(转)
  3. eclipes 快捷键
  4. 如何给PDF文件添加页眉页脚,一分钟轻松搞定
  5. 最新版校园招聘进大厂系列----------(1)阿里篇 -----未完待续
  6. matlab成功安装libsvm后,运行程序仍报错“svmtrain has been removed”解决方法记录
  7. 笔记本电脑加一个机械硬盘后的配置工作
  8. 自从学会:用Python爬取虎牙颜值区美女主播照片后,身体一天不如一天
  9. JS setTimeout和setInterval的区别
  10. 国产小家电品牌如何用dtc模式打造新中产超爆款?