Prometheus与Grafana部署和安装

prometheus

Prometheus是开源监控报警系统。

  1. 多维度数据模型。
  2. 灵活的查询语言。
  3. 不依赖分布式存储,单个服务器节点是自主的。
  4. 通过基于HTTP的pull方式采集时序数据。
  5. 可以通过中间网关进行时序列数据推送。
  6. 通过服务发现或者静态配置来发现目标服务对象。
  7. 支持多种多样的图表和界面展示,比如Grafana等。

概念

Prometheus生态系统由多个组件组成,它们中的一些是可选的。多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署。

Prometheus Server

主要负责数据采集和存储,提供PromQL查询语言的支持。

客户端SDK

官方提供的客户端类库有go、java、scala、python、ruby,其他还有很多第三方开发的类库,支持nodejs、php、erlang等。

Push Gateway

支持临时性Job主动推送指标的中间网关。

PromDash

使用Rails开发可视化的Dashboard,用于可视化指标数据。

Exporter

Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。

Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态。目前支持的有数据库、硬件、消息中间件、存储系统、HTTP服务器、JMX等。

alertmanager

警告管理器,用来进行报警。

prometheus_cli

命令行工具。

其他辅助性工具

多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式。

node-exporter

下载镜像

docker pull prom/node-exporter

运行

1
2
3
4
5
6
7
docker run -d \
-p 9090:9090 \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter \
--path.rootfs /host

redis_exporter

下载镜像

docker pull oliver006/redis_exporter

运行

1
2
3
4
docker run -d \
--name redis_exporter \
-p 9121:9121 \
oliver006/redis_exporter --redis.addr redis://h:password@192.168.1.41:6380

或者

1
2
3
wget https://github.com/oliver006/redis_exporter/releases/download/v0.13/redis_exporter-v0.13.linux-amd64.tar.gz

./redis_exporter -redis.addr 192.168.1.41:6380 -redis.password password &

mysqld-exporter

下载镜像

docker pull prom/mysqld-exporter

运行

1
2
3
4
docker run -d \
-p 9101:9104 \
-e DATA_SOURCE_NAME="root:password@(192.168.1.41:3308)/test" \
prom/mysqld-exporter

或者

1
2
3
4
5
6
7
8
9
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz -O mysqld_exporter-0.10.0.linux-amd64.tar.gz

cat << EOF > my.cnf
[client]
user=prom
password=abc123
EOF

./mysqld_exporter -config.my-cnf="my.cnf"

grafana

下载镜像

docker pull grafana/grafana

运行

1
docker run -d --name=grafana -p 3000:3000 grafana/grafana

prometheus

下载镜像

docker pull prom/prometheus

运行

1
2
3
4
5
sudo docker run -d \
-p 9090:9090 \
-v /home/config/prometheus.yml:/home/config/prometheus.yml \
quay.io/prometheus/prometheus \
--config.file=/home/config/prometheus.yml

配置

prometheus.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
crape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']

- job_name: 'redis-41'
static_configs:
- targets: ['192.168.1.41:9121']
labels:
instance: redis

- job_name: 'linux-41'
static_configs:
- targets: ['192.168.1.41:9100']
labels:
instance: node

- job_name: 'mysql-41'
static_configs:
- targets: ['192.168.1.41:9101']
labels:
instance: db

重启服务

1
2
3
docker ps

docker restart `prometheus-processid`

登录验证

1
2
prometheus 192.168.1.41:9090
grafana 192.168.1.41:3000 admin/admin
------ 本文结束------

本文标题:Prometheus与Grafana部署和安装

文章作者:Perkins

发布时间:2019年08月02日

原始链接:https://perkins4j2.github.io/posts/1379/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。