本文涉及:如何在k8s下搭建Prometheus+grafana的监控环境
基本概念
Prometheus提供了容器和云原生领域数据搜集、存储、处理、可视化和告警一套完整的解决方案,最初时是由SoundCloud公司开发的。自2012年开源以来社区成员就不断递增。如今的Prometheus已经发展到继Kubernetes后第2个正式加入CNCF基金会的项目
Prometheus的特点?
- 多维的数据模型(基于时间序列的k/v键值对)。
- 灵活的查询及聚合语句(PromQL)。
- 不依赖分布式存储,节点自治。
- 基于HTTP的pull模式采集时间序列数据。
- 可以使用pushgateway(prometheus的可选中间件)实现push模式。
- 可以使用动态服务发现或静态配置采集的目标机器。
- 支持多种图形及仪表盘。
Prometheus可以监控什么?
- k8s、docker、mysql、redis、es、consul、rabbitmq、zabbix等等
Prometheus架构图
Prometheus安装部署
Helm 安装
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
1 2 3 4 5 6 |
[root@syj ~] [root@syj ~] [root@syj ~] [root@syj ~] Client: &version.Version{SemVer:"v2.13.1-rc.2", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"} Error: could not find tiller |
Tiller 服务器安装
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
创建rbac-config.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system |
启动
1 2 3 |
[root@syj ~] serviceaccount/tiller created clusterrolebinding.rbac.authorization.k8s.io/tiller created |
使用阿里云镜像进行安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@syj ~]# helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts Creating /root/.helm Creating /root/.helm/repository Creating /root/.helm/repository/cache Creating /root/.helm/repository/local Creating /root/.helm/plugins Creating /root/.helm/starters Creating /root/.helm/cache/archive Creating /root/.helm/repository/repositories.yaml Adding stable repo with URL: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts Adding local repo with URL: http://127.0.0.1:8879/charts $HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy. To prevent this, run `helm init` with the --tiller-tls-verify flag. For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation Happy Helming! |
查看结果
1 2 3 4 5 6 7 |
[root@syj ~]# helm version Client: &version.Version{SemVer:"v2.13.1", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.13.1", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"} [root@syj ~]# helm repo list NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts local http://127.0.0.1:8879/charts |
部署 Prometheus Operator
创建命名空间
1
|
[root@syj ~]
|
下载Prometheus Operator
1
|
[root@syj ~]# wget https://github.com/coreos/prometheus-operator/archive/release-0.29.zip
|
将下载下来的依赖包解压并重命名为prometheus-operator并cd到此目录
安装prometheus相关内容
1 2 3 |
helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operator helm install --name prometheus --set serviceMonitorsSelector.app=prometheus --set ruleSelector.app=prometheus --namespace=monitoring helm/prometheus helm install --name alertmanager --namespace=monitoring helm/alertmanager |
验证
1 2 3 4 5 6 7 8 9 10 11 |
[root@syj ~]# kubectl get pod -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-alertmanager-0 2/2 Running 0 58s prometheus-operator-545b59ffc9-6g7dg 1/1 Running 0 6m32s prometheus-prometheus-0 3/3 Running 1 3m31s [root@syj ~]# kubectl get svc -n monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager ClusterIP 10.98.237.7 <none> 9093/TCP 87s alertmanager-operated ClusterIP None <none> 9093/TCP,6783/TCP 87s prometheus ClusterIP 10.104.185.104 <none> 9090/TCP 4m prometheus-operated ClusterIP None <none> 9090/TCP 4m |
安装 kube-prometheus
1 2 3 4 |
[root@syj ~]# mkdir -p helm/kube-prometheus/charts [root@syj ~]# helm package -d helm/kube-prometheus/charts helm/alertmanager helm/grafana helm/prometheus helm/exporter-kube-dns \ > helm/exporter-kube-scheduler helm/exporter-kubelets helm/exporter-node helm/exporter-kube-controller-manager \ > helm/exporter-kube-etcd helm/exporter-kube-state helm/exporter-coredns helm/exporter-kubernetes |
验证
1 2 3 4 5 6 7 8 9 10 11 |
[root@syj ~]# kubectl get svc -n monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager ClusterIP 10.98.237.7 <none> 9093/TCP 34m alertmanager-operated ClusterIP None <none> 9093/TCP,6783/TCP 34m kube-prometheus ClusterIP 10.101.249.82 <none> 9090/TCP 29s kube-prometheus-alertmanager ClusterIP 10.100.29.63 <none> 9093/TCP 29s kube-prometheus-exporter-kube-state ClusterIP 10.98.91.146 <none> 80/TCP 29s kube-prometheus-exporter-node ClusterIP 10.98.34.11 <none> 9100/TCP 29s kube-prometheus-grafana ClusterIP 10.108.208.247 <none> 80/TCP 29s prometheus ClusterIP 10.104.185.104 <none> 9090/TCP 36m prometheus-operated ClusterIP None <none> 9090/TCP 36m |
将grafana的Service类型改为NodePort
1
|
kubectl patch svc kube-prometheus-grafana -p '{"spec":{"type":"NodePort"}}' -n monitoring
|
此时访问grafana的默认端口31106即可:
1
|
http://ip:31106
|
安装过程参考文章:https://blog.csdn.net/wangzan18/article/details/85270816
grafana的各种模板可参考
https://grafana.com/dashboards
推荐阅读
- SpringCloud学习系列汇总
- 为什么一线大厂面试必问redis,有啥好问的?
- 多线程面试必备基础知识汇总
- Java集合源码分析汇总-JDK1.8
- Linux常用命令速查-汇总篇
- JVM系列文章汇总
相关推荐
读书笔记:微服务监控告警Prometheus实验极客时间微服务架构实践课程
《微服务:从设计到部署》是一本深入探讨微服务架构设计与实施的书籍,旨在帮助读者理解如何在实际工作中有效地应用微服务架构。微服务架构是近年来在IT行业中广泛采用的一种软件开发方法,它将单一应用程序分解为一...
使用prometheus监控k8s的微服务监控大盘模版(二进制/kubeadm通用)
《微服务:从设计到部署》是一本深入探讨微服务架构设计与实施的权威书籍,旨在帮助读者理解和掌握如何在实际项目中应用微服务技术。微服务架构是一种将大型复杂应用拆分为一组小型、独立的服务的开发方式,每个服务...
kubernetes部署监控系统prometheus和grafana(亲测可用) 参考资料:https://blog.csdn.net/qq_36963950/article/details/125698022
prometheus监控规则大全 node规则,redis监控,es监控,vmware监控,ipmi监控,ceph监控,etcd监控,k8s监控,mysql监控,openstack监控,os监控,交换机监控,windows监控,cdh监控,calico监控规则监控
轻舟微服务平台是网易云为企业提供的一套微服务解决方案,其中微服务监控是其关注的重点问题之一。与传统监控相比,微服务监控面临着更多难点,包括:1.监控对象动态可变,无法进行预先配置;2.监控范围非常繁杂,...
安装docker-ce # 安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum makecache fast...
通过这个部署指南,你可以在Linux环境中安装并配置好Prometheus和Grafana,再结合Canal对MySQL的监控,确保数据库系统的稳定性和高效性。记得定期更新这些工具至最新版本,以获取最新的特性和安全修复。
本一键部署文档旨在简化 Prometheus、Alertmanager 和 Grafana 的安装流程。通常,这些组件的部署涉及多个步骤,包括配置文件的编写、依赖的安装和各个服务的启动。通过提供一个 `install` 命令,用户可以快速地在...
为了实现更精细的监控,还可以使用Kubernetes的自定义资源定义(CRD)来创建Prometheus Operator,它能够自动化Prometheus的部署、配置管理和升级,减轻运维负担。 总的来说,通过Kubernetes部署Prometheus和...
1. **Docker**:容器化技术为微服务部署提供了便利,而Docker作为最流行的容器引擎之一,支持对容器内部的服务进行性能监控。 2. **cAdvisor**:这是一个容器资源管理和性能监控工具,能自动检测容器并提供CPU、内存...
原文链接:https://blog.csdn.net/m0_37814112/article/details/119028528 说明:Kubernetes集群之微服务JVM内存监控,prometheus服务yaml文件
8. **监控与日志**:Prometheus、Grafana等工具在微服务监控中的应用,以及日志收集和分析的策略。 9. **安全性**:OAuth2、JWT等安全协议在微服务环境下的应用,以及服务间的身份验证和授权。 10. **微服务治理**...
prometheus监控规则大全 node规则,redis监控,es监控,vmware监控,ipmi监控,ceph监控,etcd监控,k8s监控,mysql监控,openstack监控,os监控,交换机监控,windows监控,cdh监控,calico监控规则监控
Prometheus是一款开源的系统监控和警报工具,广泛应用于微服务架构和云原生环境。其强大的时间序列数据库和灵活的查询语言使得监控系统性能、服务状态和应用程序指标变得非常容易。本文将详细介绍如何搭建和部署...
Prometheus + Grafana+mysql_exporter + node_exporter + tomcat_exporter+jmx_exporter + nginx-vts-exporter+redis_exporter + alertmanager+《部署实时监控系统》 一、Prometheus介绍 3 二、Prometheus架构概览 ...
prometheus监控规则大全 node规则,redis监控,es监控,vmware监控,ipmi监控,ceph监控,etcd监控,k8s监控,mysql监控,openstack监控,os监控,交换机监控,windows监控,cdh监控,calico监控规则监控
Prometheus 使用snmp_exporter根据snmp监控网络设备,包含常用的网络设备,Fortinet 100D、Fortinet300D、Fortinet10D,snmp_exporter启动配置文件snmp.yml。 下载后需要修改配置文件的团体号,拉到文件最下面...