• 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官方博客 返回首页
    关于我们 招聘 广告服务 网站地图 kefu@csdn.net 客服论坛 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

  • 相关阅读:
    Java相关面试题总结+答案(二)
    Java相关面试题总结+答案(一)
    Java相关面试题总结
    jdk各个版本的新特性(jdk1.7,1.8,1.9)
    Java内存区域
    数据库一、二、三范式
    外部按钮控制video视频的播放暂停
    jquery获取div跟textarea标签内容
    JS获取系统时间及日期
    滚动条插件---jquery.nicescroll.js 简单使用
  • 原文地址:https://www.cnblogs.com/xiexun/p/13176933.html
Copyright © 2020-2023  润新知