一、Prometheus集成Grafana可视化监控安装详解

目录

一、部署环境介绍

二、Prometheus部署

1、下载安装

2、添加系统服务,设置服务开机自启

3、开启防火墙端口

三、Prometheus登录

1、监控指标

2、监控界面

四、Prometheus参数配置

1、Prometheus配置文件

2、数据存储流程

五、安装监控节点

1、node_exporter安装配置

2、Prometheus添加node_exporter节点

3、查看已监听主机

六、Grafana部署

1、下载安装

2、添加系统服务

3、开启防火墙端口

七、Grafana登录

八、Prometheus集成Grafana可视化监控

1、创建数据源

2、导入监控面板

3、导入完成

九、alertmanager安装配置

1、Alertmanager介绍

2、下载安装 

3、配置alertmanager告警方式(邮箱、钉钉、微信)

4、使用amtool检查配置

5、添加系统服务

6、Alertmanager登录

7、Prometheus配置

8、检查告警配置


一、部署环境介绍

主机角色

系统版本

IP地址

备注

Prometheus Server

Grafana Server

Alertmanager

CentOS7.6

172.27.30.94

Prometheus服务器
Grafana服务器

Alertmanager服务

node_exporter

CentOS7.6

172.27.30.92

被监控主机

node_exporter

CentOS7.6

172.27.30.85

被监控主机

二、Prometheus部署

1、下载安装

###下载安装包
[root@test tmp]# wget https://github.com/prometheus/prometheus/releases/download/v2.35.0-rc0/prometheus-2.35.0-rc0.linux-amd64.tar.gz[root@test tmp][root@test tmp]
###解压安装包
[root@test tmp]# tar xvf prometheus-2.35.0-rc1.linux-amd64.tar.gz -C /home/
[root@test home]# mv prometheus-2.35.0-rc1.linux-amd64 prometheus

###运行Prometheus
#第一种方法,传统启动(更新配置需重启服务生效)
[root@test prometheus]# ./prometheus --config.file=prometheus.yml
#第二种方法,热加载配置(更新配置不需重启服务)
[root@test prometheus]# ./prometheus --config.file=prometheus.yml --web.enable-lifecycle
[root@test ~]# curl -X POST http://localhost:9090/-/reload    //更新配置后可使用此命令热加载

2、添加系统服务,设置服务开机自启

###创建启动文件
[root@test system]# vi /usr/lib/systemd/system/prometheus.service 
[Unit]
Description=prometheus is service

[Service]
Type=simple
ExecStart=/home/prometheus/prometheus --config.file=/home/prometheus/prometheus.yml --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
[root@test system]# systemctl daemon-reload
###启动服务
[root@test system]# systemctl restart prometheus
[root@test system]# systemctl enable prometheus

3、开启防火墙端口

###防火墙开通9090端口
[root@test ~]# firewall-cmd --permanent --add-port=9090/tcp
[root@test ~]# firewall-cmd --reload

三、Prometheus登录

1、监控指标

默认地址:http://172.27.30.94:9090/metrics  

2、监控界面

默认地址:http://172.27.30.94:9090/graph  

四、Prometheus参数配置

1、Prometheus配置文件

[root@test ~]# cat /home/prometheus/prometheus.yml 
# my global config
global:
  scrape_interval: 15s # 默认15s 全局每次数据收集的间隔
  evaluation_interval: 15s # 规则扫描时间间隔是15秒,默认不填写是 1分钟
  #scrape_timeout: 5s    #超时时间
	#external_labels: # 用于外部系统标签的,不是用于metrics(度量)数据
  # 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"  //任务目标名,可以理解成分组,每个分组包含具体的target组员

    # metrics_path defaults to '/metrics'		//抓取路径,默认/metrics
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
[root@test ~]# 

global:  全局配置(如果有内部单独设定,会覆盖这个参数)
alerting: 告警插件定义。主要是指定prometheus将报警规则推送到指定的alertManager实例地址rule_files: 告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现。
scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现。prometheus的数据采集通过此片段配置
remote_writer:指定后端的存储的写入地址
remote_reader:指定后端的存储的读取api地址。

2、数据存储流程

Prometheus运行后会生成“data”目录,Prometheus内存和硬盘都是以为KB为单位分块存储的。

在Prometheus的世界中,无论是内存还是磁盘,它都是以1KB单位分成块来操作的。

整体流程是 抓取数据 -> 写到head chunk,写满1KB,就再生成新的块,完成的块,是不可再变更的 -> 根据配置文件的设置,有一部份chunk会被保留在内存里,按照LRU算法,定期将块写进磁盘文件内。

[root@test prometheus]# tree /home/prometheus/data/
/home/prometheus/data/
├── chunks_head
│   └── 000001
├── queries.active
└── wal
    ├── 00000000
    ├── 00000001
    └── 00000002

2 directories, 5 files

五、安装监控节点

1、node_exporter安装配置

        Node-exporter 可以采集机器(物理机、虚拟机、云主机)的监控指标数据,能够采集到的指标包括cpu、内存、磁盘、网络、文件数等信息。

###下载node_exporter包
[root@node ~]#wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
[root@node ~]# tar xvf node_exporter-1.3.1.linux-amd64.tar.gz -C /home/
[root@node ~]# mv /home/node_exporter-1.3.1.linux-amd64 /home/node_exporter
###创建node_exporter启动文件
[root@node ~]# vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=prometheus node_exporter

[Service]
Type=simple
ExecStart=/home/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
MemoryLimit=300M			//内存最大占用300M
CPUQuota=100%					//最多占用一个CPU线程

[Install]
WantedBy=multi-user.target

"/usr/lib/systemd/system/node_exporter.service" [New] 15L, 266C written
####重新加载启动文件目录,并设置开机自启
[root@node ~]# systemctl daemon-reload
[root@node ~]# systemctl start node_exporter
[root@node ~]# systemctl enable node_exporter

注意:被控节点防火墙需要放通9100端口

2、Prometheus添加node_exporter节点

[root@test node_exporter]# vi /home/prometheus/prometheus.yml 
  - job_name: "agent"
    static_configs:
      - targets: ["172.27.30.92:9100","172.27.30.85:9100"
[root@test node_exporter]# curl -X POST http://172.27.30.94:9090/-/reload

3、查看已监听主机

登录Prometheus,在Targets下可查看已监听到的主机

六、Grafana部署

1、下载安装

        Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。

###官网下载较慢,在清华镜像站下载
[root@test ~]# wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-8.4.6-1.x86_64.rpm
###安装grafana
[root@test ~]# yum localinstall -y grafana-8.4.6-1.x86_64.rpm

2、添加系统服务

###启动grafana,设置开机自启
[root@test ~]# systemctl start grafana-server
Warning: grafana-server.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@test ~]# systemctl enable grafana-server

3、开启防火墙端口

###开通防火墙3000端口
[root@test ~]# firewall-cmd --permanent --add-port=9100/tcp

七、Grafana登录

grafana默认登录的管理员账号密码都是:admin  默认端口3000

八、Prometheus集成Grafana可视化监控

1、创建数据源

Home——DATA SOURCE

添加配置Prometheus数据源,修改Prometheus的URL,保存提交

2、导入监控面板

Grafana 官方和社区对已经做好了常用的 DashBoard,可以在官网通过下载json文件或copy id将其导入到自己grafana面板。(熟练后可以自己创建编辑模板)

官网:Dashboards | Grafana Labs 

选择Prometheus数据源,根据需求搜索相关模板

复制DashBoard模板id

通过Grafana + 图标导入(import)。输入复制的DashBoard模板id,选择数据源保存即可。

3、导入完成

九、alertmanager安装配置

1、Alertmanager介绍

Alertmanager是Prometheus的一个报警通知组件,需要结合Prometheus使用。Prometheus将监测到的异常事件发送给Alertmanager,Alertmanager发送异常事件的通知(邮件、钉钉、微信等)。

prometheus触发一条告警的过程:

        prometheus—>触发阈值—>超出持续时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等。

Alert的三种状态:

pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间。改状态下不发送报警。

firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。

inactive:既不是pending也不是firing的时候状态变为inactive

2、下载安装 

[root@test ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
[root@test ~]# tar xvf alertmanager-0.24.0.linux-amd64.tar.gz -C /home/
[root@test ~]# mv /home/alertmanager-0.24.0.linux-amd64 /home/alertmanager
[root@test ~]# /home/alertmanager/alertmanager --version
alertmanager, version 0.24.0 (branch: HEAD, revision: f484b17fa3c583ed1b2c8bbcec20ba1db2aa5f11)
  build user:       root@265f14f5c6fc
  build date:       20220325-09:31:33
  go version:       go1.17.8
  platform:         linux/amd64

3、配置alertmanager告警方式(邮箱、钉钉、微信)

配置邮箱告警

### global:全局配置,主要配置告警方式,如邮件、webhook等。
[root@grafana home]# cat /home/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m		//处理超时,默认5min
  smtp_smarthost: 'smtp.ssitg.com:25'		//邮件发送服务器
  smtp_from: 'jifang@ssitg.com'		//邮件发送地址
  smtp_auth_username: 'jifang@ssitg.com'	//邮件发送地址用户名
  smtp_auth_password: 'Qwer.com123'		//邮件发送地址密码
  smtp_require_tls: false  //是否使用 tls,根据环境不同,来选择开启和关闭。

templates:		//告警模板位置
  - '*.tmp'

###路由分组
route:		//设置报警的分发策略
  group_by: ['alertname']		//用于分组聚合,对告警通知按标签(label)进行分组
  group_wait: 30s  //在组内等待所配置的时间,如果同组内30秒内出现相同报警,在一个组内出现。
  group_interval: 5m	//如果组内内容不变化,合并为一条警报信息,5m后发送。
  repeat_interval: 1h		//发送报警间隔,如果指定时间内没有修复,则重新发送报警。
  receiver: 'email'   //配置告警消息接收者,与下面配置的对应。例如常用的 email、wechat、slack、webhook 等消息通知方式。

receivers:   //配置报警信息接收者信息
  - name: 'email'
    email_configs:
    - to: '{{ template "email.to" . }}'		//接收警报的email(调用模板文件中的)
      html: '{{ template "email.to.html" . }}'  //发送邮件的内容(调用模板文件中的)
      send_resolved: true  //故障恢复后通知

inhibit_rules:		// 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)
  - source_match:		//源标签警报触发时抑制含有目标标签的警报,在当前警报匹配 status: 'High'
      severity: 'critical'
    target_match:
      severity: 'warning'  //目标标签值正则匹配,可以是正则表达式如: ".*MySQL.*"
    equal: ['alertname', 'dev', 'instance']  // 确保这个配置下的标签内容相同才会抑制,也就是说警报中必须有这三个标签值才会被抑制。

创建邮箱模板

###创建邮箱模板配置
[root@grafana home]# vi /home/alertmanager/alert.tmp
{{ define "email.from" }}jifang@ssitg.com{{ end }}
{{ define "email.to" }}licl@ssitg.com{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
=========end==========<br>
{{ end }}
{{ end }}

4、使用amtool检查配置

[root@test alertmanager]# /home/alertmanager/amtool check-config  /home/alertmanager/alertmanager.yml
Checking '/home/alertmanager/alertmanager.yml'  SUCCESS
Found:
 - global config
 - route
 - 1 inhibit rules
 - 1 receivers
 - 1 templates
  SUCCESS

[root@test alertmanager]# 

5、添加系统服务

###创建启动文件
[root@test system]# vi /usr/lib/systemd/system/alertmanager.service 
[Unit]
Description=alertmanager is service

[Service]
Type=simple
ExecStart=/home/alertmanager/alertmanager --config.file=/home/alertmanager/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
[root@test system]# systemctl daemon-reload
###启动服务
[root@test system]# systemctl restart prometheus
[root@test system]# systemctl enable prometheus

6、Alertmanager登录

默认地址:http://172.27.30.94:9093

7、Prometheus配置

修改Prometheus配置文件

###配置Prometheus配置文件
[root@grafana ~]# vi /home/prometheus/prometheus.yml
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - 172.27.30.94:9093  //指定Alertmanager 的地址
rule_files:   //指定报警规则文件
    - rules/*.yml
 ###重新加载Prometheus配置
[root@grafana ~]# curl -X POST http://localhost:9090/-/reload

创建报警规则

###编辑报警规则文件
[root@grafana ~]# mkdir /home/prometheus/rules
[root@grafana ~]# vi /home/prometheus/rules/node_alived.yml
groups:
- name: 实例存活告警规则
  rules:
  - alert: 实例存活告警
    expr: up == 0
    for: 1m
    labels:
      user: prometheus
      severity: warning
    annotations:
      summary: "主机宕机 !!!"
      description: "该实例主机已经宕机超过一分钟了。"
- name: 内存报警规则
  rules:
  - alert: 内存使用率告警
    expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "服务器可用内存不足。"
      description: "内存使用率已超过80%(当前值:{{ $value }}%)"
- name: CPU报警规则
  rules:
  - alert: CPU使用率告警
    expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "CPU使用率正在飙升。"
      description: "CPU使用率超过80%(当前值:{{ $value }}%)"
- name: 磁盘使用率报警规则
  rules:
  - alert: 磁盘使用率告警
    expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80
    for: 20m
    labels:
      severity: warning
    annotations:
      summary: "硬盘分区使用率过高"
      description: "分区使用大于80%(当前值:{{ $value }}%)"
 
 ###重新加载配置文件
 [root@grafana ~]# curl -X POST http://localhost:9090/-/reload

8、检查告警配置

登陆prometheus的UI界面,查看Alerts规则

模拟服务器宕机

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值