Grafana+Prometheus实现Ceph监控和钉钉告警

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Grafana+Prometheus实现Ceph监控和钉钉告警 获取软件包 最新的软件包获取地址 https://prometheus.io/download/ Prometheus 1、下载Prometheus $ wget https://github.

Grafana+Prometheus实现Ceph监控和钉钉告警

获取软件包

最新的软件包获取地址

https://prometheus.io/download/

Prometheus

1、下载Prometheus

$ wget https://github.com/prometheus/prometheus/releases/download/v2.6.0/prometheus-2.6.0.linux-amd64.tar.gz

2、解压软件包

$ tar xf prometheus-2.6.0.linux-amd64.tar.gz

3、配置Prometheus启动程序

把解压出来的文件移动到/usr/local/目录下,并重命名为prometheu

$ mv prometheus-2.6.0.linux-amd64 /usr/local/prometheus

生成启动脚本

$ vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus: the monitoring system
Documentation=http://prometheus.io/docs/

[Service]
ExecStart=/usr/local/prometheus/prometheus \
        --config.file=/usr/local/prometheus/prometheus.yml \
        --storage.tsdb.path=/var/lib/prometheus \
        --web.console.templates=/usr/local/prometheus/consoles \
        --web.console.libraries=/usr/local/prometheus/console_libraries \
        --web.listen-address=0.0.0.0:9090 --web.external-url=
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target 

创建监控数据存储目录

$ mkdir /var/lib/prometheus

4、启动Prometheus

$ systemctl daemon-reload
$ systemctl enable prometheus
$ systemctl start prometheus

5、查看端口监听状态

Prometheus监听的端口为9090,启动成功后可以通过netstat命令进行查看端口的监听状态

$ netstat -antpu | grep 9090
tcp        0      0 127.0.0.1:33270         127.0.0.1:9090          ESTABLISHED 6426/prometheus    
tcp6       0      0 :::9090                 :::*                    LISTEN      6426/prometheus    
tcp6       0      0 ::1:9090                ::1:51821               ESTABLISHED 6426/prometheus    
tcp6       0      0 ::1:51821               ::1:9090                ESTABLISHED 6426/prometheus    
tcp6       0      0 127.0.0.1:9090          127.0.0.1:33270         ESTABLISHED 6426/prometheus

6、通过浏览器进行访问

Prometheus启动成功后,可以通过浏览器访问查看状态和配置信息

affc46f28587b4fbf22a766b47a81bc727b5c519

Ceph_export

Ceph_export 需要使用Go进行编译,也可以下载已经编译好的Ceph_exporter直接使用

链接:https://pan.baidu.com/s/1AEF_pdDvSJ5gMPapaBuBrA

提取码:jkuh

1、安装软件Go环境

$ yum -y install golang

2、查看Go环境变量

$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build359765015=/tmp/go-build -gno-record-gcc-switches"

3、设置Go环境变量

$ vim /etc/profile.d/go.sh
export GOROOT=/usr/lib/golang
export GOBIN=$GOROOT/bin
export GOPATH=/root/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

$ source /etc/profile.d/go.sh

4、下载并编译Ceph_exporter

$ mkdir go/src/github.com/digitalocean/
$ cd go/src/github.com/digitalocean/
$ git clone https://github.com/digitalocean/ceph_exporter
$ cd ceph_exporter
$ go build

5、创建Ceph_exporter启动程序

$ mkdir ~/go/bin/
$ cp ~/go/src/github.com/digitalocean/ceph_exporter/ceph_exporter ~/go/bin/
$ vim /usr/lib/systemd/system/ceph_exporter.service
[Unit]
Description=Prometheus's ceph metrics exporter
 
[Service]
User=root
Group=root
ExecStart=/root/go/bin/ceph_exporter
 
[Install]
WantedBy=multi-user.target
Alias=ceph_exporter.service

6、启动Ceph_exporter

$ systemctl daemon-reload
$ systemctl enable ceph_exporter
$ systemctl start ceph_exporter

7、查看端口监听状态

Ceph_exporter使用的是9128端口,可以通过netstat进行查看端口的监听状态

$ netstat -antpu | grep 9128
tcp6       0      0 :::9128                 :::*                    LISTEN      6839/ceph_exporter

8、修改Prometheus配置

Ceph_exporter的接口添加到Prometheus的配置中

$ vim /usr/local/prometheus/prometheus.yml
scrape_configs:
  - job_name: 'ceph'
    honor_labels: true
    static_configs:
    - targets: ['192.168.1.10:9128']
      labels:
        instance: Ceph测试集群

9、重启Prometheus进程

$ systemctl restart prometheus

10、浏览器访问验证

38f6e3e386cfe417f9d3b64e2ce4117d5a6c9590

Grafana

1、下载软件包

不同系统的最新软件包可以在Grafana的官网获取下载地址https://grafana.com/grafana/download

$ wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm

2、安装Grafana

$ yum -y install grafana-5.4.3-1.x86_64.rpm

3、启动Grafana

$ systemctl enable grafana-server
$ systemctl start grafana-server

4、查看端口监听状态

Grafana监听端口为3000,可以使用netstat查看监听状态

$ netstat -antpu | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      7147/grafana-server

5、浏览器访问登录

访问地址为http://$IP:3000,初始用户名和密码均为admin,首次登录后会提示设置新的密码

9aba06e98a5298bab2cee2e7fa28504e3b77dca1

6、配置Dashboard

点击Add data source添加数据源

c53e5fa2e4099f69f1651f0ac106843219252985

选择Prometheus

6dc756809a2f36b12274ec35096c7f13d7b3a1f5

URL地址为Prometheus的访问地址http://$IP:9090

b9d8305e0b437fab2d73ee46677044e3c922ec71

导入Dashboard,模板的编号为917,如果无法连接互联网,也可以在Grafana的官网下载模板后手动导入https://grafana.com/dashboards/917

4d3e5965a304f574f89292fdc3cd3c313e18566e

5a6f0038fefb4e8f8cab51879d905b8b335dccc1

查看监控状态

740dd72cd19bcb9904943ba77c399a20f5348da3

AlertManager

1、安装Alertmanager

$ wget https://github.com/prometheus/alertmanager/releases/download/v0.16.0/alertmanager-0.16.0.linux-amd64.tar.gz
$ tar xf alertmanager-0.16.0-alpha.0.linux-amd64.tar.gz
$ cd alertmanager-0.16.0-alpha.0.linux-amd64
$ cp alertmanager amtool /usr/bin/
$ cp alertmanager.yml /usr/local/prometheus/

2、生成启动程序

$ vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Prometheus: the alerting system
Documentation=http://prometheus.io/docs/
After=prometheus.service

[Service]
ExecStart=/usr/bin/alertmanager --config.file=/usr/local/prometheus/alertmanager.yml
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

3、启动Alertmanager

$ systemctl enable alertmanager
$ systemctl start alertmanager

4、查看端口监听状态

Alertmanager的监听端口为9093,可以使用netstat查看端口监听状态

$ netstat -antpu | grep 9093
tcp6       0      0 :::9093                 :::*                    LISTEN      7381/alertmanager 

5、配置Prometheus,添加Alertmanager端点

$ vim /usr/local/prometheus/prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["192.168.1.10:9093"]

6、重启Prometheus

$ systemctl restart prometheus

配置钉钉告警

1、配置webhook

$ mkdir -p /usr/lib/golang/src/github.com/timonwong/
$ cd /usr/lib/golang/src/github.com/timonwong/
$ git clone https://github.com/timonwong/prometheus-webhook-dingtalk.git
$ cd prometheus-webhook-dingtalk
$ make
$ nohup ./prometheus-webhook-dingtalk --ding.profile="webhook=https://oapi.dingtalk.com/robot/send?access_token=8fe12c1a58b0769d7fcbf6ebf3bcd2cfcba825f2c45b4b39055890fd705df543" &> /var/log/dingding.log &

2、添加webhook告警

$ vim /usr/local/prometheus/alertmanager.yml
global:
  resolve_timeout: 5m
 
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'

receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://192.168.1.10:8060/dingtalk/webhook/send'

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

3、添加告警规则文件

$ vim /usr/local/prometheus/prometheus.yml
rule_files:
  - /usr/local/prometheus/ceph.yml

4、配置告警规则

$ vim /usr/local/prometheus/ceph.yml
groups:
- name: ceph-rule
  rules:
  - alert: Ceph OSD Down
    expr: ceph_osd_down > 0
    for: 2m
    labels:
      product: Ceph测试集群
    annotations:
      Warn: "{{$labels.instance}}: 有{{ $value }}个OSD挂掉了"
      Description: "{{$labels.instance}}:{{ $labels.osd }}当前状态为{{ $labels.status }}"

  - alert: 集群空间使用率
    expr: ceph_cluster_used_bytes / ceph_cluster_capacity_bytes * 100 > 80
    for: 2m
    labels:
      product: Ceph测试集群
    annotations:
      Warn: "{{$labels.instance}}:集群空间不足"
      Description: "{{$labels.instance}}:当前空间使用率为{{ $value }}"

5、重启进程使配置生效

$ systemctl restart alertmanager
$ systemctl restart prometheus.service

6、钉钉验证

停掉一个OSD后,钉钉收到如下告警

b932c49513cb45222821ce4743d7ce9106752eb7

重新启动后收到恢复通知

efb7ea345a38084f3df5c1a3160e1fff53310c7f

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
1天前
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
|
14天前
|
Prometheus 监控 Cloud Native
prometheus监控ceph集群环境
文章介绍了如何使用Prometheus监控Ceph集群环境,包括启用Prometheus模块、验证模块启用成功、访问Ceph的exporter、修改Prometheus配置文件、热加载配置,以及Grafana采集数据的方法。同时,还涵盖了监控Ceph集群宿主机的步骤,如在所有节点安装node-exporter、修改Prometheus配置文件、热加载配置,以及Grafana采集数据。
40 6
|
13天前
|
Prometheus 监控 Cloud Native
Ceph Reef(18.2.X)的内置Prometheus监控集群
这篇文章是关于Ceph Reef(18.2.X)版本中内置Prometheus监控集群的使用方法,包括如何查看集群架构、访问Prometheus、Grafana、Node-Exporter和Alertmanager的Web界面,以及推荐阅读的自实现Prometheus监控资源链接。
37 2
|
17天前
|
Prometheus 监控 Cloud Native
自定义grafana_table(数据源Prometheus)
综上所述,自定义 Grafana 表格并将 Prometheus 作为数据源的关键是理解 PromQL 的查询机制、熟悉 Grafana 面板的配置选项,并利用 Grafana 强大的转换和自定义功能使数据展示更为直观和有洞见性。随着对这些工具更深入的了解,您将可以创建出更高级的监控仪表盘,以支持复杂的业务监控需求。
55 1
|
19天前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之Grafana安装与配置
prometheus学习笔记之Grafana安装与配置
|
19天前
|
Prometheus 监控 数据可视化
Grafana 插件生态系统:扩展你的监控能力
【8月更文第29天】Grafana 是一个流行的开源平台,用于创建和共享统计数据的仪表板和可视化。除了内置的支持,Grafana 还有一个强大的插件生态系统,允许用户通过安装插件来扩展其功能。本文将介绍一些 Grafana 社区提供的插件,并探讨它们如何增强仪表盘的功能性。
28 1
|
19天前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
67 1
|
19天前
|
Prometheus 监控 Cloud Native
Grafana 入门指南:快速上手监控仪表盘
【8月更文第29天】Grafana 是一款开源的数据可视化和监控工具,它允许用户轻松地创建美观的仪表盘和图表,以便更好地理解和监控数据。无论您是需要监控系统性能指标、应用程序日志还是业务关键指标,Grafana 都能提供灵活而强大的解决方案。本指南将带领您快速上手 Grafana,包括安装、配置以及创建第一个监控面板。
67 1
|
19天前
|
Prometheus 监控 Cloud Native
Spring Boot 性能护航!Prometheus、Grafana、ELK 组合拳,点燃数字化时代应用稳定之火
【8月更文挑战第29天】在现代软件开发中,保证应用性能与稳定至关重要。Spring Boot 作为流行的 Java 框架,结合 Prometheus、Grafana 和 ELK 可显著提升监控与分析能力。Prometheus 负责收集时间序列数据,Grafana 将数据可视化,而 ELK (Elasticsearch、Logstash、Kibana)则管理并分析应用日志。通过具体实例演示了如何在 Spring Boot 应用中集成这些工具:配置 Prometheus 获取度量信息、Grafana 显示结果及 ELK 分析日志,从而帮助开发者快速定位问题,确保应用稳定高效运行。
32 1
|
13天前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
25 0