在主机上安装prometheus

昨天将gitlab迁到主机上,从感觉上性能有了一些提升,今天尝试将prometheus也运行到主机上。

首先要确认在主机上可以访问集群的内网ip,如果用rancher搭的k8s集群默认是不能访问的。用kubeadm则一般是可以的,简单的访问一个svc就可以判断出来。

当确认能够访问内网ip后就可以开始下边的步骤了

  • 下载prometheus二进制文件
https://prometheus.io/download/#prometheus
在如上连接中可以找到具体的下载连接
  • 下载完成后解压,并将原有的配置文件粘贴到prometheus.yml中

  • 创建文件夹

mkdir -p /var/run/secrets/kubernetes.io/serviceaccount/
  • 将一个具有和cluster-admin相同读权限的token放入此文件夹中
echo your-token > /var/run/secrets/kubernetes.io/serviceaccount/token
truncate -s-1  /var/run/secrets/kubernetes.io/serviceaccount/token
  • 将ca.crt也放入次文件夹中,如果不知道文件在哪,随意进入一个pod中进入该目录即可找到
echo your-ca-cert  > /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  • 将kubernetes.default.svc放入hosts文件中,prometheus有时会使用这个地址,如果没有添加解析则会出现no host之类的错误,下边的ip同样可以随意进入一个pod中,选择环境变量KUBERNETES_SERVICE_HOST的值
echo 10.233.0.1 kubernetes.default.svc >> /etc/hosts
  • 启动prometheus测试
export KUBERNETES_SERVICE_PORT=443
export KUBERNETES_SERVICE_HOST=10.233.0.1
./prometheus
  • 访问主机ip:9090查看target是否都正常

  • 正常之后就可以将prometheus放入到service中

cat >/etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=auto run prometheus
[Service]
Environment='KUBERNETES_SERVICE_PORT=443'
Environment='KUBERNETES_SERVICE_HOST=10.233.0.1'
Environment='ARGS1=--config.file /app/prometheus-2.6.0.linux-amd64/prometheus.yml'
Environment='ARGS2=--storage.tsdb.path /data/monitoring/prometheus'
Type=simple
ExecStart=/app/prometheus-2.6.0.linux-amd64/prometheus $ARGS1 $ARGS2
Restart=always 
KillMode=process 
RestartSec=1
User=root
[Install]
WantedBy=multi-user.target
EOF
  • 创建数据文件夹
mkdir -p /data/monitoring/prometheus
  • 启动服务
service prometheus start

完成!

VinkDong

open to open