使用prometheus怎么实现远程存储

使用prometheus怎么实现远程存储,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联公司-专业网站定制、快速模板网站建设、高性价比义县网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式义县网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖义县地区。费用合理售后完善,10余年实体公司更值得信赖。

实验系统配置

  1. mac 10.14

  2. docker

  Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  1. 在docker部署伪分布式kafka集群

    • 新建名为:metrics的topic

[Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager](https://learnku.com/articles/19221)


docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest  

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.3.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://1localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=10.3.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=10.3.0.170:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 2 --topic metrics

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic partopic

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic metrics

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic metrics --from-beginning

远程存储

Prometheus的本地存储设计可以减少其自身运维和管理的复杂度,同时能够满足大部分用户监控规模的需求。但是本地存储也意味着Prometheus无法持久化数据,无法存储大量历史数据,同时也无法灵活扩展和迁移。

为了保持Prometheus的简单性,Prometheus并没有尝试在自身中解决以上问题,而是通过定义两个标准接口(remote_write/remote_read),让用户可以基于这两个接口对接将数据保存到任意第三方的存储服务中,这种方式在Promthues中称为Remote Storage。

远程存储官方文档

本文主要讲解远程存储至kafka的过程。

该adapter的github地址

操作

步骤一

  1. 将github代码拉下来,并使用goland打开进行编译,此步十分麻烦且重要。

  2. mac上安装go及goland

  3. 在goland上对源码进行编译,其中有很多包下载不了,特别是/golang.org/x/...类型的包,原因是这些包被墙了,所以需要增加代理才可以。直接执行

$ export http_proxy=socks5://127.0.0.1:1080		// 梯子的本地端口
$ export https_proxy=$http_proxy
$ export GOPROXY=https://goproxy.io

问题一:解决golang.org/x包无法下载的问题

问题二:解决golang grpc安装问题

问题三

$ go test
# pkg-config –cflags rdkafka 
Package rdkafka was not found in the pkg-config search path. 
Perhaps you should add the directory containing `rdkafka.pc’ 
to the PKG_CONFIG_PATH environment variable 
No package ‘rdkafka’ found 
pkg-config: exit status 1

result

1. git clone https://github.com/edenhill/librdkafka.git
cd librdkafka
./configure
make
make install

步骤二

  1. 先修改源码config.go中的kafkaBrokerList为本地kafka的地址。

  2. prometheus-kafka-adapter源码进行编译:

go test
go build

没有问题之后,在源码中会出现一个名为prometheus-kafka-adapter的可执行文件,然后执行。 3. 修改prometheus的配置文件prometheus.yml中增加:

remote_write:
  - url: "http://:8080/receive"
  1. kafka那边进行消费,就可以看到监控数据了。

prometheus写influxdb/opentsdb

系统配置
  1. mac 10.14

  2. docker

  Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  1. 在docker部署influxdb

执行

1. prometheus 使用influxdb 做永久存储

2. Prometheus高可用(2):理解远端存储

3. Prometheus 远程读写 Influxdb

编译(难点)

在父目录下执行:

go build ./documentation/examples/remote_storage/remote_storage_adapter/

关于使用prometheus怎么实现远程存储问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


当前标题:使用prometheus怎么实现远程存储
标题URL:http://scyanting.com/article/ijehph.html