53、K8S-监控机制-Prometheus、Grafana部署

发布时间 2023-04-09 16:12:53作者: 小粉优化大师

Kubernetes学习目录

1、Prometheus-部署

1.1、准备软件

1.1.1、下载软件地址

prometheus https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz

alertmanager https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz

blackbox_exporter https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz

mysqld_exporter https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz

node_exporter https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

pushgateway【暂时没有用到】 https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz

grafana https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.22.linux-amd64.tar.gz

1.1.2、开始下载软件

mkdir /data/{server,softs} -p && cd /data/softs
wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
wget https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.22.linux-amd64.tar.gz

1.2、安装prometheus

1.2.1、解压软件

mkdir /data/server/prometheus && tar xvf prometheus-2.43.0.linux-amd64.tar.gz -C /data/server/prometheus
ln -s /data/server/prometheus-2.43.0.linux-amd64 /data/server/prometheus

1.2.2、配置文件解析

prometheus-server ~]# cat /data/server/prometheus/etc/prometheus.yml | grep -Ev '^#|^$'
global:
  scrape_interval: 15s     # 每15秒抓取一次。默认值为每1分钟
  evaluation_interval: 15s # 每15秒评估一次规则。默认值为每1分钟
  # scrape_timeout is set to the global default (10s). # 捉取的超时时间
alerting:                  # 指定 prometheus 将报警规则推送到指定的alertmanager 实例地址
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

rule_files:                # prometheus 根据这些规则信息,会推送报警信息到alertmanager中。
  # - "first_rules.yml"
  # - "second_rules.yml"
  
scrape_configs:  # 一个 scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["localhost:9090"]

# 目前保持默认配置文件即可

1.2.3、环境变量配置

cat >/etc/profile.d/prometheus.sh<<'EOF'
#!/bin/bash
export PROMETHEUS_HOME=/data/server/prometheus
export PATH=$PATH:${PROMETHEUS_HOME}/bin
EOF
source /etc/profile.d/prometheus.sh
chmod +x /etc/profile.d/prometheus.sh

1.2.4、设置systemd

cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
[Unit]
Description=prometheus server project
After=network.target
[Service]
Type=simple
ExecStart=/data/server/prometheus/bin/prometheus \
--config.file=/data/server/prometheus/etc/prometheus.yml \
--storage.tsdb.path=/data/server/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

# 注意:其它的参数,我们可以基于prometheus --help 查看更多

1.2.5、启动服务

systemctl daemon-reload
systemctl start prometheus.service
systemctl status prometheus.service
systemctl enable prometheus.service

prometheus-server ~]# netstat -tunlp | grep -i prom
tcp6       0      0 :::9090                 :::*                    LISTEN      16825/prometheus 

1.2.6、总结

Prometheus部署
- 软件解压、环境变量配置、配置文件修改、服务配置、启动服务

1.3、Prometheus-Web界面简介

1.3.1、访问:http://192.168.10.34:9090-Web页面报错的处理

报错信息:
Warning: Error fetching server time: Detected 23074.275000095367 seconds time difference between your browser and the server.
Prometheus relies on accurate time and time drift might cause unexpected query results. 原因:
由于数据的一致性原因,prometheus 所有的数据都是使用的 UTC 时间,所以我们默认打开的dashboard 中,可能会有这样一个警告,我们需要在查询的时候指定我们当前的时间才可以。 解决方法: 同步服务器的时间,刷新页面即可解决。
yum install ntpdate -y timedatectl set-timezone Asia/Shanghai cat >> /var/spool/cron/root <<'EOF' */1 * * * * /sbin/ntpdate ntp5.aliyun.com &>/dev/null EOF

1.3.2、Web界面菜单介绍

一级目录
 Alerts    # Prometheus的告警信息菜单
 Graph     # Prometheus的图形展示界面,这是prometheus默认访问的界面
 Status    # Prometheus的状态数据界面
 Help      # Prometheus的帮助信息界面

Status子菜单:
 Runtime & Build Information  # 服务主机的运行状态信息及内部的监控项基本信息
 TSDB Status                  # 时间序列数据库状态
 Command-Line Flags           # 启动时候从配置文件中加载的属性信息
 Configuration                # 配置文件的具体内容(yaml格式)
 Rules                        # 查询、告警、可视化等数据分析动作的规则记录
 Targets                      # 监控的目标对象,包括主机、服务等以endpoint形式存在
 Service Discovery            # 自动发现的各种Targets对象列表

1.3.3、Graph-详细介绍 

1.3.4、显示Graph图形

1.3.5、总结

界面简介
- 一级菜单、二级菜单、简单操作

2、Grafana-部署

2.1、简介

Grafana是一个开源的度量分析与可视化套件,它基于go语言开发。经常被用作基础设施的时间序列数据和应用程序分析的可视化,应用场景非常多。

Grafana不仅仅支持很多类型的时序数据库数据源,比如Graphite、InfluxDB、Prometheus、Elasticsearch等,虽然每种数据源都有独立的查询语言和能力,但是Grafana的查询编辑器支持所有的数 据源,而且能很好的支持每种数据源的特性。通过该查询编辑器可以对所有数据进行整合,而且还可以在同一个dashboard上进行综合展示。
尤其是Grafana最具特色的就是各种各样漂亮的可视化界面,在Grafana提供了各种定制好的,可以直接给各种软件直接使用的展示界面模板,我们可以在 https:
//grafana.com/dashboards/ 页面查询到我们想要的各种dashboard模板。
默认监听于TCP协议的3000端口,支持集成其他认证服务,且能够通过
/metrics输出内建指标;

2.2、Grafana部署

2.2.1、解压安装

tar xvf grafana-enterprise-8.5.22.linux-amd64.tar.gz -C /data/server/
ln -s /data/server/grafana-8.5.22 /data/server/grafana
mkdir /data/server/grafana/{data,log,plugins} -p

2.2.2、修改配置文件

# 修改配置文件
]# vi /data/server/grafana/conf/sample.ini 
[paths]
data = /data/server/grafana/data
logs = /data/server/grafana/log
plugins = /data/server/grafana/plugins

2.2.3、设置systemd

cat > /usr/lib/systemd/system/grafana.service << 'EOF'
[Unit]
Description=grafana Server
After=network.target
[Service]
User=root
Group=root
Environment="grafana_home=/data/server/grafana"
ExecStart=/bin/bash -c "${grafana_home}/bin/grafana-server \
-config ${grafana_home}/conf/sample.ini \
-homepath ${grafana_home}"
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

2.2.4、启动服务

systemctl daemon-reload
systemctl start grafana

prometheus-server ~]# netstat -tunlp | grep gra
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::3000                 :::*                    LISTEN      17293/grafana-serve 

2.2.5、配置环境变量

cat >/etc/profile.d/grafana.sh<<'EOF'
#!/bin/bash
export PROMETHEUS_HOME=/data/server/grafana
export PATH=$PATH:${PROMETHEUS_HOME}/bin
EOF
source /etc/profile.d/grafana.sh
chmod +x /etc/profile.d/grafana.sh

2.2.6、插件的安装

# 查询远程插件
grafana-cli plugins list-remote

# 安装面板插件
grafana-cli plugins install grafana-piechart-panel

# 查询已安装插件
grafana-cli plugins ls

# 重启服务生效插件
systemctl restart grafana

2.2.7、浏览器访问

http://192.168.10.34:3000/

默认帐号/密码 : admin/admin

2.2.8、重置密码

2.2.9、登陆成功-进入主页

3、prometheus、grafana结合

3.1、grafana增加prometheus数据源

3.1.1、配置数据源

3.1.2、增加数据源

3.1.3、选择prometheus的数据源

3.1.4、配置prometheus数据源地址

3.1.5、保存并且测试

 

3.1.6、查询配置完成的数据源

3.2、grafana导入dashboard模板

3.2.1、查询模板的地址

# 官网地址查询对应的显示模板
https://grafana.com/grafana/dashboards/

# 这里使用
https://grafana.com/grafana/dashboards/1860

注意:
选择dashboard的时候,一定要选择合适版本的否则会导致无法正常使用

3.2.2、选择导入

3.2.3、在线加载1860模板配置

3.2.4、给1860模板选择prometheus数据源并且导入

3.2.5、查询1860显示的模板

为什么没有显示具体数据图形,因为我们还没有安装node_exporter,后面我们安装后,再查询看看