安装 kube-prometheus

五十岚2022年10月24日
大约 3 分钟

k8sprometheus 的安装部署

安装 kube-prometheus

Github 地址open in new window 此处克隆的是 release-0.4 版本的,yaml 文件如下

git clone -b release-0.4 --single-branch https://github.com/prometheus-operator/kube-prometheus.git

# 该目录下定义好了部署的 yaml 
cd ./kube-prometheus/manifests
ls

# 其中
# alertmanager-alertmanager.yaml 	定义了 alertmanager
# prometheus-prometheus.yaml 		定义了 prometheus server端
# prometheus-rules.yaml 			定义了 prometheus 的基本规则
# node-exporter* 					采集宿主机的监控数据的(比zabbix更详细)
# grafana-deployment.yaml 			继承了很多 dashboard,通过 ConfigMap 注入
# grafana-dashboardDefinitions.yaml 定义了很多 dashboard,都放到了 ConfigMap 里面

提示

使用容器不方便,经常会改里面的模板、创建模板等没有存储会很复杂

  • 若容器部署,新增一个模板就需要修改上述定义 dashboard 并挂载到 configMap 中,grafana 才能读取到
  • 有多个 configMap ,因为 etcd 默认限制大小为 1.5 Mib(Raft消息限制 过大的配置文件会影响其性能(虽然可修改
  • 加一个模板就需要创建一个 configMap 然后在 grafana-deployment.yaml 中的 volumes: 下,挂载一大堆,新增也需要沿用这种方式挂载

因此建议 grafana 最好挂个存储(数据目录),若没有存储的话最好使用宿主机部署

  • 这样可以直接上传一个 dashboard 定义到宿主机或存储中
  • grafana 是个界面展示,挂了无妨,但要在 grafana 上做告警,也不能挂
  • alertmanager 的告警,就不需要用 grafana 的告警了,更为灵活

部署 prometheusgrafanaalertmanager

# 进入 setup 目录下安装 operator
cd ./kube-prometheus/manifests/setup

# 安装该目录下所有 yaml 文件
$ kubectl create -f .
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
... 
clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator created
deployment.apps/prometheus-operator created
service/prometheus-operator created
serviceaccount/prometheus-operator created

# 查看运行,此时已经创建好了 operator
$ kubectl -n monitoring get po 
NAME                                   READY   STATUS    RESTARTS   AGE
prometheus-operator-5f75d76f9f-zkzf6   1/1     Running   0          1m20s

# 返回上级,然后创建 prometheus 的集群
cd ..
ls
# 最好将 alertmanager 中的 副本改为 3 个,因为生成环境中 3 个会通过 POSIX 协议通信,而不会发3次告警
# vim alertmanager-alertmanager.yaml
# replicas: 3

$ kubectl create -f .

# 查看运行
$ kubectl -n monitoring get po -owide
NNAME                                   READY   STATUS              RESTARTS   AGE
alertmanager-main-0                    0/2     ContainerCreating   0          108s
grafana-58dc7468d7-wmp2p               0/1     Running             0          106s
kube-state-metrics-765c7c7f95-xn6kh    0/3     ContainerCreating   0          104s
node-exporter-99kq7                    0/2     ContainerCreating   0          104s
node-exporter-b9pfp                    2/2     Running             0          104s
node-exporter-qrdmv                    0/2     ContainerCreating   0          104s
prometheus-adapter-5cd5798d96-72fsl    1/1     Running             0          102s
prometheus-k8s-0                       0/3     ContainerCreating   0          98s
prometheus-k8s-1                       0/3     ContainerCreating   0          98s
prometheus-operator-5f75d76f9f-zkzf6   1/1     Running             0          18m

查看 service 如下服务

$ kubectl -n monitoring get svc
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)
alertmanager-main       ClusterIP   10.96.65.3       <none>        9093/TCP
...
grafana                 ClusterIP   10.109.31.26     <none>        3000/TCP
...
prometheus-k8s          ClusterIP   10.105.151.175   <none>        9090/TCP
..
  • alertmanager-main 用于查看当前告警有哪些、通知告警
  • grafana 监控面板、展示数据
  • prometheus-k8s 创建规则、校验、查询操作、target

使用 ingress 配置如上服务对应的域名(若没配置 ingress 先去配 ingress 的控制器

# 配置 ingress 如下
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prom-ingresses
  namespace: monitoring
spec:
  rules:
  - host: alert.test.com
    http:
      paths:
      - backend:
          serviceName: alertmanager-main
          servicePort: 9093
        path: /
  - host: grafana.test.com
    http:
      paths:
      - backend:
          serviceName: grafana
          servicePort: 3000
        path: /
  - host: prom.test.com
    http:
      paths:
      - backend:
          serviceName: prometheus-k8s
          servicePort: 9090
        path: /
status:
  loadBalancer: {}

查看创建的 ingress

$ kubectl -n monitoring get ingress
NAME             HOSTS                                           ADDRESS   PORTS   AGE
prom-ingresses   alert.test.com,grafana.test.com,prom.test.com             80      78s

修改 hosts 后即可访问域名,其中 grafana 的初始账户密码都为 admin ,登入后需修改(若没有持久化,每次重启都会还原,此处修改为 user@dev备忘

192.168.3.172	alert.test.com prom.test.com grafana.test.com
上次编辑于: 2023/1/9 06:55:55