安装prometheus

作者声明:本博客内容是作者在学习以及搭建过程中积累的内容,内容采自网络中各位老师的优秀博客以及视频,并根据作者本人的理解加以修改(由于工作以及学习中东拼西凑,如何造成无法提供原链接,在此抱歉!!!)

作者再次声明:作者只是一个很抠脚的IT工作者,希望可以跟那些提供原创的老师们学习

prometheus采用nfs挂载方式来存储数据,同时使用configMap管理配置文件。并且我们将所有的prometheus存储在kube-system

1.prometheus的configmap配置文件

#建议将所有的prometheus yaml文件存在一块

mkdir /opt/prometheus -p && cd /opt/prometheus

cat >> prometheus.configmap.yaml <

apiVersion: v1

kind: ConfigMap

metadata:

name: prometheus-config

namespace: kube-system

data:

prometheus.yml: |

global:

scrape_interval: 15s

scrape_timeout: 15s

scrape_configs:

- job_name: 'prometheus'

static_configs:

- targets: ['localhost:9090']

EOF

# 配置文件解释(这里的configmap实际上就是prometheus的配置)

上面包含了3个模块global、rule_files和scrape_configs

其中global模块控制Prometheus Server的全局配置

scrape_interval:表示prometheus抓取指标数据的频率,默认是15s,我们可以覆盖这个值

evaluation_interval:用来控制评估规则的频率,prometheus使用规则产生新的时间序列数据或者产生警报

rule_files模块制定了规则所在的位置,prometheus可以根据这个配置加载规则,用于生产新的时间序列数据或者报警信息,当前我们没有配置任何规则,后期会添加

scrape_configs用于控制prometheus监控哪些资源。由于prometheus通过http的方式来暴露它本身的监控数据,prometheus也能够监控本身的健康情况。在默认的配置有一个单独的job,叫做prometheus,它采集prometheus服务本身的时间序列数据。这个job包含了一个单独的、静态配置的目标;监听localhost上的9090端口。

prometheus默认会通过目标的/metrics路径采集metrics。所以,默认的job通过URL:http://localhost:9090/metrics采集metrics。收集到时间序列包含prometheus服务本身的状态和性能。如果我们还有其他的资源需要监控,可以直接配置在该模块下即可

2.prometheus的pod资源

配置文件创建完成,如果以后我们有新的资源需要被监控,我们只需要将ConfigMap对象更新即可,现在我们开始创建prometheus的Pod资源

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

name: prometheus

namespace: kube-system

labels:

app: prometheus

spec:

template:

metadata:

labels:

app: prometheus

spec:

serviceAccountName: prometheus

containers:

- image: prom/prometheus:v2.4.3

name: prometheus

command:

- "/bin/prometheus"

args:

- "--config.file=/etc/prometheus/prometheus.yml"

- "--storage.tsdb.path=/prometheus"

- "--storage.tsdb.retention=30d"

- "--web.enable-admin-api" # 控制对admin HTTP API的访问,其中包括删除时间序列等功能

- "--web.enable-lifecycle" # 支持热更新,直接执行localhost:9090/-/reload立即生效

ports:

- containerPort: 9090

protocol: TCP

name: http

volumeMounts:

- mountPath: "/prometheus"

subPath: prometheus

name: data

- mountPath: "/etc/prometheus"

name: config-volume

resources:

requests:

cpu: 100m

memory: 512Mi

limits:

cpu: 100m

memory: 512Mi

securityContext:

runAsUser: 0

volumes:

- name: data

persistentVolumeClaim:

claimName: prometheus

- configMap:

name: prometheus-config

name: config-volume

这里稍微讲解一下配置参数

我们在启动程序的时候,除了指定prometheus.yaml(configmap)以外,还通过storage.tsdb.path指定了TSDB数据的存储路径、通过storage.tsdb.rentention设置了保留多长时间的数据,还有下面的web.enable-admin-api参数可以用来开启对admin api的访问权限,参数web.enable-lifecyle用来开启支持热更新,有了这个参数之后,prometheus.yaml(configmap)文件只要更新了,通过执行localhost:9090/-/reload就会立即生效

我们添加了一行securityContext,,其中runAsUser设置为0,这是因为prometheus运行过程中使用的用户是nobody,如果不配置可能会出现权限问题

3.NFS搭建步骤,步骤简单不多说!!!

4.创建pv,pvc

prometheus.yaml文件对应的ConfigMap对象通过volume的形式挂载进Pod,这样ConfigMap更新后,对应的pod也会热更新,然后我们在执行上面的reload请求,prometheus配置就生效了。除此之外,对了将时间数据进行持久化,我们将数据目录和一个pvc对象进行了绑定,所以我们需要提前创建pvc对象

cat >>prometheus-volume.yaml <

apiVersion: v1

kind: PersistentVolume

metadata:

name: prometheus

spec:

capacity:

storage: 10Gi

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Recycle

nfs:

server: 10.4.82.138

path: /data/k8s

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: prometheus

namespace: kube-system

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 10Gi

EOF

#nfs

server nfs服务器ip

path 挂载点,提前挂在好,确保可以写入

kubectl create -f prometheus-volume.yaml

kubectl get pvc --all-namespaces

这里稍微提示一下,我们创建的pv和pvc大小都是10g,只是测试存储为10g。线上可以修改为200或者更多,一般prometheus数据保留15-30天就可以,如果数据量过大建议使用TSBD分布式存储

5.rbac认证

我们这里还需要创建rbac认证,因为prometheus需要访问k8s集群内部的资源

cat >>prometheus-rbac.yaml <

apiVersion: v1

kind: ServiceAccount

metadata:

name: prometheus

namespace: kube-system

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

name: prometheus

rules:

- apiGroups:

- ""

resources:

- nodes

- services

- endpoints

- pods

- nodes/proxy

verbs:

- get

- list

- watch

- apiGroups:

- ""

resources:

- configmaps

- nodes/metrics

verbs:

- get

- nonResourceURLs:

- /metrics

verbs:

- get

---

apiVersion: rbac.authorization.k8s.io/v1beta1

kind: ClusterRoleBinding

metadata:

name: prometheus

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: prometheus

subjects:

- kind: ServiceAccount

name: prometheus

namespace: kube-system

EOF

由于我们要获取的资源,在每一个namespace下面都有可能存在,所以我们这里使用的是ClusterRole的资源对象,nonResourceURLs是用来对非资源型metrics进行操作的权限声明

kubectl create -f prometheus-rbac.yaml

6.运行prometheus服务

我们将ConfigMap volume rbac 创建完毕后,就可以创建prometheus.deploy.yaml了,运行prometheus服务

kubectl create -f prometheus.deploy.yaml

kubectl get pod --all-namespaces |grep prometheus

7.service服务

现在我们prometheus服务状态是已经正常了,但是我们在浏览器是无法访问prometheus的 webui服务。那么我们还需要创建一个service

cat >>prometeheus-svc.yaml <

apiVersion: v1

kind: Service

metadata:

name: prometheus

namespace: kube-system

labels:

app: prometheus

spec:

selector:

app: prometheus

type: NodePort

ports:

- name: web

port: 9090

targetPort: http

EOF

kubectl create -f prometeheus-svc.yaml

kubectl get svc -n kube-system |grep prometheus

prometeheus界面

1.监控规则

Status-->Targets

2.查看数据

比如我们这里就选择scrape_duration_seconds这个指标,然后点击Execute,如果这个时候没有查询到任何数据,我们可以切换到Graph这个 tab 下面重新选择下时间,选择到当前的时间点,重新执行,就可以看到类似于下面的图表数据了:

少年不识愁滋味,爱上层楼。爱上层楼。为赋新词强说愁。 而今识尽愁滋味,欲说还休。欲说还休。却道天凉好个秋。

yamlip 安装_prometheus.(1).yaml安装相关推荐

  1. kubernetes安装_kubernetes安装教程之三:安装kubeadm

    kubernetes安装教程之三:安装kubeadm 准备安装包和镜像 安装可以使用VPN下载 ````bash yum --downloadonly --downloaddir=/opt/rpm k ...

  2. ROS安装:Ubuntu18.04安装配置ROS-melodic

    背景知识 安装可以参考官方文档: melodic/Installation/Ubuntu - ROS Wiki 1 安装melodic 1.1 安装ROS的下载源 在国内安装,选以下一个源: 中科大资 ...

  3. git安装与配置_git 安装及基本配置

    git 基本上来说是开发者必备工具了,在服务器里没有 git 实在不太能说得过去.何况,没有 git 的话,面向github编程 从何说起,如同一个程序员断了左膀右臂. 你对流程熟悉后,只需要一分钟便 ...

  4. Openshift 4.4 静态 IP 离线安装系列:初始安装

    Openshift 4.4 静态 IP 离线安装系列:初始安装 上篇文章准备了离线安装 OCP 所需要的离线资源,包括安装镜像.所有样例 Image Stream 和 OperatorHub 中的所有 ...

  5. k3s单机版安装部署 附一键安装脚本

    作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211109907029/ 相关话题:https://ww ...

  6. Helm安装使用总结 (helm 安装nginx 例子)

    Helm安装使用总结 helm安装nginx例子 大纲 概念 安装与基础使用 helm安装nginx 概念 helm 是k8s上的软件安装程序 个人感觉类似 yum apt Helm 的重要概念: h ...

  7. centos mysql安装_mysql yum源安装

    部署服务器环境的时候经常要安装mysql,以下是常见的安装方式 源码安装 rpm包安装 yum源安装 这篇主要介绍yum源安装. yum源下载 进入 https://dev.mysql.com/dow ...

  8. php amqp扩展安装,php扩展AMQP,安装报错解决

    接下来来安装php扩展AMQP,安装了它以后,才能用PHP操作rabbitmq. wget https://pecl.php.net/get/amqp-1.4.0.tgz tar -zxvf amqp ...

  9. Linux下的Memcache安装(含libevent的安装)

    Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 . 下载:http://www.danga.com/memca ...

最新文章

  1. loj2058 「TJOI / HEOI2016」求和 NTT
  2. docker启动odoo提示module没有安装_Windows Server 2019上的Docker 入门
  3. Ajax---根据id从数据库查找对应的省份名称
  4. fastdfs安装_用asp.net core结合fastdfs打造分布式文件存储系统
  5. leetcode327 超时大坑
  6. python中dpi_python matplotlib 绘图 和 dpi对应关系详解
  7. Android百度地图定位
  8. Cannot open include file: jni.h: No such file or directory解决方法
  9. C++求复数的角度_11.初中数学:方程5x2m=4x的解,在2与10之间,怎么求m的取值范围?...
  10. Fastformer:简单又好用的Transformer变体!清华MSRA开源线性复杂度的Fastformer!
  11. 施耐德电气技术文档集
  12. 图像处理基础:特征金字塔
  13. 20145322何志威 《Java程序设计》第8周学习总结
  14. 机器学习笔记—模式识别与智能计算(一)模式识别概述
  15. 移动硬盘在电脑上显示为本地磁盘并且出现打不开的情况
  16. 英特尔无线蓝牙启动服务器,如何在英特尔Edison上部署蓝牙安全网关
  17. bilibili无水印php,bilibili播放器带弹幕接口源码
  18. receptive field
  19. 使用Python提取Excel中单元格中的某一段内容(包含某特定字符且前后以逗号作为分隔符的内容)
  20. app营销应该这样做(读书笔记)

热门文章

  1. 微信自动回复如何实现?用 Python 就可以!
  2. 漫步线性代数十三——线性变换
  3. 漫步微积分十四——增、减函数和极大、极小值
  4. 【深度学习】简单理解Batch Normalization批标准化
  5. c++循环执行一个函数_Python—程序的循环结构
  6. 常用数学符号的 LaTeX 表示方法(附代码)
  7. 编译原理 —— 1.2 编译系统的结构(终于弄懂语法和语义的区别了!)
  8. 【蚁剑的安装与使用+例题实战】【CTF】webshell
  9. Multi-thread--Windows和Linux下通用的线程接口
  10. 鱼眼图像畸变校正--透视变换