[k8s]metricbeat的kubernetes模块kube-metric模块
正确姿势启动metricbeat
metricbeat.modules:
- module: systemmetricsets:- cpu- filesystem- memory- network- processenabled: trueperiod: 10sprocesses: ['.*']cpu_ticks: falseoutput.elasticsearch:hosts: ["http://192.168.x.x:9200"]setup.template.name: "metricbeat"
setup.template.fields: "fields.yml"
setup.template.overwrite: true
setup.template.settings:index.number_of_shards: 1index.number_of_replicas: 1setup.kibana.host: "192.168.x.x:5601"
setup.dashboards.enabled: true
./metricbeat -e -c metricbeat.yml -d "publish"
metricbeat的Kubernetes插件
metricbeat.modules:
# Node metrics, from kubelet:
- module: kubernetesmetricsets:- node- system- pod- container- volumeperiod: 10shosts: ["192.168.x.132:10255","192.168.x.133:10255"]# State metrics from kube-state-metrics service: #这部分需要kube-state-metrics支撑(Nodes/deploy个数),因此集群里需要安装kube-state-metrics组件.默认情况下这里没有的话图中上半部分没有数据
- module: kubernetesenabled: false ## 这里一定要是truemetricsets:- state_node- state_deployment- state_replicaset- state_pod- state_containerperiod: 10shosts: ["192.168.x.x:8080"]# Kubernetes events
- module: kubernetesenabled: falsemetricsets:- eventoutput.elasticsearch:hosts: ["http://192.168.x.x:9200"]
既然需要kube-state-metrics了,那就研究下吧.
监控思路
vm思路:遵从大道至简的原则
容器监控思路:
pod的:
top cpu
top mem别人家的监控-只能流口水了
kube-state-metrics提供监控k8s集群的metric
kube-state-metrics本质上是提供了k8s集群的metric
部署参考:
https://github.com/kubernetes/kube-state-metrics
克隆代码: create这几个即可
访问:
报错解决:
kubectl -n kube-system logs -f kube-state-metrics-215312065-1vzg2 -c kube-state-metrics
时候发现一些api错误
解决: 给apiserver启动添加这个参数: 它github上有说
--runtime-config=batch/v2alpha1=true
即目前完整的apiserver参数如下
kube-apiserver --service-cluster-ip-range=10.254.0.0/16 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --admission-control=ServiceAccount --service-account-key-file=/root/ssl/ca.key --client-ca-file=/root/ssl/ca.crt --tls-cert-file=/root/ssl/server.crt --tls-private-key-file=/root/ssl/server.key --allow-privileged=true --runtime-config=batch/v2alpha1=true --v=2
k8s插件监控集群效果图
vm监控效果图
贴上kube-metric的yaml
参考: https://github.com/kubernetes/kube-state-metrics
修改点:
- deploy的api版本
svc为nodeport模式
- 镜像拉取
docker pull lanny/gcr.io_google_containers_kube-state-metrics_v1.1.0
dokcer pull lanny/gcr.io_google_containers_addon-resizer_1.0
docker tag lanny/gcr.io_google_containers_kube-state-metrics_v1.1.0 gcr.io/google_containers/kube-state-metrics:v1.1.0
docker tag lanny/gcr.io_google_containers_addon-resizer_1.0 gcr.io/google_containers/addon-resizer:1.0
$ cat kube-state-metrics-deployment.yaml
apiVersion: apps/v1beta1 # for versions before 1.8.0 use apps/v1beta1 ## 这里默认是v1beat1,我用的是1.7.8,因此apiVersion: apps/v1beta2是不适用的.
kind: Deployment
metadata:name: kube-state-metricsnamespace: kube-system
spec:selector:matchLabels:k8s-app: kube-state-metricsreplicas: 1template:metadata:labels:k8s-app: kube-state-metricsspec:serviceAccountName: kube-state-metricscontainers:- name: kube-state-metricsimage: quay.io/coreos/kube-state-metrics:v1.1.0ports:- name: http-metricscontainerPort: 8080readinessProbe:httpGet:path: /healthzport: 8080initialDelaySeconds: 5timeoutSeconds: 5- name: addon-resizerimage: gcr.io/google_containers/addon-resizer:1.0resources:limits:cpu: 100mmemory: 30Mirequests:cpu: 100mmemory: 30Mienv:- name: MY_POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: MY_POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespacecommand:- /pod_nanny- --container=kube-state-metrics- --cpu=100m- --extra-cpu=1m- --memory=100Mi- --extra-memory=2Mi- --threshold=5- --deployment=kube-state-metrics
$ cat kube-state-metrics-service.yaml
apiVersion: v1
kind: Service
metadata:name: kube-state-metricsnamespace: kube-systemlabels:k8s-app: kube-state-metricsannotations:prometheus.io/scrape: 'true'
spec:type: NodePort ## 这里需要改下,外界通过nodeport方式访问metric apiports:- name: http-metricsport: 8080targetPort: http-metricsprotocol: TCPselector:k8s-app: kube-state-metrics
$ cat kube-state-metrics-service-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: kube-state-metricsnamespace: kube-system
转载于:https://www.cnblogs.com/iiiiher/p/7999761.html
[k8s]metricbeat的kubernetes模块kube-metric模块相关推荐
- k8s实践(6)--Kubernetes安全:API Server访问控制
Kubernetes安全 安全永远是一个重大的话题,特别是云计算平台,更需要设计出一套完善的安全方案,以应对复杂的场景. Kubernetes主要使用Docker作为应用承载环境,Kubernetes ...
- K8s命令篇-Kubernetes工作实用命令集结号
K8s命令篇-Kubernetes工作实用命令集结号 1.kubectl命令概述 kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集 群进行操作.在实际工作中熟练的使用这 ...
- python argparse模块_Python argparse模块应用实例解析
这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...
- mysql七个模块_mysql(pymysql模块的使用,视图,触发器)
本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一.pymysql的下载和使 ...
- php模块介绍,Python模块介绍
有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中,如果要 ...
- SAP PM 入门系列14 – PM模块与其它模块的集成
SAP PM 入门系列14 – PM模块与其它模块的集成 SAP PM与其他模块(如物料管理,生产计划,人事管理以及销售和分销)都有高度紧密的集成.以下是使用Plant Maintenance进行集成 ...
- url模块和querystring模块
url模块 我们可以使用.parse方法来将一个URL字符串转换为URL对象,示例如下. 1. URL各部分说明 var url = require('url'); //加载url模块 url.par ...
- Python的StringIO模块和cStringIO模块
1.StringIO模块 StringIO用于像文件一样对字符串缓冲区或者叫做内存文件进行读写. f = StringIO() # ready for writing f = StringI ...
- ACS712模块 ACS712ELCTR-05A电流传感器模块
简 介: 测试了基于HALL原理的电流传感器ACS712,验证了它的基本功能,测试了这款5A容量的电流传感器的实际测量电流的范围.实际上比它的标称值大了一倍多. 关键词: HALL,霍尔,ACS712 ...
最新文章
- Mysql创建数据库用户
- SQL2K数据库开发八之表操作创建主键
- c++判断二个数是否为相反的符号算法实现(附完整源码)
- css知识笔记(二)——盒子模型
- 在QML应用中实现threading多任务
- PHP MySQL Functions (PDO_MYSQL)
- linux主机中util啥意思,util-linux是什么软件
- python统计数据分析基础教程_Python数据分析基础教程:NumPy学习指南(第2版)
- java栈和队列实现删除,数据结构学习--Java栈和队列
- python 调用C语言DLL的方法
- Linux文件系统的正确挂载方式
- 寻找黑匣子——程序行为记录与跟踪
- 11408考研复习规划
- AutoCAD Electrical 2020 安装后无激活界面
- 7.20-7.26 字节推荐算法(DATA-EDU)5道面试题分享
- WinForm下多层架构的实现
- html怎么使两张照片重叠,怎样把两张图片叠加在一起?
- java list获取某个字段
- 计算机网络原理第七版word,计算机网络原理简答题
- [转] 大型ORACLE数据库优化设计方案