prometheus_docker

前言
前面几篇文章介绍了k8s的部署、对外服务、集群网络、微服务支持,在生产环境中使用,离不开运行状态监控,本篇开始部署使用prometheus,被各大公司广泛使用的容器监控工具。https://blog.csdn.net/ywq935/article/details/80818390

工作方式
Prometheus工作示意图:


在k8s中,关于集群的资源有metrics度量值的概念,有各种不同的exporter可以通过api接口对外提供各种度量值的及时数据,prometheus在与k8s融合工作的过程,就是通过与这些提供metric值得exporter进行交互,获取数据,整合数据,展示数据,触发告警的过程。
一、获取metrics:
1.对短暂生命周期的任务,采取拉的形式获取metrics (不常见)
2.对于exporter提供的metrics,采取拉的方式获取metrics(通常方式),对接的exporter常见的有:kube-apiserver 、cadvisor、node-exporter,也可根据应用类型部署相应的exporter,获取该应用的状态信息,目前支持的应用有:nginx/haproxy/mysql/redis/memcache等。

二、数据汇总及按需获取:
可以按照官方定义的expr表达式格式,以及PromQL语法对相应的指标进程过滤,数据展示及图形展示。不过自带的webui较为简陋,但prometheus同时提供获取数据的api,grafana可通过api获取prometheus数据源,来绘制更精细的图形效果用以展示。

expr书写格式及语法参考官方文档:
https://prometheus.io/docs/prometheus/latest/querying/basics/

三、告警推送
prometheus支持多种告警媒介,对满足条件的告警自动触发告警,并可对告警的发送规则进行定制,例如重复间隔、路由等,可以实现非常灵活的告警触发。

部署
1.配置configmap,在部署前将Prometheus主程序配置文件准备好,以configmap的形式挂载进deployment中。
prometheus-configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: kube-system
data:
prometheus.yml: |
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- /etc/prometheus/rules.yml
alerting:
alertmanagers:
- static_configs:
- targets: ["alertmanager:9093"]
scrape_configs:

- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https

- job_name: 'kubernetes-cadvisor'
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor

- job_name: 'kubernetes-service-endpoints'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
action: replace
target_label: __address__
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
action: replace
target_label: kubernetes_name

- job_name: 'kubernetes-services'
kubernetes_sd_configs:
- role: service
metrics_path: /probe
params:
module: [http_2xx]
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
action: keep
regex: true
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox-exporter.example.com:9115
- source_labels: [__param_target]
target_label: instance
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
target_label: kubernetes_name

- job_name: 'kubernetes-ingresses'
kubernetes_sd_configs:
- role: ingress
relabel_configs:
- source_labels: [__meta_kubernetes_ingress_annotation_prometheus_io_probe]
action: keep
regex: true
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name

- job_name: 'kubernetes_node'
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
# 基于endpoint的服务发现,不再经过service代理层面
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_endpoint_port_name]
regex: true;prometheus-node-exporter
action: keep
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
action: replace
target_label: __address__
regex: (.+)(?::\d+);(\d+)
replacement: $1:$2
# 去掉label name中的前缀__meta_kubernetes_service_label_
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
# 为了区分所属node,把instance 从node-exporter ep的实例,替换成ep所在node的ip
- source_labels: [__meta_kubernetes_pod_host_ip]
regex: '(.*)'
replacement: '${1}'
target_label: instance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
2.部署prometheus工作主程序,注意挂载上面的configmap:
prometheus.deploy.yml:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
name: prometheus-deployment
name: prometheus
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
containers:
- image: prom/prometheus:v2.0.0
name: prometheus
command:
- "/bin/prometheus"
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention=24h"
ports:
- containerPort: 9090
protocol: TCP
volumeMounts:
- mountPath: "/prometheus"
name: data
- mountPath: "/etc/prometheus"
name: config-volume
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 500m
memory: 2500Mi
serviceAccountName: prometheus
volumes:
- name: data
emptyDir: {}
- name: config-volume
configMap:
name: prometheus-config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
3.部署svc、ingress、rbac授权。
注意:在本地是使用traefik做对外服务代理的,因此修改了默认的NodePort的svc.type为ClusterIP的方式,添加ingress后,可以以域名方式直接访问。若不做代理,可以无需部署ingress,svc.type使用默认的NodePort,然后通过node ip+port的形式访问。Ingress如何使用,请参考此前的文章:使用traefik做ingress controller
prometheus.svc.yaml:

kind: Service
apiVersion: v1
metadata:
labels:
app: prometheus
name: prometheus
namespace: kube-system
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
targetPort: 9090
selector:
app: prometheus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
prometheus.ing.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: prometheus
namespace: kube-system
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/prometheus
spec:
rules:
- host: prometheusv19.abc.com
http:
paths:
- backend:
serviceName: prometheus
servicePort: 80
path: /

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
rbac-setup.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: kube-system
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
依次部署上方几个yaml文件,待初始化完成后,配置好dns记录,即可打开浏览器访问:

随便选取一个metric,点击execute,查看是否能正常获取结果输出。点击status—target,可以看到metrics的数据来源,即各exporter,点击相应exporter上的链接可查看这个exporter提供的metrics明细。


为了更好的展示图形效果,需要部署grafana,因此前已经部署有grafana,这里不再部署,贴一个all-in-one.yaml部署文件。
grafana-all-in-one.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: grafana-core
namespace: kube-system
labels:
app: grafana
component: core
spec:
replicas: 1
template:
metadata:
labels:
app: grafana
component: core
spec:
containers:
- image: grafana/grafana:4.2.0
name: grafana-core
imagePullPolicy: IfNotPresent
# env:
resources:
# keep request = limit to keep this container in guaranteed class
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
env:
# The following env variables set up basic auth twith the default admin user and admin password.
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "false"
# - name: GF_AUTH_ANONYMOUS_ORG_ROLE
# value: Admin
# does not really work, because of template variables in exported dashboards:
# - name: GF_DASHBOARDS_JSON_ENABLED
# value: "true"
readinessProbe:
httpGet:
path: /login
port: 3000
# initialDelaySeconds: 30
# timeoutSeconds: 1
volumeMounts:
- name: grafana-persistent-storage
mountPath: /var
volumes:
- name: grafana-persistent-storage
emptyDir: {}

---
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: kube-system
labels:
app: grafana
component: core
spec:
type: NodePort
ports:
- port: 3000
selector:
app: grafana
component: core

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
访问grafana,添加prometheus数据源:
默认管理账号密码为admin admin

选择资源类型,填入prometheus的服务地址及端口号,点击保存


导入展示模板:
点击dashboard,点击import dashboard,在弹出框内填写数字315,会自动加载官方提供的315号模板,然后选择数据源为刚添加的数据源,模板就创建好了,非常easy。

基本部署到这里就结束了,下篇介绍一下prometheus的告警相关规则。

===========================================================================================

7.19更新:
最近发现,采用daemon-set方式部署的node-exporterc采集到的度量值不准确,最后发现需要将host的/proc和/sys目录挂载进node-exporter的容器内。(已解决,更新后的node-exporter.yaml文件):

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
k8s-app: prometheus-node-exporter
name: prometheus-node-exporter
namespace: kube-system
spec:
selector:
matchLabels:
k8s-app: prometheus-node-exporter
template:
metadata:
creationTimestamp: null
labels:
k8s-app: prometheus-node-exporter
spec:
containers:
- args:
- -collector.procfs
- /host/proc
- -collector.sysfs
- /host/sys
- -collector.filesystem.ignored-mount-points
- ^/(proc|sys|host|etc|dev)($|/)
- -collector.filesystem.ignored-fs-types
- ^(tmpfs|cgroup|configfs|debugfs|devpts|efivarfs|nsfs|overlay|sysfs|proc)$
image: prom/node-exporter:v0.14.0
imagePullPolicy: IfNotPresent
name: node-exporter
ports:
- containerPort: 9100
hostPort: 9101
name: http
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /host/proc
name: proc
- mountPath: /host/sys
name: sys
- mountPath: /rootfs
name: root
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /proc
type: ""
name: proc
- hostPath:
path: /sys
type: ""
name: sys
- hostPath:
path: /
type: ""
name: root
templateGeneration: 17
updateStrategy:
type: OnDelete

---
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/app-metrics: 'true'
prometheus.io/app-metrics-path: '/metrics'
name: prometheus-node-exporter
namespace: kube-system
labels:
app: prometheus-node-exporter
spec:
clusterIP: None
ports:
- name: prometheus-node-exporter
port: 9100
protocol: TCP
selector:
k8s-app: prometheus-node-exporter
type: ClusterIP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
但是发现,部署完成之后,采集到的node指标依然不准确,非常奇怪,尝试脱离k8s使用docker方式直接部署,结果采集到的node数值就很准确了,有点不明白原因,后续继续排查一下。
(11-12更新,数据采集不准问题已解决,是因为通过service代理后,采集到的数据是后端随机的ep,而非是你想要的指定主机上的ep,因此,prometheus端的服务发现,改发现的资源类型为endpoint,而不经过endpoint)

========================================================
采集问题已解决,如下docker运行方式仅作参考,不要再使用,直接按上面的yaml文件部署即可。

docker运行命令:

docker run -d \
-p 9100:9100 \
--name node-exporter \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net="host" \
prom/node-exporter:v0.14.0 \
-collector.procfs /host/proc \
-collector.sysfs /host/sys \
-collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
1
2
3
4
5
6
7
8
9
10
11
最后,记得修改configmap内的job相关targets配置。

为什么依附于k8s集群内采集的node指标就不准确,这个问题后续得好好研究,这次先到这里。

11.12 补充
上面的node-exporter采集数据不准确的问题找到了,感谢下面评论区中的朋友 @架势糖007,指出node-exporter以service形式访问,会导致访问service时,按LB算法随机请求到某一个后端的ep pod上去,而非到达真正想要去的指定pod。这突然让我才想起,此前数据采集计算出来不准,就是因为采集到的大概率可能是来自其他node上的数据。因此,对上面的prometheus configMap文件,以及下方的exporter部署yaml文件作了一些修改,采集对象从service改为endpoint,绕过代理层,直接访问endpoint层,经过改正后,检查node数据不准的问题得到了解决。


点赞
2

评论
22

分享

收藏
6

手机看

关注
收起全文

syf12354321的博客
1127

k8s部署prometheus的相关配置

apiVersion: v1kind: ConfigMapmetadata: name: prometheus-configdata: rules.yml: | groups: - name: example rules: - alert: InstanceDown expr: up == 1 for: 5s ...

Lin'T:你好, 有修改过的github链接吗2月前
查看回复(1)


浮云游子LY:您好,有一个问题想要请教一下。我用docker-run部署的prometheus server,用DaemonSet部署的node-exporter,service的type是NodePort。现在的问题也是node-exporter采集的数据不准确,现在明白是被service负载均衡了。请问我这种prometheus server不是用k8s部署的,该如何绕过代理呢?谢谢。6月前
查看回复(2)


国际渣男:node-export部署文件有问题吧,首先第一个:这样部署的结果是master节点是不会被检测到的,没有加入容忍master污点,第二个是svc服务为nodePort,这样的效果是负载轮询,访问节点IP+端口只会随机抽取一个,为何不是用headless?7月前
查看回复(5)


_Mr丶s:对api接口的监控那块是怎么配置的?????1年前
查看回复(3)


肆意c:错误百出,真的怀疑你是怎么搭建出来的1年前
查看回复(1)


肆意c:多了一个regex,找了一晚上,想骂人。1年前


码哥凉茶冰:配置好DNS记录是什么意思呢?具体怎么配置呢?如果不安装kube_dns是不是不行?1年前
查看回复(1)


波哥的IT人生:您好,感谢您的分享,想问一下prometheus的访问地址在哪里看呢?新手求教2年前
查看回复(1)

ywq935的博客
5629

k8s(八)、监控--Prometheus告警篇(告警消息对接钉钉接口)

前言承接上章k8s(七)、Prometheus部署篇,在上章的基础上,本章介绍Prometheus告警相关配置。一、Querying expr & PromQL在了解告警规则之前,首先得了解Prometheus的数据查询表达式,来获取metric数据是否到达告警阈(ps:这个字儿念yu,第四声,不念第二声的fa)值。Overview Prometheus提供了一种功能......
k8s部署prometheus的相关配置 - syf12354321的博客 - CSDN博客
11-24

["192.168.187.210:30093"] rule_files: - "/etc/prometheus/rules.yml" scrape_configs: #monitor k8s监控kubernetes - job_name: 'kubernetes-nodes-c...
k8s prometheus adapter —— 拓展 k8s 基于 prometheu..._CSDN博客
5-22

前言前面几篇文章介绍了k8s的部署、对外服务、集群网络、微服务支持,在生产环境中使用,离不开运行状态监控,本篇开始部署使用prometheus,被各大公司广泛使用的容器监控...
随笔记录-分享&记忆
1万+

Prometheus+Grafana监控Kubernetes

Prometheus官方网址,或者百度自己了解脑补:https://prometheus.io/ 官方文档说明链接Prometheus是一个开源的系统监控工具。根据配置的任务(job)以http/s周期性的收刮(scrape/pull)指定目标(target)上的指标(metric)。目标(target)可以以静态方式或者自动发现方式指定。Prometheus将收刮(sc......
csdn1115698735的博客
2147

centos7基于k8s安装部署prometheus(普罗米修斯)

k8s环境下安装部署prometheus(普罗米修斯)环境准备1、安装部署git环境yum install git2、安装部署k8s点击跳转3、私有镜像仓库点击跳转部署1、在github库中下载最新源代码git clone https://github.com/coreos/kube-prometheus2、查看原配置文件cd kube-prometheus/manif......
k8s安装prometheus_qq_29860591的博客-CSDN博客
6-12

[root@k8s-master prometheus]# ll 总用量 4124 drwxr-xr-x 11 root root 4096 8月 2 16:02 kube-prometheus -rw-r--r-- 1 root root 4218009 1月 7...
在k8s中部署Prometheus--更新中_chang_rj的博客-CSDN博客
6-13

centos7基于k8s安装部署prometheus(普罗米修斯) k8s环境下安装部署prometheus(普罗米修斯)环境准备1、安装部署git环境yum install git2、安装部署k8s点击跳转3、私有镜像...
weixin_34357962的博客
425

Kubernetes之利用prometheus监控K8S集群

prometheus它是一个主动拉取的数据库,在K8S中应该展示图形的grafana数据实例化要保存下来,使用分布式文件系统加动态PV,但是在本测试环境中使用本地磁盘,安装采集数据的agent使用DaemonSet来部署,DaemonSet的特性就是在每个node上部署一个服务进程,这一切都是自动的部署。 关于prometheus监控,请参考另外一篇......
llarao的博客
481

istio功能介绍(一.Istio基本功能)

文章目录基本原理istio与服务治理关于微服务服务治理的三种形态第1种:在应用程序中包含治理逻辑第2种:治理逻辑独立的代码第3种:治理逻辑独立的进程Istio与kubernetesIstio的工作机制Istio的重要组件Istio-pilotistio-Mixeristio-citadelistio-galleyistio-sidecar-injectoristio-proxy其他组件本文内容很......
k8s中部署的Prometheus.yaml的解释说明&监控数据挂载在..._CSDN博客
11-29

k8s中部署prometheus的完整文档 data:标签后是完整的 prometheus.yml文件内容 prometheus,全局设置,抓取间隔,默认为 1m这里是15s;规则评估间隔,默认为 1m这里是 15s;...
k8s 添加 Prometheus+Grafana的监控 - 不懂代码的胖子 - CSDN博客
11-22

#安装git,下载yamlgit clone https://github.com/redhatxl/k8s-prometheus-grafana.git#安装node-exporterkubectl create -f node-exporter.yaml #安装prometheus组件...
guoyinzhao的博客
3万+

Prometheus的监控解决方案(含监控kubernetes)

prometheus的简介和安装Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开放源码项目,并且独立于任何公司。为了强调这一点,为了澄清项目的治理结构,普罗米修斯在2016年加入了云计算基金会,成为继Kubernetes之后的......
chang_rj的博客
1430

在k8s中部署Prometheus--更新中


Prometheus的监控解决方案(含监控kubernetes)_guoyinzh..._CSDN博客
6-17

配置方式:在prometheus服务端配置文件中配置job等相应信息,如上配置会监控每个节点的容器信息和节点监控信息。需要在k8s中部署node-exporter pod,yaml文件如下: apiVer...
Kubernetes运维之使用Prometheus全方位监控K8S - batanj35857的博客
12-19

目录:Prometheus架构 K8S监控指标及实现思路 在K8S平台部署Prometheus 基于K8S服务发现的配置解析 在K8S平台部署Grafana 监控K8S集群中Pod、Node、资源对象 使用Grafana...
qq_40907977的博客
469

k8s实战之部署Prometheus+Grafana可视化监控告警平台

写在前面之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如zabbix、Nagios、open-flcon还有prometheus,每一种有着各自的优劣势,感兴趣的童鞋可以自行百度,但是与k8s集群监控,相对于而已更加友好的是Prometheus,今天我们就......
ywq935的博客
8352

Kubernetes踩坑(一): 部署问题记录

一、etcd服务启动后报错etcd cluster ID mismatch: 检车service配置cluster选项有无问题,若无问题,则可能是此前的etcd bootstrap加速启动缓存残留导致,坑爹的是rm -rf /var/lib/etcd/* 删除完了之后还是报错,必须 rm -rf /var/lib/etcd/才能彻底清除,删除完成后记得再创建该路径mkdir /......
k8s_prometheus_prometheus-core和k8s_POD_prometheus-core容器的...
12-21

k8s_prometheus_prometheus-core是prometheus的容器,使用 docker-enter 结合 docker ps | grep prom 1 查出的信息一起,可以进入到容器内部(使用exit指令退出容器) ...
ywq935的博客
291

kubeadm修改默认证书有效期,解决证书过期问题

kubeadm 修改默认证书有效期前言出于安全考虑,k8s 团队推荐定期更新版本,因此kubeadm生成的证书,有效期默认在代码中写死为1年,一旦证书过期,k8s集群将会崩溃,因此,续期 or 升级,成了一个一年一度必选题。但在生产环境中,每一次版本更新可能存在未知的风险,给已经稳定运行的集群带来诸多不确定性,而每年续期一次证书,对管理不太友好,频繁手动操作也可能会带来额外的风险。去年部署的1.14的集群,证书快要到期了,现在决定修改kubeadm的源码重新编译,将续期证书的有效期进行延长。本篇记载分析...
知行合一 止于至善
482

Prometheus:监控与告警:16: 监控Kubernetes的Api Server

前面一篇文章中介绍了Kubernetes和Prometheus进行集成的常见方式,这篇文章结合具体的示例介绍一下如何监控Kubernetes的Api Server。
shida's blog
4706

k8s prometheus adapter —— 拓展 k8s 基于 prometheus 实现动态伸缩

一、背景介绍       截至 k8s 1.10 版本,horizontalpodautoscalers 还只支持基于 CPU 使用率实现动态伸缩       很多场景下,往往需要更多的监测指标来指导集群的扩缩容,如 HTTP 请求率、内存使用率等       幸运的是,k8s 提供了 aggregation 来支持用户自定义的 API 拓展,详情请戳 这里       通过自定义......
weixin_33719619的博客
249

k8s与监控--解读prometheus监控kubernetes的配置文件

前言Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目。来源于谷歌BorgMon项目。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。主要监控:Node:如主机CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。node-exporter采集。......
weixin_30551947的博客
403

k8s部署prometheus

https://www.kancloud.cn/huyipow/prometheus/527092https://songjiayang.gitbooks.io/prometheus/content/demo/target.html创建 monitoring namespacesapiVersion: v1kind: Namespacem...
随笔记录-分享&记忆
1975

k8s中部署的Prometheus.yaml的解释说明&监控数据挂载在NFS上

链接:https://pan.baidu.com/s/1PCanTTWgTAok-R2N3-jZJQ 密码:tz9t---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRolemetadata: name: prometheusrules: - apiGroups: [""] # "" indicates t...
不懂代码的胖子
1443

k8s 添加 Prometheus+Grafana的监控

#安装git,下载yamlgit clone https://github.com/redhatxl/k8s-prometheus-grafana.git#安装node-exporterkubectl create -f node-exporter.yaml #安装prometheus组件kubectl create -f k8s-prometheus-grafana/prometh...
ywq935的博客
6099

k8s(九)、监控--Prometheus扩展篇(mysqld-exporter、服务发现、监控项、联邦、relabel)

前言上一篇主要介绍prometheus基础告警相关,本篇再进行扩展,加入mysql监控,列出一些监控告警表达式及配置文件,以及新版prometheus上的联邦特性,支持多prometheus分支数据聚合,在多集群环境中很适用。mysqld-exporter部署:在公司的环境中,大部分的DB已迁移至K8S内运行,因此再以常见的节点二进制安装部署mysqld-exporter的方式不再......
weixin_30387339的博客
584

基于k8s集群部署prometheus监控etcd

目录 基于k8s集群部署prometheus监控etcd 1、背景和环境概述 2、修改prometheus配置 3、检查是否生效 4、配置grafana图形 基于k8s集群部署prometheus监控etcd1、背景和环境...
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
关于我们 招聘 广告服务 网站地图 [email protected] 客服论坛 400-660-0108 QQ客服(8:30-22:00)
公安备案号 11010502030143 京ICP备19004658号 京网文〔2020〕1039-165号 版权与免责声明 版权申诉 网络110报警服务
中国互联网举报中心 家长监护 版权申诉 北京互联网违法和
————————————————
版权声明:本文为CSDN博主「ywq935」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ywq935/article/details/80818390

猜你喜欢

转载自www.cnblogs.com/xiexun/p/13176933.html
今日推荐