博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微服务监控神器Prometheus的安装部署
阅读量:7119 次
发布时间:2019-06-28

本文共 6636 字,大约阅读时间需要 22 分钟。

本文涉及:如何在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 仓库。

123456复制代码
[root@syj ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-rc.2-linux-amd64.tar.gz[root@syj ~]# tar -zxvf helm-v2.14.0-rc.2-linux-amd64.tar.gz[root@syj ~]# cp linux-amd64/helm /usr/local/bin/[root@syj ~]# helm versionClient: &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

123456789101112131415161718复制代码
apiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: tillerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: tiller    namespace: kube-system复制代码

启动

123复制代码
[root@syj ~]# kubectl apply -f rbac-config.yaml serviceaccount/tiller createdclusterrolebinding.rbac.authorization.k8s.io/tiller created复制代码

使用阿里云镜像进行安装

123456789101112131415161718复制代码
[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/chartsCreating /root/.helmCreating /root/.helm/repositoryCreating /root/.helm/repository/cacheCreating /root/.helm/repository/localCreating /root/.helm/pluginsCreating /root/.helm/startersCreating /root/.helm/cache/archiveCreating /root/.helm/repository/repositories.yamlAdding stable repo with URL: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartsAdding 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-installationHappy Helming!复制代码

查看结果

1234567复制代码
[root@syj ~]# helm versionClient: &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 listNAME    URL                                                   stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartslocal   http://127.0.0.1:8879/charts复制代码
部署 Prometheus Operator

创建命名空间

1复制代码
[root@syj ~]# kubectl create namespace monitoring复制代码

下载Prometheus Operator

1复制代码
[root@syj ~]# wget https://github.com/coreos/prometheus-operator/archive/release-0.29.zip复制代码

将下载下来的依赖包解压并重命名为prometheus-operator并cd到此目录

安装prometheus相关内容

123复制代码
helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operatorhelm install --name prometheus --set serviceMonitorsSelector.app=prometheus --set ruleSelector.app=prometheus --namespace=monitoring helm/prometheushelm install --name alertmanager --namespace=monitoring helm/alertmanager复制代码

验证

1234567891011复制代码
[root@syj ~]# kubectl get pod -n monitoringNAME                                   READY   STATUS    RESTARTS   AGEalertmanager-alertmanager-0            2/2     Running   0          58sprometheus-operator-545b59ffc9-6g7dg   1/1     Running   0          6m32sprometheus-prometheus-0                3/3     Running   1          3m31s[root@syj ~]# kubectl get svc -n monitoringNAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGEalertmanager            ClusterIP   10.98.237.7      
9093/TCP 87salertmanager-operated ClusterIP None
9093/TCP,6783/TCP 87sprometheus ClusterIP 10.104.185.104
9090/TCP 4mprometheus-operated ClusterIP None
9090/TCP 4m复制代码

安装 kube-prometheus

1234复制代码
[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复制代码

验证

1234567891011复制代码
[root@syj ~]# kubectl get svc -n monitoringNAME                                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGEalertmanager                          ClusterIP   10.98.237.7      
9093/TCP 34malertmanager-operated ClusterIP None
9093/TCP,6783/TCP 34mkube-prometheus ClusterIP 10.101.249.82
9090/TCP 29skube-prometheus-alertmanager ClusterIP 10.100.29.63
9093/TCP 29skube-prometheus-exporter-kube-state ClusterIP 10.98.91.146
80/TCP 29skube-prometheus-exporter-node ClusterIP 10.98.34.11
9100/TCP 29skube-prometheus-grafana ClusterIP 10.108.208.247
80/TCP 29sprometheus ClusterIP 10.104.185.104
9090/TCP 36mprometheus-operated ClusterIP 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复制代码

安装过程参考文章:

grafana的各种模板可参考

推荐阅读

博客所有文章首发于公众号《Java学习录》转载请保留 扫码关注公众号即可领取2000GJava学习资源

转载于:https://juejin.im/post/5ce5f1f0e51d4556db69497d

你可能感兴趣的文章
C++学习之基本概念
查看>>
el captain设置环境变量
查看>>
Educational Codeforces Round 37 A B C
查看>>
UVA 129 Krypton Factor(DFS 回溯)
查看>>
MongoDB可视化工具Studio 3T的使用
查看>>
Android卡片设置透明度失效问题
查看>>
Python 利用*args和**kwargs解决函数遇到不确定数量参数问题
查看>>
线段树(知识概念)
查看>>
[Mugeda HTML5技术教程之3] Hello World: 第一个Mugeda动画
查看>>
jQuery操作select控件取值和设值
查看>>
Python(^^^^^小技巧^^^^^——不定期更新)
查看>>
一个好的产品要有一个排查问题、报表、运营等相关工具
查看>>
Nuget添加新项目的问题
查看>>
[河南省ACM省赛-第四届] 表达式求值(nyoj 305)
查看>>
[河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)
查看>>
es6数组去重
查看>>
将浮点数转换为字符串
查看>>
windows 网络编程报错 error LNK2019
查看>>
OC 实现的几个排序算法
查看>>
Sql 游标操作
查看>>