将Prometheus升级到最新的1.x版本
首先
刚刚发布了 Prometheus 2.0。考虑到它没有向后兼容性,升级版本可能会很麻烦,而且连最新的 1 系列版本(截至 2017 年 12 月,最新为 1.8.2)都没有做到。
所以我先尝试升级到 1.8.2(我的环境还停留在 1.6.1)。
只是将二进制文件更新到最新版本而已。
顺便将AlertManager也升级到0.5.1→0.11.0。
请注意
-
- 流れ
新しいバイナリDL
バックアップいい感じにとる
data/とconfig関連のものだけ新しいのに移す
動作確認
環境
ubuntu 16 on EC2
ディレクトリ構成は以下とかになっているとする
/hoge/prometheus
/hoge/alertmanager
バイナリの取得方法
prometheusはgithubのtagsから1系最新を探す
alertmanagerは公式Downloadsから
起動
今回は./prometheus &、./alertmanager &的に起動
serviceなりsupervisorctlなりで管理してる場合はお好きに
杂手顺
### current version
$ cd /hoge/prometheus
$ ./prometheus --version
prometheus, version 1.6.1 (branch: master, revision: 4666df502c0e239ed4aa1d80abbbfb54f61b23c3)
build user: root@ca1b452514b7
build date: 20170419-13:26:24
go version: go1.8.1
$ cd /hoge/alertmanager
$ ./alertmanager --version
alertmanager, version 0.5.1 (branch: master, revision: 0ea1cac51e6a620ec09d053f0484b97932b5c902)
build user: root@fb407787b8bf
build date: 20161125-08:14:40
go version: go1.7.3
### dl latest bin for prometheus / alertmanager
$ cd /tmp/
$ wget https://github.com/prometheus/prometheus/releases/download/v1.8.2/prometheus-1.8.2.linux-amd64.tar.gz
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.11.0/alertmanager-0.11.0.linux-amd64.tar.gz
$ ls
alertmanager-0.11.0.linux-amd64.tar.gz prometheus-1.8.2.linux-amd64.tar.gz
$ tar xvf prometheus-1.8.2.linux-amd64.tar.gz
$ tar xvf alertmanager-0.11.0.linux-amd64.tar.gz
### stop current process & get backup
$ cd /hoge
$ pkill prometheus
$ pkill alertmanager
$ ls
alertmanager prometheus
$ mv prometheus.bak prometheus.old
$ mv alertmanager alertmanager.old
$ ls
alertmanager.old prometheus.old
$ cp -r /tmp/prometheus-1.8.2.linux-amd64 ./prometheus
$ cp -r /tmp/alertmanager-0.11.0.linux-amd64 ./alertmanager
$ ls
alertmanager alertmanager.old prometheus prometheus.old
### migrate to latest bin w/ previous data/ & configs for prometheus
$ cd prometheus/
$ mv prometheus.yml prometheus.yml.org
$ cp -r ../prometheus.old/data/ .
$ cp ../prometheus.old/prometheus.yml .
$ cp -r ../prometheus.old/alert_rules/ .
---
# notes
I am including alert rule files as following in prometheus.yml.
rule_files:
- 'alert_rules/*.rule'
---
### migrate to latest bin w/ previous data/ & configs for alertmanager
$ cd ../alertmanager
$ mv simple.yml simple.yml.org
$ cp ../alertmanager.old/simple.yml .
$ cp -r ../alertmanager.old/data/ .
### start them
$ cd /hoge/alertmanager
$ ./alertmanager -config.file=simple.yml > alertmanager.log 2>&1 &
$ cd /hoge/prometheus
$ ./prometheus -alertmanager.url=http://localhost:9093/
### current version
$ ./prometheus --version
prometheus, version 1.8.2 (branch: HEAD, revision: 5211b96d4d1291c3dd1a569f711d3b301b635ecb)
build user: root@1412e937e4ad
build date: 20171104-16:09:14
go version: go1.9.2
$ ./alertmanager --version
alertmanager, version 0.11.0 (branch: HEAD, revision: 30dd0426c08b6479d9a26259ea5efd63bc1ee273)
build user: root@3e103e3fc918
build date: 20171116-17:43:56
go version: go1.9.2
### open web UI by your browser & confirm post metrics data
# http://{your_ip}:9090
# http://{your_ip}:9093
最后
只要进行基本的二进制更新,似乎没有问题。
但是手工操作有点麻烦,我也想用apt-get或yum之类的快速完成。
或者可以考虑用docker来处理。
也就是说,我看了一下 Prometheus 的更新日志(从 1.6.2 到 1.8.2)和 Alertmanager(从 0.5.1 到 0.11.0)。Prometheus 的变化不大,而 Alertmanager 则有很大的改变,不知道性能上的差异是怎么样的。
以上内容。