尝试在CentOS7.3和Docker上安装Prometheus
环境
我正在云服务器上运行虚拟机(您无需意识到这一点)
Docker宿主机的操作系统:CentOS 7.3
安装Prometheus的容器:centos:latest(CentOS 7.3)
Prometheus的安装方式:解压缩包(不使用Docker镜像)
为了安装firewalld,我屏蔽了它并单独安装了iptables-services。
前提
从在虚拟机上安装了Docker的状态开始。
没有问题的地方是一系列命令。
假设以root执行。
Docker主机上的命令为#,容器上的命令为##。
1.创建容器
我将创建用于Prometheus的容器。
<Dockerホスト>
# docker pull centos
# docker run -d -t --privileged --name prometheus01 centos:latest /sbin/init
# docker exec -it prometheus01 /bin/bash
<コンテナ>
## yum -y update
## yum -y install wget git gcc make net-tools
## echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock ★ 最低限は設定しましょう。
## rm -f /etc/localtime
## ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
2.安装GO语言
请在此处下载最新版本的Source的URL。(2017/2/10 信息 go1.7.5)
Go编程语言下载
<コンテナ>
## cd /usr/local ★ /usr/local/go に展開させたいので移動場所はここです。
## wget -P /usr/local/src https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz ★ 大文字Pです。
## tar zxfv src/go1.7.5.linux-amd64.tar.gz ★ てーーんかい!
## mkdir /usr/local/go/work
## echo "export GOROOT=/usr/local/go" >> ~/.bashrc
## echo "export GOPATH=/usr/local/go/work" >> ~/.bashrc
★ GOROOTとGOPATHを分けることで、この警告をなくすことができます。
`warning: GOPATH set to GOROOT (/usr/local/go) has no effect`
## echo "PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
## source ~/.bashrc ★ 早速読み込み
## go version ★ バージョン確認
3. 安装Prometheus
Prometheus和GO语言一样,将最新版本的源代码URL复制到GitHub/Prometheus。
<コンテナ>
## wget -P /usr/local/src https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz
## tar zxfv src/prometheus-1.5.2.linux-amd64.tar.gz
## ln -fs /usr/local/prometheus-1.5.2.linux-amd64/prometheus /usr/bin/prometheus
## ln -fs /usr/local/prometheus-1.5.2.linux-amd64/promtool /usr/bin/promtool
Prometheus 创建数据区域。
我們接下來將進行監視設定,但在進行之前,我們希望保留監視設定的資訊和收集的數據(不想再創建一次)。
所以,讓我們將數據放在 Docker 主機上吧。
★ 一旦現時点のコンテナイメージを作ります。
<コンテナ>
## exit
<Dockerホスト>
# docker commit prometheus01 prometheus_img ★ prometheus という名前でコミット
# docker images ★ 確認・・・まず一安心
# docker stop prometheus01 ★ 一旦、今のコンテナは停止
# docker rm prometheus01 ★ ポイ!
# mkdir -p /data/prometheus/etc ★ ここに格納することにします
★ コンテナ上では、/prometheus にマウントさせます
★ 一緒にPrometheus で利用する9090ポートを繋げます
★ 甦れ!!Prometheus!!
# docker run -d -t --privileged --name prometheus01 -v /data/prometheus:/prometheus -p 9090:9090 prometheus_img /sbin/init
# docker exec -it prometheus01 /bin/bash ★ 突撃!
<コンテナ>
★ /etc/prometheusのデータは、Dockerホスト上に保存します
## ln -fs /prometheus/etc /etc/prometheus
★ Consoleライブラリをリンク
## ln -fs /usr/local/prometheus-1.5.2.linux-amd64/console_libraries /etc/prometheus/console_libraries
5.配置Prometheus的设置文件
登录到容器后,因为/prometheus与Docker主机连接上了,接下来我们需要配置文件。
<コンテナ>
★ 設定ファイルの配置
## cd /etc/prometheus
## wget https://raw.githubusercontent.com/prometheus/prometheus/master/documentation/examples/prometheus.yml
## vi /etc/default/prometheus ★ OPTIONSファイルを新規作成
OPTIONS="-config.file=/etc/prometheus/prometheus.yml -storage.local.path=/var/lib/prometheus -web.console.libraries=/etc/prometheus/console_libraries -web.console.templates=/etc/prometheus/consoles"
★ 必要なDirは作成します
## mkdir /etc/prometheus/consoles
★ storage.local.path もリンクを張りましょう
## mkdir /prometheus/var
## ln -fs /prometheus/var /var/lib/prometheus
★ 設定ファイルの構文チェック
## promtool check-config /etc/prometheus/prometheus.yml
6. 自动启动和自动停止设置
为避免每次启动容器都手动启动Prometheus,我会设置自动启动选项。
<コンテナ>
## vi /usr/lib/systemd/system/prometheus.service ★ 新規作成
[Unit]
Description=Prometheus Service
After=syslog.target prometheus.service
[Service]
Type=simple
EnvironmentFile=-/etc/default/prometheus
ExecStart=/usr/bin/prometheus $OPTIONS
PrivateTmp=true
[Install]
WantedBy=multi-user.target
## systemctl enable prometheus ★ 登録
## systemctl start prometheus ★ 開始
7.进行钻孔操作
在确认之前,让我们先开个洞。
在云防火墙上开个洞。
在Docker主机的iptables上开个洞。
<コンテナ>
## exit
<Dockerホスト>
# docker commit prometheus01 prometheus_img
# docker stop prometheus01
# iptables -A INPUT -p tcp -m tcp --dport 9090 -j ACCEPT
# service iptables save
# systemctl restart iptables
# cat /etc/sysconfig/iptables ★ 確認
# systemctl restart docker ★ Docker部分が消えたときには、dockerを再起動します。
# cat /etc/sysconfig/iptables ★ 再度確認
8. 最终启动
<Dockerホスト>
# docker rm prometheus01
# docker run -d -t --privileged --name prometheus01 -v /data/prometheus:/prometheus -p 9090:9090 prometheus /sbin/init
9. 从浏览器进行确认
打开浏览器,确认在”http://Docker主机的IP地址:9090″上是否显示Prometheus页面。
后记
使用Docker进行设计时,需要考虑将哪些位置挂载上去。
接下来,我们将验证使用Prometheus进行自动扩展监视和容器监视的情况。
请你在参考的基础上进行改写,只需要提供一种选项。
参考网站:蜗牛小茶先生的博客页面。