prometheus + grafana + 告警

news2024/11/15 1:56:33

配置环境

准备三台主机,将三台主机的信息分别写入/etc/hosts文件中
192.168.100.115 server.example.com server
192.168.100.116 agent1.example.com agent1
192.168.100.117 grafana.example.com grafana

[root@server ~]# cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.115  server.example.com   server
192.168.100.116  agent1.example.com   agent1
192.168.100.117  grafana.example.com  grafana

三台主机都需要有以下操作
安装工具

yum -y install tar lrzsz chrony

时钟同步

systemctl restart chronyd
systemctl enable chronyd
hwclock -w

prometheus

一、简介

Prometheus的主要特性有:

  1. 多维度数据模型
  2. 灵活的查询语言
  3. 不依赖分布式存储,单个服务器节点是自主的
  4. 以HTTP方式,通过pull模型拉去时间序列数据
  5. 也可以通过中间网关支持push模型
  6. 通过服务发现或者静态配置, 来发现目标服务对象
  7. 支持多种多样的图表和界面展示

pormetheus原理架构图

在这里插入图片描述

二、安装prometheus

1、server端安装

将prometheus包文件拖进来

[root@server ~]# rz -E
rz waiting to receive.
[root@server ~]# ls
anaconda-ks.cfg  -e  -i.bak  prometheus-2.54.0.linux-amd64.tar.gz

//prometheus这个包文件是二进制文件,解压就能用
[root@server ~]# tar -zxvf prometheus-2.54.0.linux-amd64.tar.gz -C /usr/local/

//文件名字太长,改一下文件名
[root@server ~]# cd /usr/local/
[root@server local]# ls
bin  etc  games  include  lib  lib64  libexec  prometheus-2.54.0.linux-amd64  sbin  share  src
[root@server local]# mv prometheus-2.54.0.linux-amd64 prometheus
[root@server local]# ls
bin  etc  games  include  lib  lib64  libexec  prometheus  sbin  share  src

2、启动prometheus

直接使用默认配置文件启动, 建议加&后台符号,否则当前命令窗口会被前台占用

[root@server local]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

//查看9090端口是否启动
[root@server local]# ss -antl
State             Recv-Q            Send-Q                       Local Address:Port                         Peer Address:Port            Process            
LISTEN            0                 128                                0.0.0.0:22                                0.0.0.0:*                                  
LISTEN            0                 4096                                     *:9090                                    *:*                                  
LISTEN            0                 128                                   [::]:22                                   [::]:*                          

3、访问prometheusdeweb界面

通过浏览器访问 http://服务器IP:9090 就可以访问到prometheus的主界面
在这里插入图片描述
查看监控主机的信息
在这里插入图片描述

通过 http://服务器IP:9090/metrics 可以查看到监控的数据
说明: 这里的metrics你可以类比成zabbix里的监控项
在这里插入图片描述

在web主界面可以通过关键字查询metrics, 并显示图形
比如process_cpu_seconds_total
在这里插入图片描述
点Graph是查看图形化

三、监控远程linux主机

1、安装node_exporter组件

[root@agent1 ~]# rz -E
rz waiting to receive.
[root@agent1 ~]# ls
anaconda-ks.cfg  -e  -i.bak  node_exporter-1.8.2.linux-amd64.tar.gz
[root@agent1 ~]# tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/

//文件名太长,更改文件名
[root@agent1 ~]# cd /usr/local/
[root@agent1 local]# ls
bin  etc  games  include  lib  lib64  libexec  node_exporter-1.8.2.linux-amd64  sbin  share  src
[root@agent1 local]# mv node_exporter-1.8.2.linux-amd64/ node_exporter/
[root@agent1 local]# ls
bin  etc  games  include  lib  lib64  libexec  node_exporter  sbin  share  src

2、启动node_exporter, 并验证端口

[root@agent1 local]# nohup node_exporter/node_exporter &
[1] 1124
[root@agent1 local]# nohup: ignoring input and appending output to 'nohup.out'

//9100端口启动成功
[root@agent1 local]# ss -anlt
State             Recv-Q            Send-Q                       Local Address:Port                         Peer Address:Port            Process            
LISTEN            0                 128                                0.0.0.0:22                                0.0.0.0:*                                  
LISTEN            0                 128                                   [::]:22                                   [::]:*                                  
LISTEN            0                 4096                                     *:9100                                    *:*                     

3、修改prometheus.yml配置文件并重启服务

[root@server ~]# vim /usr/local/prometheus/prometheus.yml 

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]  //在文件最后写入以下三行
    - job_name: "agent1"    
      static_configs:
        - targets: ["192.168.100.116:9100"]
~                                                            

重启prometheus服务

[root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

//查看进程和端口
[root@server ~]# ps -ef | grep prometheus
root         952     671  0 15:57 pts/0    00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
root         959     671  0 15:58 pts/0    00:00:00 grep --color=auto prometheus
[root@server ~]# ss -anlt
State             Recv-Q            Send-Q                       Local Address:Port                         Peer Address:Port            Process            
LISTEN            0                 128                                0.0.0.0:22                                0.0.0.0:*                                  
LISTEN            0                 4096                                     *:9090                                    *:*                                  
LISTEN            0                 128                                   [::]:22                                   [::]:*                                  

网页刷新一下
在这里插入图片描述

四、监控自己

1、server端安装node_exporter

将包文件拖进来

[root@server ~]# rz -E
rz waiting to receive.
[root@server ~]# ls
anaconda-ks.cfg  data  -e  -i.bak  node_exporter-1.8.2.linux-amd64.tar.gz  prometheus-2.54.0.linux-amd64.tar.gz
[root@server ~]# tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/
//文件名太长了改下名字
[root@server ~]# cd /usr/local/
[root@server local]# ls
bin  data  etc  games  include  lib  lib64  libexec  exporter-1.8.2.linux-amd64  nohup.out  prometheus  sbin  share  src
[root@server local]# mv node_exporter-1.8.2.linux-amd64/ node_exporter/
[root@server local]# ls
bin  data  etc  games  include  lib  lib64  libexec  node_exporter  nohup.out  prometheus  sbin  share  src

2、启动node_exporter

[root@server local]# nohup node_exporter/node_exporter &
[2] 716
[root@server local]# nohup: ignoring input and appending output to 'nohup.out'

[root@server local]# ss -anlt
State          Recv-Q         Send-Q                 Local Address:Port                 Peer Address:Port         Process         
LISTEN         0              128                          0.0.0.0:22                        0.0.0.0:*                            
LISTEN         0              4096                               *:9100                            *:*                            
LISTEN         0              4096                               *:9090                            *:*                            
LISTEN         0              128                             [::]:22                           [::]:*                   
//9100端口启动成功

3、修改prometheus.yml文件并重启服务

[root@server ~]# vim /usr/local/prometheus/prometheus.yml 
//在文件最后写入
  - job_name: "server"
    static_configs:
      - targets: ["192.168.100.115:9100"]
//kill掉这个进程,然后再启动
[root@server ~]# ps -ef | grep prometheus
root         694     669  0 15:30 pts/0    00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
root         802     669  0 15:48 pts/0    00:00:00 grep --color=auto prometheus
[root@server ~]# kill -9 694
[root@server ~]# ps -ef | grep prometheus
root         804     669  0 15:48 pts/0    00:00:00 grep --color=auto prometheus
[1]-  Killed                  /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml"

[root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

刷新以下web界面,这就有了
在这里插入图片描述

五、监控远程mysql

这里我是将mariadb部署在agent1主机上

1、安装mysqld_exporter与mariadb

先将包文件拖进来

[root@agent1 ~]# rz -E
rz waiting to receive.
[root@agent1 ~]# ls
anaconda-ks.cfg  -e  -i.bak  mysqld_exporter-0.15.1.linux-amd64.tar.gz  node_exporter-1.8.2.linux-amd64.tar.gz  nohup.out

//解压包文件
[root@agent1 ~]# tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/
[root@agent1 ~]# cd /usr/local/
[root@agent1 local]# ls
bin  etc  games  include  lib  lib64  libexec  mysqld_exporter-0.15.1.linux-amd64  node_exporter  nohup.out  sbin  share  src
[root@agent1 local]# mv mysqld_exporter-0.15.1.linux-amd64/ mysqld_exporter/
[root@agent1 local]# ls
bin  etc  games  include  lib  lib64  libexec  mysqld_exporter  node_exporter  nohup.out  sbin  share  src

安装mariadb

[root@agent1 local]# yum -y install mariadb-server mariadb
[root@agent1 local]# systemctl restart mariadb.service 
[root@agent1 local]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@agent1 local]# 

2、授权

[root@agent1 local]# mysql
MariaDB [(none)]> grant all ON *.* to 'mysql_monitor'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> exit
Bye

3、 创建连接mariadb配置文件

[root@agent1 ~]# vim /usr/local/mysqld_exporter/.my.cnf

//在文件内写入以下内容
[client]
user=mysql_monitor
password=redhat

4、 启动mysqld_exporter

[root@agent1 ~]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.mycnf=/usr/local/mysqld_exporter/.my.cnf &
[2] 2766
[root@agent1 ~]# nohup: ignoring input and appending output to 'nohup.out'

[2]+  Exit 1                  nohup /usr/local/mysqld_exporter/mysqld_exporter --config.mycnf=/usr/local/mysqld_exporter/.my.cnf
[root@agent1 ~]# ss -anlt
State          Recv-Q         Send-Q                 Local Address:Port                 Peer Address:Port         Process         
LISTEN         0              128                          0.0.0.0:22                        0.0.0.0:*                            
LISTEN         0              128                             [::]:22                           [::]:*                            
LISTEN         0              4096                               *:9100                            *:*                            
LISTEN         0              80                                 *:3306                            *:*             

5、更改prometheus配置文件并重启服务

[root@server ~]# vim /usr/local/prometheus/prometheus.yml
//在文件最后添加信息
  - job_name: "agent1-mariadb"
    static_configs:
      - targets: ["192.168.100.116:9100"]

//重新启动服务
[root@server ~]# ps -ef | grep prometheus
root         806     669  0 15:49 pts/0    00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
root         895     669  0 16:19 pts/0    00:00:00 grep --color=auto prometheus
[root@server ~]# kill -9 806
[root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

刷新web界面,这就有了
在这里插入图片描述

grafana

在这里插入图片描述

一、安装grafana

1、在grafana端安装grafana

[root@grafana ~]# rz -E
rz waiting to receive.
[root@grafana ~]# ls
anaconda-ks.cfg  -e  grafana-6.4.2-1.x86_64.rpm  -i.bak
[root@grafana ~]# rpm -ivh grafana-6.4.2-1.x86_64.rpm 
warning: grafana-6.4.2-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
error: Failed dependencies:
	fontconfig is needed by grafana-6.4.2-1.x86_64
	freetype is needed by grafana-6.4.2-1.x86_64
	urw-fonts is needed by grafana-6.4.2-1.x86_64
	//这里报错是正常的,需要安装依赖包
[root@grafana ~]# yum -y install fontconfig freetype urw-fonts

[root@grafana ~]# rpm -ivh grafana-6.4.2-1.x86_64.rpm 
warning: grafana-6.4.2-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:grafana-6.4.2-1                  ################################# [100%]
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
 sudo /bin/systemctl daemon-reload
 sudo /bin/systemctl enable grafana-server.service
### You can start grafana-server by executing
 sudo /bin/systemctl start grafana-server.service
POSTTRANS: Running script

2、启动grafana

[root@grafana ~]# systemctl restart grafana-server
[root@grafana ~]# systemctl enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
[root@grafana ~]# ss -anlt
State          Recv-Q         Send-Q                 Local Address:Port                 Peer Address:Port         Process         
LISTEN         0              128                          0.0.0.0:22                        0.0.0.0:*                            
LISTEN         0              4096                               *:3000                            *:*                            
LISTEN         0              128                             [::]:22                           [::]:*                  
//3000端口启动,就表名grafana启动成功

二、浏览器访问并添加数据

默认登陆用户和密码均为admin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加完成

三、grafana实现自定义监控cpu负载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这就有了
在这里插入图片描述

grafana+onealert报警

prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写(对运维来说不友好)。
所以我这里选用grafana+onealert报警。

一、 在onealert里添加grafana应用

这里我适使用:http://www.onealert.com
作为告警平台
在这里插入图片描述
在这里插入图片描述

下滑找到
在这里插入图片描述
在这里插入图片描述
配置通知策略
在这里插入图片描述
在grafana增加通知通道
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试结果
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2054583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL 08】内置函数 (带思维导图)

文章目录 🌈 一、日期函数⭐ 1. 常见日期函数⭐ 2. 日期函数使用示例⭐ 3. 日期函数综合案例 🌈 二、字符串函数⭐ 1. 常见字符串函数⭐ 2. 字符串函数使用示例⭐ 3. 字符串函数综合案例 🌈 三、数值函数⭐ 1. 常见数值函数⭐ 2. 数值函数使用…

探索GitHub的无限可能:从注册到Linux环境下的库分支链接

在这个数字化时代,GitHub已成为开发者们不可或缺的宝藏库。无论你是编程新手还是资深开发者,GitHub都能为你打开一扇通往无限创意与协作的大门。今天,就让我们一起踏上这段探索之旅,从GitHub的注册开始,再到如何在Linu…

google transalte api的使用,V2服务账户方式(google-cloud-java)

Google Cloud Translation API 有几个不同的使用方式,其中之一是使用最新的 Google Cloud Client Library。这些库提供了简化的 API,使得与 Google Cloud 服务的交互变得更加容易。 对于gcp平台的创建方式,我记得得绑定真信用卡了&#xff0c…

Debug-021-el-table实现分页多选的效果(切换分页,仍可以保持前一页的选中效果)

前情提要: 这个功能实现很久了,但是一直没有留意如何实现,今天想分享一下。具体就是我们展示table数据的时候,表格中的数据多数情况是分页展示,毕竟数据量太多,分页的确是有必要的。那么我们有业务需要给表…

portswigger的Exploiting DOM clobbering to enable XSS

目录 尝试一下看看可不可以XSS DOM破坏 查看源码确定DOM破坏漏洞点以及代码分析 首先查看/resources/labheader/js/labHeader.js,没有什么作用 然后domPurify这东西是一个过滤框架也没啥子用 看/resources/js/loadCommentsWithDomClobbering.js尝试分析代码(对…

使用Poi-tl对word模板生成动态报告

一、pom依赖问题&#xff1a; <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.2</version> </dependency> 使用 poi-tl 的 1.12.2版本&#xff0c;如果使用了poi依赖&#x…

【编程之路:在 Bug 的迷宫中寻找出口】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Mysql-linux通过rpm安装、linux离线安装mysql

新建用户 useradd mysql passwd mysqlmysql用户增加sudo权限 Linux-创建用户、给普通用户sudo权限、设置不需要密码执行sudo 卸载旧版本软件包 卸载mariadb --查询mariadb版本 rpm -qa|grep mariadb --控制台输出 mariadb-libs-5.5.68-1.el7.x86_64 --执行卸载 sudo rpm -…

系规学习第13天

1、规划设计的主要目的不包括() A、设计满足业务需求的IT服务 B、设计SLA、测量方法和指标。 C、设计服务过程及其控制方 D、设计实施规划所需要的进度管理过程 [答案] D [解析]本题考察的是规划设计的目的&#xff0c;建议掌握。 (1)设计满足业务需求的IT服务。 (2)设…

Python计算机视觉 第1章-基本的图像操作和处理

Python计算机视觉 第1章-基本的图像操作和处理 本章讲解操作和处理图像的基础知识&#xff0c;将通过大量示例介绍处理图像所需的Python工具包&#xff0c;并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。 1.1 PIL&#xff1a;Python图像处理类…

零基础学习Redis(4) -- 常用数据结构介绍

我们之前提到过&#xff0c;redis中key只能是字符串类型&#xff0c;而value有多种类型。 redis中的数据结构有自己独特的实现方式能根据特定的场景进行优化 1. string(字符串) 内部编码&#xff1a; raw&#xff1a;最基本的字符串&#xff0c;类比我们平常使用的Stringin…

MFC读取 Excel

2.添加读取excel数据的接口类&#xff1a; 添加读取excel的接口类&#xff1a; 3、添加完成后&#xff0c;找到这几个接口类的头文件&#xff0c;注释/删除 下图红框中的引入语句 注意&#xff1a;每个接口类的头文件都需进行处理。 4、添加源文件 excel.h文件&#xff1a; …

Spring websocket并发发送消息异常的解决

https://www.jb51.net/program/297186nkq.htm本文主要介绍了 Spring websocket并发发送消息异常的解决,当多个线程同时尝试通过 WebSocket 会话发送消息时,会抛出异常,下面就来解决一下,感兴趣的可以了解一下https://www.jb51.net/program/297186nkq.htm

centos系统配置转发和iptables使之成为网关

centos系统配置转发和iptables使之成为网关 在当下互联网环境中&#xff0c;有很多内网服务器不能出网&#xff0c;例如安装软件包&#xff0c;更新程序之类的&#xff0c;偶尔会需要出网&#xff0c;下面这种方式就是专门解决这个事情的。 如下配置在 centos 6 7 8 rocky 8 …

FPGA 最小系统 EP2C5T144C8N

参考 &#xff1a; 微雪 ep2c5t 米尔 所需元件&#xff1a; 1.2v 3.3v稳压芯片 7个10k电阻 一个use blast 5v-》3.3v稳压-》1.2v稳压 1.JTAG连接 JTAG连接 NSTATUS nconfig config_done 因为没有外部存储器&#xff0c;直接使用Jtag烧录&#xff0c;从而nconfig 为3.3 &…

全场景——(三)USB开发基础(2)

文章目录 一、USB 描述符1.1 USB 设备状态切换图1.2 标准设备请求1.2.1 SETUP事务的数据格式1.2.2 标准设备请求1.2.3 设备/配置/接口/端点 1.3 描述符1.3.1 设备描述符1.3.2 配置描述符1.3.3 接口描述符1.3.4 端点描述符1.3.5 示例 1.4 设备枚举过程示例 二、USBX 组件2.1 Azu…

Rhinoceros 8 for Mac/Win:重塑三维建模边界的革新之作

Rhinoceros 8&#xff08;简称Rhino 8&#xff09;&#xff0c;作为一款由Robert McNeel & Assoc公司开发的顶尖三维建模软件&#xff0c;无论是对于Mac还是Windows用户而言&#xff0c;都是一款不可多得的高效工具。Rhino 8以其强大的功能、广泛的应用领域以及卓越的性能&…

阿里云发送短信功能(Java)

&#xff08;1&#xff09;注册用户&#xff0c;并且开通短信套餐 &#xff08;2&#xff09; 点击快速学习&#xff0c;然后绑定测试的手机号码。 选用专用测试签名&#xff08;自定义的话阿里可能会验证什么什么的比较麻烦&#xff09; 然后在选取调用API &#xff08;3&…

Excel ——3个实用的随机函数(RAND 、RANDBETWEEN、RANDARRAY)

1、RAND 函数 RAND 函数是一个没有参数的函数&#xff1a;RAND () 返回一个大于等于 0&#xff0c;小于 1 的随机实数。 选中任一单元格&#xff0c;在编辑栏输入公式&#xff1a; 如果要生成 a 与 b 之间的随机数&#xff0c;就用&#xff1a; RAND()*(b-a)a 比如要生成-5…

Docker Compose运行Elasticsearch

前提&#xff1a;确保你已经安装了Docker和Docker Compose 创建项目目录 创建一个目录来存放项目文件 mkdir es cd es 创建docker-compose.yml文件 touch docker-compose.yml version: 3.3 services: elasticsearch: image: docker.elastic.co/elasticsearch/elastics…