hualinux 进阶 prom 1-2.2:prometheus安装(手把手版)

目录

一、安装环境

二、安装prometheus server

2.1 安装prometheus(二进制)

2.2 通过web访问prom

三、node Exporter

3.1 node Exporter安装

3.2 通过web访问 node exporter

四、prom关联node exporter组件

4.1 prometheus配置中关联node exporter

4.2 prom web查看效果

五、Grafana图形展示安装

5.1 Grafana基本概念

5.2 Grafana安装(yum)

5.2.1 Grafana yum安装及启动服务

 5.2.2 web登录Grafana

5.3 配置Grafana监控

5.3.1 配置数据源

5.3.2 添加dashboards仪表盘

5.3.1 查找Prometheus Dashboard 仪表盘

5.3 Grafana中导入Prometheus Dashboard 仪表盘


上篇简单讲了prometheus 相关架构,现在本篇讲prom环境的搭建。

搭建是基于《hualinux 进阶 1.7:kubeadm1.18搭建k8s群集》基础上进行安装的

一、安装环境

搭建是基于《hualinux 进阶 1.7:kubeadm1.18搭建k8s群集》基础上进行安装的,配置如下:

  1. 电脑一始,CPU支持VT,内存≥8G,可用磁盘空间大于60G
  2. 安装VMware Workstation虚拟机,我这里是vm10
  3. 创建3个虚拟机,安装CentOS-8.x-x86_64,我这里是centos8.2

主机名

IP地址(NAT)

IP地址(内网)

描述

vm82

eth0:192.168.128.82

eth1:192.168.3.82

最小化安装,2.6G内存,硬盘系统盘50G 充当master,最少2G内存

最好是3.5G或以上

vm821

eth0:192.168.128.21

eth1:192.168.3.21

最小化安装,2.1G内存,硬盘系统盘50G 充当node节点1

发现2G都卡,最好2.8G或以上

注:因我电脑是8G的,所以我只弄一个master和一个node节点

上篇的构架图中,我只安装蓝色圆圈部分,如下图所示:

prometheus安装:这个是核心组件,肯定要安装的

exporters:中我只选择基础的 node_exporter,相当于zabbix的agent端。

ps:这种需要安装客户端的叫白盒安装,这样会得到很详细的信息。也有不需要安装客户的,只需要在prom服务器上安装blackbox_exporter,就实现状态的获取,叫黑盒。墨盒只能是通过命令或者第三方提供的状态去判断,比如通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控

Grafana:主要是数据展示使用的,prom已经自带web ui默认为9090端口

PS:

在Prometheus的架构设计中, Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics )拉取监控样本数据。

Node Exporter可以采集到系统相关的信息,例如CPU、内存、硬盘等系统信息。Node Exporter采用Golang编写,并粗不存在任何的第三方依赖,只需要下载,解压即可运行。

二、安装prometheus server

在这里我直接使用二进制安装,如果人懒的话,当然也可以使用docker安装,安装在k8s master端上

2.1 安装prometheus(二进制)

打开prometheus下载页 ,我这里是intel cpu 64的系统,所以我下载的是amd64的tar.gz包,目前最新版本为prometheus-2.20.1.linux-amd64.tar.gz,执行命令如下:

mkdir -p /disk1/tools/
cd /disk1/tools/
#下载二进制包
wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
#解压
tar -xf prometheus-2.20.1.linux-amd64.tar.gz
#安装第三方软件统一放
mkdir -p /disk1/app
mv prometheus-2.20.1.linux-amd64 /disk1/app/
cd /disk1/app/
#建立软链接
ln -s prometheus-2.20.1.linux-amd64 prometheus
#配置命令环境,这样可以直接使用
ln -s /disk1/app/prometheus/prometheus /usr/bin/prometheus
ln -s /disk1/app/prometheus/promtool /usr/bin/promtool
ln -s /disk1/app/prometheus/tsdb /usr/bin/tsdb

#建立相关启动服务

#建立存放数据的目录
mkdir -p /disk1/promData

#编写prom启动服务,可以支持start restart stop
cat>/etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus server daemon
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/disk1/app/prometheus/prometheus \\
--config.file=/disk1/app/prometheus/prometheus.yml \\
--storage.tsdb.path=/disk1/promData \\
--web.listen-address=:9090
Restart=on-failure 
[Install]
WantedBy=multi-user.target
EOF
#查看
cat /etc/systemd/system/prometheus.service

#服务
systemctl daemon-reload 
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus

注:也可以写详细一点,具体看prometheus --help,默认指定15天,连接数等,如:

#创建存放数据的目录
mkdir -p /disk1/promData
#创建服务
cat>/etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus server daemon
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/disk1/app/prometheus/prometheus \\
--config.file=/disk1/app/prometheus/prometheus.yml \\
--storage.tsdb.path=/disk1/promData \\
--storage.tsdb.retention.time=15d \\
--web.console.templates=/disk1/app/prometheus/consoles \\
--web.console.libraries=/disk1/app/prometheus/console_libraries \\
--web.max-connections=512 \\
--web.external-url="http:// 192.168.128.82:9090" \\
--web.listen-address=:9090 \\
Restart=on-failure 
[Install]
WantedBy=multi-user.target
EOF
cat /etc/systemd/system/prometheus.service


systemctl daemon-reload 
systemctl start prometheus
#按ctrl+c退出
systemctl status prometheus

PS:启动相关说明,prometheus --help也有说明

选项

说明

ExecStart=/disk1/app/prometheus/prometheus

启动运行Prometheus程序所在的路径

--config.file=/disk1/app/prometheus/prometheus.yml 

指定prometheus.yml配置文件路径

--storage.tsdb.path=/disk1/promData

指定监控指标数据存储的路径

--storage.tsdb.retention.time=15d

历史数据最大保留时间,默认15天

--web.console.templates=/disk1/app/prometheus/consoles

指定控制台模板目录路径

--web.console.libraries=/disk1/app/prometheus/console_libraries

指定控制台库目录路径

--web.max-connections=512

设置最大同时连接数

--web.external-url="http:// 192.168.128.82:9090"

用于生成返回Prometheus的相对和绝对链接地址,可以在后续告警通知内容中直接点击链接地址访问Prometheus Web UI

其格式: http:// {ip或者域名}:9090

--web.listen-address=:9090 

Prometheus默认监控端口

 

2.2 通过web访问prom

打开本地浏览器输入 ip:9090,我这里是192.168.3.82:9090,默认取当 prometheus.yml 文件

PS:也可以在docer环境下安装:

docker run -p 9090:9090 -v /usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

三、node Exporter

3.1 node Exporter安装

node_exporter采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。

我在这里在k8s master和node节点上都安装,因为都要监控,安装命令如下:

#如果没有可以使用mkdir -p /disk1/tools 创建
cd  /disk1/tools/
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar -xf node_exporter-1.0.1.linux-amd64.tar.gz 
#安装第三方软件统一放
mkdir -p /disk1/app
mv node_exporter-1.0.1.linux-amd64 /disk1/app/
cd /disk1/app/
ln -s node_exporter-1.0.1.linux-amd64 node_exporter
#建立命令的软链接,这样就可以直接使用命令了
ln  -s /disk1/app/node_exporter/node_exporter /usr/bin/node_exporter

建立相关服务

#建立相关服务
cat>/etc/systemd/system/node_exporter.service<<EOF
[Unit]
Description=node_exporter
Documentation=https:// prometheus.io/
After=network-online.target
[Service]

Type=simple
User=root
Group=root
ExecStart=/disk1/app/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
cat /etc/systemd/system/node_exporter.service 

#服务重载入
systemctl daemon-reload 
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
#查看端口,默认为9100
netstat -alntp|grep -i listen|grep node_exporter

3.2 通过web访问 node exporter

默认是ip:9100,我这里安装了2个,随便拿一个,我这里用192.168.3.82吧

下图中是一堆监控指标:

 

在web界面上我们可以看到很多相关的系统指标,从指标当中我们可以获得类似相关参数指标信息: 
node_ boot_ time :系统启动时间
node_ cpu :系统CPU使用量
nodedisk :磁盘IO
nodefilesystem :文件系统用量
node_ load1 :系统负载
nodememeory :内存使用量
nodenetwork :网络带宽
nodetime : 当前系统时间
go : node exporter中go相关指标
process_ : node exporter自身进程相关运行指标

...

PS:这个也可以使用docker安装

docker run -d -p 9100:9100 quay.io/prometheus/node-exporter

四、prom关联node exporter组件

4.1 prometheus配置中关联node exporter

prometheus关联组件很简单,只需要在 prometheus.yml  配置文件中 添加多一个job,再在job下添加targets,指定ip:port 即可

我这里机子少,先使用简单的,静态方式,至于动态方式的话,后面可以自己看我推荐的书《Prometheus监控技术与实践》我已经上专到csdn中可以点击下载

操作如下:

cd /disk1/app/prometheus/
#备份配置文件
cp prometheus.yml prometheus.yml.orig

#追加配置
#注意:cat后面是“>>”不是“>”,不要执行 2次
cat>>prometheus.yml<<EOF
  - job_name: 'centos8'
    static_configs:
    - targets: ['192.168.3.82:9100','192.168.3.21:9100']
EOF




#最配置为
[root@vm82 prometheus]# cat prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # 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'

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

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'centos8'
    static_configs:
    - targets: ['192.168.3.82:9100','192.168.3.21:9100']
[root@vm82 prometheus]# 

#重启prometheus

systemctl restart prometheus
#按ctrl+c退出
systemctl status prometheus

PS:prometheus.yaml配置文件说明

global:
  #默认情况下抓取目标的频率.
  [ scrape_interval: <duration> | default = 1m ]

  # 抓取超时时间.
  [ scrape_timeout: <duration> | default = 10s ]

  # 评估规则的频率.
  [ evaluation_interval: <duration> | default = 1m ]

  # 与外部系统通信时添加到任何时间序列或警报的标签
  #(联合,远程存储,Alertma# nager).
  external_labels:
    [ <labelname>: <labelvalue> ... ]

# 规则文件指定了一个globs列表. 
# 从所有匹配的文件中读取规则和警报.
rule_files:
  [ - <filepath_glob> ... ]

# 抓取配置列表.
scrape_configs:
  [ - <scrape_config> ... ]

# 警报指定与Alertmanager相关的设置.
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]

# 与远程写入功能相关的设置.
remote_write:
  [ - <remote_write> ... ]

# 与远程读取功能相关的设置.
remote_read:
  [ - <remote_read> ... ]

 

4.2 prom web查看效果

登录 ip:9090,我这里是192.168.3.82:9090

先查看一下状态

点一下白色粗体“Prometheus” 即返回主页,操作如下:

上面中我们也可以选择一个指标,比如网络

 

五、Grafana图形展示安装

上面图中是prom自带的web UI,感觉还是不太好看,我们想要是zabbix那样炫酷的,那么Grafana就出场了。

5.1 Grafana基本概念

我们在操作Grafana的时候首先要简单了解一下它的基本概念:

Data Source:数据源一般多为时序数据。

Organization:支持多组织部署,组织可以理解为不同的部门,不同的需求方等。

User:用户名就是Grafana里的账户,一个用户可以属于一个或者多个组织,而且可以根据角色分配不同的权限。

Row:Row是一组Panels,是Dashboard的逻辑划分。一般来说,Rows都是12个单位的宽度,可以自适应大小屏幕。

Panel:Grafana里的基本图像模块,可以拖拽来调节大小和位置,有Graph,Singlestat,Dashlist,Table和Text几种类型。

Query Editor:可以编辑数据源的不同指标。

Dashboard:这个就很好理解了,通常意义上的仪表盘。可以使用Templating和Annotations。

Grafana还有很多高级的玩法,比如报警,模板,API等,入门篇里就不展开了。快来开始你的第一个炫酷的dashboard吧!

5.2 Grafana安装(yum)

5.2.1 Grafana yum安装及启动服务

打开Grafana官方说明文档,因为我的是centos,所以选择 Install on Linux

在进入的界面中我选择centos,这里有企业版本和oss版本,企业版收费的,我这里选择oss,按提示添加Grafana oss源

#添加yum源
cat>/etc/yum.repos.d/grafana.repo<<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
cat /etc/yum.repos.d/grafana.repo

安装,可以使用  yum install grafana 直接安装了,发现太慢了,所以手工下载rpm文件安装,根据官网提示打开下载页  Grafana download page

然后找到centos,按提示执行如下命令:

#Red Hat, CentOS, RHEL, and Fedora(64Bit)
#SHA256: ed51839020e0c1d8dffcf550c7cedc20393b983551fd7756ce18a6078fe2d75a

#wget下载会有点慢,建议用迅雷下载好再上传
#注意:yum安装的时候一定要先安装yum源,否则无法解决依赖关系
wget https://dl.grafana.com/oss/release/grafana-7.1.3-1.x86_64.rpm
sudo yum install grafana-7.1.3-1.x86_64.rpm

安装完之后可以启动 Grafana

systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server
#发现默认是3000端口
netstat -alntp|grep -i listen|grep grafana

 5.2.2 web登录Grafana

Grafana默认的web登录端口号为3000,登录方式为ip:3000,用户名和密码均为admin,这是根据 Grafana Getting started 中的 Log in for the first time 知道 的:

  1. Open your web browser and go to http://localhost:3000/. 3000 is the default HTTP port that Grafana listens to if you haven’t configured a different port.
  2. On the login page, type admin for the username and password.
  3. Change your password.

登录后界面,如下,是不是很酷:

 上面图中灰色是没配置的,发现数据源没配置,还有课仪表盘dashboard等也没配置

5.3 配置Grafana监控

5.3.1 配置数据源

Grafana安装好之后需要配置一下数据源,这里指定是prometheus,这个数据源默认就是支持的

PS:如果找不到对应的数据源的话,需要安装Grafana插件,详见 Grafana plugins,比如zabbix默认就没有的,点中 zabbix,根据提示安装即可,很简单的,这里就不讲了。

操作如下:

PS:也可以使用如下操作,是一样的

其它不变,默认,最后点 Save&Test 即可

5.3.2 添加dashboards仪表盘

5.3.1 查找Prometheus Dashboard 仪表盘

手工为Grafana添加监控数据太烦麻了,我这里就不多说了放在下篇来解说,我们直接来简单的,使用Grafana 官方的 dashboards仪表盘,操作如下:

我在数据源选择Prometheus,会列出所有相关的,如下图所示,我这里选择中文的

5.3 Grafana中导入Prometheus Dashboard 仪表盘

我这里为了方便直接使用id号安装,先记住上面的id号为8919,接着返回到Grafana web界面导入上面的prometheus仪表盘,操作如下:

最终返回界面如下所示:

什么都帮你生成好了,下次如果想调出些界面,可以如下操作:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值