linux之prometheus+grafana

Prometheus介绍

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合, 由go语言开发。 适合监控容器平台, 因为kubernetes(俗称k8s)的流行带动了prometheus的发展。 PS:由于目前还未学习容器,所以在今天的课程里使用prometheus监控仍然监控物理服务器。

官方网站: https://prometheus.io/

时序数据库介绍

  • 关系型 mysql,oracle,sql server,sybase,db2,access等
  • 非关系型(nosql) key-value memcache redis etcd
  1. 文档型 mongodb elasticsearch
  2. 列式 hbase
  3. 时序 prometheus
  4. 图形数据库 Neo4j

时间序列数据(TimeSeries Data) 

按照时间顺序记录系统、设备状态变化的数据被称为时序数据.

时序数据主要的特点
  • 数据带有时间属性,且数据量随着时间递增
  • 大都为插入操作较多且无更新的需求,插入数据多,每秒钟插入数据可到达千万甚至是上亿条
  • 分析过去时序数据可以做成多纬度报表,揭示其趋势性、规律性、异常性 分析时序数据趋势可以做大数据分析,机器学习,实现预测和预警
  • 能够按照条件筛选数据, 也可以按照时间范围统计,聚合,展示数据

常见应用场景

  • 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数 据记录下来做分析。
  • 某一个地区的各车辆的行驶轨迹数据 传
  • 统证券行业实时交易数据
  • 实时运维监控数据等

prometheus的主要特性

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

prometheus结构架构图

prometheus监控

需要准备三台主机,修改其主机名,互绑IP

server,agent1,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.50	server.example.com	server
192.168.100.10	agent.example.com	agent
192.168.100.50	grafana.example.com	grafana

[root@server ~]# scp /etc/hosts root@192.168.100.10:/etc/hosts
[root@server ~]# scp /etc/hosts root@192.168.100.30:/etc/hosts

 安装prometheus

下载地址: https://prometheus.io/download/ (请使用共享的软件版本,以免出现不兼容问题)

安装 

二进制版解压就能用,不需要编译

[root@server ~]# ls
anaconda-ks.cfg  prometheus-2.54.0.linux-amd64.tar.gz
[root@server ~]# tar -zxvf prometheus-2.54.0.linux-amd64.tar.gz -C /usr/local



[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

查看配置文件

[root@server ~]# egrep -n : /usr/local/prometheus/prometheus.yml | awk -F'#' '{print $1}'
2:global:                                 全局配置段
3: scrape_interval: 15s                      每15s抓取(采集)数据一次
4: evaluation_interval: 15s                 每15秒计算一次规则
8:alerting: Alertmanager                    报警相关
9: alertmanagers:
10: - static_configs:
11: - targets:
12:
15:rule_files:                             规则文件列表
19:
21:scrape_configs:                         抓取的配置文件(也就是监控的实例)
23: - job_name: 'prometheus'             监控的实例名称
28: static_configs:
29: - targets: ['localhost:9090']         监控的实例IP与端口,在这里为监控服务器本身

使用默认配置文件启动,加 & 后台符号

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

/ 后台启动/


查看9090端口是否启动
[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                               [::]:*                              

prometheus界面

 通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面

 点击status后点击targets查看呗监控主机

 通过http://服务器IP:9090/metrics可以查看到监控的数据(将localhost换成IP)

这里的metrics你可以类比成zabbix里的监控项

 在web主界面可以通过关键字查询metrics, 并显示图形

虽然prometheus服务器通过9090端口能监控一些metrics,但像cpu负载等这些linux常见的监控项却没 有,需要node_exporter组件。

node_exporter组件可以安装在本机或远程linux主机上。 

监控远程linux主机 

在远程linux主机(被监控端agent1)上安装node_exporter组件

下载地址: https://prometheus.io/download/ (请使用共享的软件版本,以免出现不兼容问题)

安装node_exporter组件

[root@agent ~]# ls
anaconda-ks.cfg  node_exporter-1.8.2.linux-amd64.tar.gz
[root@agent ~]# tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/



[root@agent ~]# cd /usr/local/
[root@agent local]# ls
bin  etc  games  include  lib  lib64  libexec  node_exporter-1.8.2.linux-amd64  sbin  share  src
[root@agent local]# mv node_exporter-1.8.2.linux-amd64/ node_exporter


 

启动node_exporter, 并验证端口

root@agent local]# nohup /usr/local/node_exporter/node_exporter &


说明: 如果把启动node_exporter的终端给关闭,那么进程也可能会随之关闭。nohup命令可以挂起在后
台,除非杀掉相关进程,否则不会随终端关闭而关闭进程。

nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也可能会随之关闭。nohup命令可以挂
起在后台,除非杀掉相关进程,否则不会随终端关闭而关闭进程。


查看端口9100是否启动

[root@agent 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                128                                 [::]:22                               [::]:*                              
[root@agent local]# 

浏览器访问http://被监控端IP:9100/metrics就可以查看到node_exporter在被监控端收集的 metrics

 回到prometheus服务器的配置文件里添加被监控机器的配置段

[root@server ~]# cd /usr/local/prometheus/
[root@server prometheus]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
[root@server prometheus]# vim prometheus.yml 





  - job_name: "agent"
    static_configs:
      - targets: ["192.168.100.10:9100"]



[root@server prometheus]# egrep -n : /usr/local/prometheus/prometheus.yml | awk -F'#' '{print $1}'
2:global:
3:  scrape_interval: 15s 
4:  evaluation_interval: 15s 
8:alerting:
9:  alertmanagers:
10:    - static_configs:
11:        - targets:
12:          
15:rule_files:
19:
21:scrape_configs:
23:  - job_name: "prometheus"
28:    static_configs:
29:      - targets: ["localhost:9090"]
30:  - job_name: "agent"                 最后加上这三行,取一个job名称来代表被监控的机器
31:    static_configs:
32:      - targets: ["192.168.100.10:9100"]        ///这里改成被监控机器的IP,后面端口接9100

 改完配置文件后,重启服务

[root@server ~]# pkill 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                128                                 [::]:22                               [::]:*           
确认端口没有进程占用

启动

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

查看端口是否启动
[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                               [::]:*    
启动成功

回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标

前面实现了prometheus监控本机9090, 但是还有很多metrics无法监控,比如cpu负载信息等。这个时 候我们在prometheus服务器上也安装node_exporter,并监控

安装方法与前面一样

[root@server ~]# egrep -n : /usr/local/prometheus/prometheus.yml | awk -F'#' '{print $1}'
2:global:
3:  scrape_interval: 15s 
4:  evaluation_interval: 15s 
8:alerting:
9:  alertmanagers:
10:    - static_configs:
11:        - targets:
12:          
15:rule_files:
19:
21:scrape_configs:
23:  - job_name: "prometheus"
28:    static_configs:
29:      - targets: ["localhost:9090"]
30:  - job_name: "agent"
31:    static_configs:
32:      - targets: ["192.168.100.10:9100"]
33:  - job_name: "server"                       // 其他不变,添加这三行
34:    static_configs:
35:      - targets: ["192.168.100.50:9100"]

 启动后查看端口
[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                4096                                   *:9100                                *:*                              
LISTEN          0                128                                 [::]:22   

启动成功

启动prometheus,先要杀死进程

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

启动后查看端口
[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                4096                                   *:9100                                *:*                              
LISTEN          0                128                                 [::]:22                               [::]:*                              
[root@server ~]# 
启动成功

查看web端,成功添加

监控远程mysql

在被管理机agent上安装mysqld_exporter组件

下载地址: https://prometheus.io/download/ (请使用共享的软件版本,以免出现不兼容问题)

[root@agent ~]# ls
anaconda-ks.cfg  mysqld_exporter-0.15.1.linux-amd64.tar.gz  node_exporter-1.8.2.linux-amd64.tar.gz  nohup.out
[root@agent ~]# 
[root@agent ~]# tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/  //解压
mysqld_exporter-0.15.1.linux-amd64/
mysqld_exporter-0.15.1.linux-amd64/LICENSE
mysqld_exporter-0.15.1.linux-amd64/mysqld_exporter
mysqld_exporter-0.15.1.linux-amd64/NOTICE
[root@agent ~]# mv /usr/local/mysqld_exporter-0.15.1.linux-amd64/ /usr/local/mysqld_exporter
[root@agent ~]# 

在agent上安装mariadb并启动,用于被监控

[root@agent ~]# yum install mariadb-server -y
[root@agent ~]# systemctl restart mariadb
[root@agent ~]# systemctl enable mariadb

授权

说明: 授权ip为localhost,因为不是prometheus服务器来直接找mariadb获取数据,而是prometheus 服务器找mysqld_exporter,mysqld_exporter再找mariadb。所以这个localhost是指的mysql_exporter 的IP

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

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

MariaDB [(none)]> 

创建连接mariadb配置文件

[root@agent ~]# vim /usr/local/mysqld_exporter/.my.cnf
[root@agent ~]# cat /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=linux

启动mysqld_exporter并验证9104端口

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

[root@agent ~]# 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                                   *:9104                                *:*                              
LISTEN          0                128                                 [::]:22                               [::]:*                              
LISTEN          0                80                                     *:3306                                *:*                              

 回到prometheus服务器的配置文件里添加被监控的mariadb的配置段

[root@server ~]# vim /usr/local/prometheus/prometheus.yml 
/// 最后一行加上这个内容
  - job_name: "agent-mariadb"
    static_configs:
      - targets: ["192.168.100.10:9104"]   /被监控的主机的IP,后面接端口9104

重启服务

[root@server ~]# pkill prometheus
[root@server ~]# ss -anlt | grep 9090
[root@server ~]# /usr/local/prometheus/prometheus --
config.file="/usr/local/prometheus/prometheus.yml" &
[root@server ~]# ss -anlt |grep 9090
tcp6 0 0 :::9090 :::* LISTEN 76661/prometheus

回到web管理界面 --》点Status --》点Targets --》可以看到监控mariadb了

可以查看mariadb连接数

grafana安装与登录 

在grafana服务器上安装grafana

下载地址:https://grafana.com/grafana/download (请使用共享的软件版本,以免出现不兼容问题)

拷贝软件包到grafana服务器上安装

[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 scrip

启动grafana,并验证端口

[root@grafana ~]# systemctl start 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                128                                 [::]:22                               [::]:*                              
LISTEN          0                4096                                   *:3000                                *:*                              


//3000 已启动

通过浏览器访问 http:// grafana服务器IP :3000登录,使用默认的admin用户,admin密码就可以登陆 了

默认用户和密码都是admin 

登录进去以后会要求设置新的密码

 设置prometheus为grafana数据源

把prometheus服务器收集的数据做为数据源添加到grafana,让grafana可以得到prometheus的数据。

 

 

grafana实现自定义监控cpu负载

 

 

 保存

最后在dashboard可以查看到

 导入json模板实现mysql监控

 

 

 

 grafana+onealert报警

prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写(对运维来说不友好)。 所以我这里选用grafana+onealert报警。 注意: 实现报警前把所有机器时间同步再检查一遍

grafana对接onealert

在onealert里添加grafana应用

官方网站: http://www.onealert.com

增加grafana应用

 此时需要在grafana中配置Webhook URL。

按照睿象云的操作步骤去完成

 

 操作如下

 

测试的时候邮箱会收到报警信息

 

此时就对接成功

配置通知策略

这一个报警通知方式设置为短信 

 这一个选择邮件

测试

mysql连接数超过3

创建alert

 自定义报警规则

这里平均值写3就行了,因为要测试mysql连接数

 

保存后,进行验证,在终端多连接几台mysql

 

此时查看手机信息和邮件

 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你!要在Linux上搭建PrometheusGrafana,你可以按照以下步骤进行操作: 1. 首先,确保你已经在Linux服务器上安装了Docker和Docker Compose。如果没有安装,可以参考官方文档进行安装。 2. 创建一个新的目录来存放PrometheusGrafana的配置文件。进入该目录并创建一个名为docker-compose.yml的文件。 3. 打开docker-compose.yml文件,并添加以下内容: ```yaml version: '3' services: prometheus: image: prom/prometheus volumes: - ./prometheus:/etc/prometheus command: - --config.file=/etc/prometheus/prometheus.yml ports: - 9090:9090 grafana: image: grafana/grafana ports: - 3000:3000 ``` 上述配置将创建两个服务:PrometheusGrafanaPrometheus服务将监听9090端口,Grafana服务将监听3000端口。 4. 在同一目录下创建一个名为prometheus目录,用于存放Prometheus的配置文件。进入prometheus目录,并创建一个名为prometheus.yml的文件。 5. 打开prometheus.yml文件,并添加以下内容: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] ``` 上述配置将告诉Prometheus每隔15秒抓取一次本地主机的metrics信息。 6. 返回到docker-compose.yml文件所在目录,并在终端中运行以下命令启动PrometheusGrafana容器: ``` docker-compose up -d ``` 这将在后台启动容器。 7. 等待一段时间,然后在浏览器中访问http://服务器IP:3000,会看到Grafana的登录页面。 8. 使用默认用户名(admin)和密码(admin)登录Grafana。 9. 在Grafana中,点击左侧面板上的"Configuration"选项,然后选择"Data Sources"。 10. 点击"Add data source"按钮,选择"Prometheus"作为数据源类型。 11. 在"HTTP"选项卡中,输入Prometheus服务的URL,即http://localhost:9090。 12. 点击"Save & Test"按钮,确保连接正常。 现在,你已经成功搭建了PrometheusGrafana。你可以开始创建仪表盘和监控指标了。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值