prometheus监控服务器和数据库

引言
一、运行环境
二、prometheus介绍
三、grafana介绍
四、安装prometheus
五、安装grafana
六、告警测试

引言

本篇文章主要是介绍通过prometheus来实现服务器监控,并通过grafana对数据进行展示。调用prometheus的alertmanager来对报警进行处理,并将报警信息传到特定的url。

一、运行环境

  • 操作系统:centos7
  • prometheus:prometheus-2.19.2.linux-amd64
  • grafana:grafana-7.0.6.1.x86_64
  • alertmanager:0.21.0
  • node_exporter:node_exporter-1.0.1.kinux-amd64
  • mysqld_exporter:mysqld_exporter-0.10.0.linux-amd64

二、prometheus介绍

prmetheus是一个最早在SoundCloud上创建的一个开源监控和报警工具系统,其主要特征主要如下:

  • 使用指标名和键值对表示的时间序列数据的一个多维度数据模型
  • PromQL,一种利用这种维度的灵活查询语言
  • 不依赖分布式存储,单个服务节点时自治的
  • 时间序列收集通过在http上拉取model
  • 通过中介网关可以存入时间序列数据
  • 目标发现通过服务发现或者静态配置的方式
  • 支持多图形和指示板模式
    Prometheus生态由多个组件组成,其中许多都都是可选的:
  • 主要的Prometheus server,刮取和存储使劲按序列数据
  • 用于检测应用代码的client libraries
  • 用于支持短周期job的push gateway
  • 特定用途的exporter用于像HAProxy、StatsD、Graphite等的服务
  • 处理报警的alertmanager
  • 多样的支持工具
    绝大多数Prometheus组件由Go语言编写,使得它们容易构建和部署为静态库。


    架构图

    这里要详细介绍一下exporter,exporter是一个采集监控数据并通过prometheus监控规范对外提供数据的组件,由于大多数监控无法直接提供监控接口(本身不支持HTTP接口、安全性、稳定性、代码耦合等),exporter就出现了。Prometheus只能采集指定格式的监控信息, 你可以通过不同的exporter来获取你所需要的不同的数据,例如监控mysql可以使用mysqld_exporter,监控服务器性能可以使用node_exporter。
    Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组和路由它们到正确的接收者集成,如电子邮件、PagerDuty或OpsGenie。它还负责警报的沉默和抑制。

三、grafana介绍

grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。官网地址:官网地址

四、安装Prometheus

  1. 下载prometheus,下载链接
  2. 之后解压和运行
tar xvfz prometheus-*.tar.gz
cd prometheus-*
  1. 配置prometheus.yml
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'

# 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'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9090']
  1. 启动
# Start Prometheus.
# By default, Prometheus stores its database in ./data (flag --storage.tsdb.path).
#启动Prometheus
#默认下,Prometheus存储它的数据库在data文件夹下,使用--storage.tsdb.path可以指定data文件存储位置
./prometheus --config.file=prometheus.yml
  1. 验证
    启动成功登录localhost:9090,就能看到如下页面了。


    启动之后的页面
  2. 下载node_exporter(用于监控服务器信息)
    下载链接,下载之后解压,之后可以参照node_exporter配置来对node_exporter进行配置。启动成功之后访问ip:9100/metrics可以看到如下内容:
    node_exporter启动
    ,之后在prometheus.yml中配置node信息。
- job_name: 'node'
      metrics_path: '/metrics'
      static_configs:
      - targets: ['10.9.1.85:9100']

之后重启Prometheus可以在target中看到如下内容


image.png
  1. 安装mysqld_exporter
    下载链接,配置mysqld_exporter可以参照mysqld_exporter配置。配置成功重启Prometheus可以看到如下内容
    image.png
  2. 安装alertmanager
    下载链接,之后将alertmanager解压到Prometheus的如下位置
    alertmanager位置
    ,之后进入alertmanager对alertmanager.yml进行配置
   global:
     resolve_timeout: 5m
   
   route:
     group_by: ['alertname']
     group_wait: 10s
     group_interval: 10s
     repeat_interval: 10m
     receiver: 'web.hook'
  receivers:
  - name: 'web.hook'
    webhook_configs:
    - url: 'http://10.9.1.23:8888/open/test' #prometheus发送alert给
# alertmanager之后会将警告信息
发送到此url
  inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      equal: ['alertname', 'dev', 'instance']

在prometheus.yml所在目录下新建simulator_alert_rules.yml,

 groups:
 - name: simulator-alert-rule
   rules:
   - alert: HttpSimulatorDown
     expr: sum(up{job="node"}) == 0 #当job为node的job全部down之后一分钟发出alert
     for: 1m
     labels:
       severity: critical

启动alertmanager

./alertmanager --config.file=alertmanager.yml

配置prometheus.yml文件

 alerting:
   alertmanagers:
   - static_configs:
     - targets: ['10.9.1.85:9093']

重启Prometheus,出现如下内容则说明配置成功


alertmanager配置成功

五、安装grafana

安装grafana文章

六、告警测试

之前设置了一个当job名为node的实例全部下线时会发起告警,最初的告警状态为不活跃


inactive

关闭node_exporter之后进入待定状态


pending

一分钟之后,进入firing状态
active

我们的回调接口也收到了数据


image.png

同样你也可以更改simulator_alert_rules.yml配置文件来设置其它的告警规则,这里就不过多的赘述。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342