普罗米修斯 Prometheus部署
实验环境:
主机名 | IP | 服务 |
---|---|---|
node01(server) | 192.168.164.141 | go1.17.3.linux-amd64, grafana-7.3.3-1.x86,node_exporter-0.17.0,prometheus-2.31.1.linux-amd64 |
node02(client) | 192.168.164.142 | node_exporter-0.17.0.linux-amd64 |
下载软件:
Prometheus-2.31.1:https://prometheus.io/download/#prometheus.
Go-1.17.3:https://go.dev/dl/
Grafana-5.4.2:https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
node_exporter-0.17.0: https://prometheus.io/download/#prometheus
//往下翻就可以找到node_exporter
Prometheus介绍
prometheus是由(go语言编写)谷歌研发的一款开源的监控软件,目前已经被云计算本地基金会托管,是继k8s托管的第二个项目。
采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。在数据采集方面,借助Go语音的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。
优点:
- 易于管理
- 轻易获取服务内部状态
- 高效灵活的查询语句
- 支持本地和远程存储
- 采用http协议,默认pull模式拉取数据,也可以通过中间网关push数据
- 支持自动发现
- 可扩展、易集成
prometheus运行流程
prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。
安装go语言环境
解压go1.17.3.linux-amd64,并部署go环境
[root@node01 ~]# cd /usr/src/
[root@node01 src]# ll
总用量 255284
drwxr-xr-x. 2 root root 6 5月 19 2020 debug
-rw-r--r-- 1 root root 134804820 11月 25 23:22 go1.17.3.linux-amd64.tar.gz
-rw-r--r-- 1 root root 53521575 11月 25 23:22 grafana-7.3.3-1.x86_64.rpm
drwxr-xr-x. 2 root root 6 5月 19 2020 kernels
-rw-r--r-- 1 root root 73079452 11月 25 23:22 prometheus-2.31.1.linux-amd64.tar.gz
[root@node01 src]# tar -C /usr/local -xzf go1.17.3.linux-amd64.tar.gz
[root@node01 src]# ls /usr/local/
bin etc games go include lib lib64 libexec sbin share src
[root@node01 src]# vim /etc/profile
# 文件末尾添加以下内容
export PATH=$PATH:/usr/local/go/bin
[root@node01 src]# source /etc/profile #让新添加的配置生效
# 验证一下是否成功,用go version 来验证
[root@node01 src]# go version
go version go1.17.3 linux/amd64
安装prometheus
1、解压安装包至/usr/local/中,并重命名方便后面调用
[root@node01 src]# tar xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/
[root@node01 src]# ls /usr/local/
bin games include lib64 prometheus-2.31.1.linux-amd64 share
etc go lib libexec sbin src
[root@node01 local]# mv prometheus-2.31.1.linux-amd64/ Prometheus
[root@node01 local]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月 19 2020 bin
drwxr-xr-x. 2 root root 6 5月 19 2020 etc
drwxr-xr-x. 2 root root 6 5月 19 2020 games
drwxr-xr-x 10 root root 257 11月 4 22:04 go
drwxr-xr-x. 2 root root 6 5月 19 2020 include
drwxr-xr-x. 2 root root 6 5月 19 2020 lib
drwxr-xr-x. 3 root root 17 11月 12 16:05 lib64
drwxr-xr-x. 2 root root 6 5月 19 2020 libexec
drwxr-xr-x 4 3434 3434 132 11月 6 04:46 Prometheus
2、进入到Prometheus目录中,修改prometheus.yml配置文件
[root@node01 local]# vim Prometheus/prometheus.yml
......
......
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# 在配置文件末尾添加以下3行内容 作为被监控主机
- job_name: "bigdata-142"
static_configs:
- targets: ["192.168.164.142:9100"]
3、配置完后后保存退出即可,然后启动服务
[root@node01 Prometheus]# ./prometheus
ts=2021-11-25T15:48:54.627Z caller=main.go:406 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2021-11-25T15:48:54.627Z caller=main.go:444 level=info msg="Starting Prometheus" version="(version=2.31.1, branch=HEAD, revision=411021ada9ab41095923b8d2df9365b632fd40c3)"
ts=2021-11-25T15:48:54.627Z caller=main.go:449 level=info build_context="(go=go1.17.3, user=root@9419c9c2d4e0, date=20211105-20:35:02)"
ts=2021-11-25T15:48:54.627Z caller=main.go:450 level=info host_details="(Linux 4.18.0-257.el8.x86_64 #1 SMP Thu Dec 3 22:16:23 UTC 2020 x86_64 node01 (none))"
ts=2021-11-25T15:48:54.627Z caller=main.go:451 level=info fd_limits="(soft=1024, hard=262144)"
ts=2021-11-25T15:48:54.627Z caller=main.go:452 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2021-11-25T15:48:54.628Z caller=web.go:542 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2021-11-25T15:48:54.629Z caller=main.go:839 level=info msg="Starting TSDB ..."
ts=2021-11-25T15:48:54.631Z caller=head.go:479 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2021-11-25T15:48:54.631Z caller=head.go:513 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=4.308µs
ts=2021-11-25T15:48:54.631Z caller=head.go:519 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2021-11-25T15:48:54.634Z caller=head.go:590 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=1
ts=2021-11-25T15:48:54.636Z caller=head.go:590 level=info component=tsdb msg="WAL segment loaded" segment=1 maxSegment=1
ts=2021-11-25T15:48:54.636Z caller=head.go:596 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=27.272µs wal_replay_duration=4.354997ms total_replay_duration=4.402251ms
ts=2021-11-25T15:48:54.636Z caller=tls_config.go:195 level=info component=web msg="TLS is disabled." http2=false
ts=2021-11-25T15:48:54.638Z caller=main.go:866 level=info fs_type=XFS_SUPER_MAGIC
ts=2021-11-25T15:48:54.638Z caller=main.go:869 level=info msg="TSDB started"
ts=2021-11-25T15:48:54.638Z caller=main.go:996 level=info msg="Loading configuration file" filename=prometheus.yml
ts=2021-11-25T15:48:54.659Z caller=main.go:1033 level=info msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=20.913149ms db_storage=1.95µs remote_storage=3.38µs web_handler=784ns query_engine=2.173µs scrape=19.98044ms scrape_sd=66.461µs notify=37.194µs notify_sd=9.233µs rules=1.747µs
ts=2021-11-25T15:48:54.659Z caller=main.go:811 level=info msg="Server is ready to receive web requests."
# 前台运行
# 前台运行
# 前台运行
4、通过如下URL可以打开prometheus的自带监控界面:http://192.168.164.141:9090/targets 。只有安装了export的主机才会显示为绿色 也就是运行状态
使用export监控主机
以在159这台主机为例,安装exporter ,这台linux环境是centos,因此用的监控export是node_exporter-0.16.0.linux-amd64.tar.gz ,首先在官网下载这个文件,然后上传到被监控的主机(作为部署服务的主机上也需要安装 export),因此下载并部署后,执行如下命令:
[root@node02 src]# cd /usr/src/
[root@node02 src]# ls
debug
go1.17.3.linux-amd64.tar.gz
grafana-7.3.3-1.x86_64.rpm
kernels
node_exporter-0.17.0.linux-amd64.tar.gz
nohup.out
prometheus-2.31.1.linux-amd64.tar.gz
[root@node02 src]# tar xvf node_exporter-0.17.0.linux-amd64.tar.gz -C /usr/local/
[root@node02 src]# cd /usr/local/node_exporter-0.17.0.linux-amd64/
[root@node02 node_exporter-0.17.0.linux-amd64]# ls
LICENSE node_exporter NOTICE
[root@node02 node_exporter-0.17.0.linux-amd64]# ./node_exporter
INFO[0000] Starting node_exporter (version=0.17.0, branch=HEAD, revision=f6f6194a436b9a63d0439abc585c76b19a206b21) source="node_exporter.go:82"
INFO[0000] Build context (go=go1.11.2, user=root@322511e06ced, date=20181130-15:51:33) source="node_exporter.go:83"
INFO[0000] Enabled collectors: source="node_exporter.go:90"
INFO[0000] - arp source="node_exporter.go:97"
INFO[0000] - bcache source="node_exporter.go:97"
INFO[0000] - bonding source="nod
......
......
INFO[0000] Listening on :9100 # 此时就在以9100端口运行,被master监控 source="node_exporter.go:111"
到web界面刷新一下,然后原本是down的142现在变成了up
给prometheus换一个面板
使用事先准备好的grafana给prometheus换一个好看的面板
grafana下载地址https://grafana.com/grafana/download
第一步安装grafana的包
[root@node01 src]# pwd
/usr/src
[root@node01 src]# ls
grafana-7.3.3-1.x86_64.rpm
......
# 安装grafana包
[root@node01 src]# yum -y install grafana-7.3.3-1.x86_64.rpm
......
......
# 设置开机自动
[root@node01 src]# systemctl start grafana-server
[root@node01 src]# systemctl enable grafana-server
[root@node01 src]# 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 128 *:9090 *:*
LISTEN 0 128 *:9100 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:3000 *:* # 这个端口就是grafana
web界面配置
点击log in后会让你设置新的密码。设置完成后点击add datasource即可
除了自带的仪表盘外还可以去https://grafana.com/grafana/dashboards/?search=dash下载跟多的仪表