PMM

pmm server

install

helm repo add percona https://percona-charts.storage.googleapis.com
helm repo update
NS=pxc-mysql
helm install monitoring pmm/pmm-server -n $NS --set platform=kubernetes --set "credentials.password=your_password"

ingress ์„ค์ •

cert-manager๊ฐ€ ์„ค์ •์ด ๋ฏธ๋ฆฌ ๋˜์žˆ์–ด์„œ ssl๊นŒ์ง€ ๋งŒ๋“ค๋ฉด์„œ ์ง„ํ–‰

๋ฐฑ์•ค๋“œ์— ssl๋กœ ํ†ต์‹ ํ•˜๋Š”๊ฒƒ ์ค‘์š”

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: pmm
  namespace: pxc-mysql
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: 'dns-issuer-aws-live'
    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/backend-protocol: 'HTTPS' # ์ด๋ถ€๋ถ„ ๊ผญ ํ™•์ธ
spec:
  tls:
    - hosts:
        - 'pmm.c3.yourdomain.com'
      secretName: pmm-tls
  rules:
    - host: pmm.c3.yourdomain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: pxc-pmm-service
                port:
                  number: 443

์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ด๋ณด๋ฉด grafana๊ฐ€ ๋ณด์ธ๋‹ค. ๋กœ๊ทธ์ธํ•˜๋ฉด ๋œ๋‹ค.

pmm-client

cr.yaml
pmm:
  enabled: true
  image: percona/pmm-client:2.18.0
  serverHost: pxc-pmm-service # pmm-server์—์„œ์˜ ์„œ๋น„์Šค ๋ช…
  serverUser: admin # ํ™•์ธ
k apply -f cr.yaml

์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์ฐพ์•„์„œ ์ž๊ธฐ ์Šค์Šค๋กœ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

pmm ํ™•์ธ

pmm.c3.yourdomain.com ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™•์ธํ•ด๋ณด๋ฉด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ์ˆ˜ ์žˆ๋‹ค.

๋‹ค ๊ตฌ์„ฑ๋˜๊ณ  ๋‚˜๋ฉด pmm ์— ์ ‘์†ํ•ด๋ณด๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๊ฐ€ ๋ณด์ธ๋‹ค.

alert manager๋ฅผ ์„ค์ •ํ•˜๋ฉด ์Šฌ๋ž™์œผ๋กœ ์—๋Ÿฌ๋ฅผ ๋ฐ›์„์ˆ˜ ์žˆ๋‹ค.

subchart ๋กœ argocd์—์„œ ์„ค์ •

argocd ์—์„œ subchart๋ฅผ ์‚ฌ์šฉ ํ•ด์•ผ gitops๊ฐ€ ๋œ๋‹ค.

subchart๋กœ ๋งŒ๋“ค์ž.

mkdir pmm
cd pmm

touch Chart.yaml
apiVersion: v2
name: pmm-subchart
type: application
version: 1.0.0
appVersion: '1.0.0'
dependencies:
  - name: pmm-server
    version: 2.18.0
    repository: https://percona-charts.storage.googleapis.com

vi values.yaml

pmm-server:
  ## percona image version
  ## ref: https://hub.docker.com/r/library/percona/tags/
  ##
  imageRepo: 'percona/pmm-server'
  imageTag: '2.18.0'

  ## A choice between "kubernetes" and "openshift"
  platform: 'kubernetes'

  ## Specify an imagePullPolicy (Required)
  ## It's recommended to change this to 'Always' if the image tag is 'latest'
  ## ref: http://kubernetes.io/docs/user-guide/images/#updating-images
  ##
  imagePullPolicy: Always
  scc: null
  sa: null
  ## Persist data to a persitent volume
  persistence:
    enabled: true
    ## percona data Persistent Volume Storage Class
    ## If defined, storageClassName: <storageClass>
    ## If set to "-", storageClassName: "", which disables dynamic provisioning
    ## If undefined (the default) or set to null, no storageClassName spec is
    ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
    ##   GKE, AWS & OpenStack)
    ##
    # storageClass: "-"
    accessMode: ReadWriteOnce
    size: 30Gi

  ## set credentials
  credentials:
    password: 'admin'

  ## set metric collection settings
  metric:
    resolution: 1s
    retention: 720h
  queries:
    retention: 8

  ## Configure resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources:
    requests:
      memory: 1Gi
      cpu: 0.5

  supresshttp2: true
  service:
    type: LoadBalancer
    port: 443
    loadBalancerIP: ''

  ## Mount prometheus scrape config https://www.percona.com/blog/2020/03/23/extending-pmm-prometheus-configuration/
  prometheus:
    configMap:
      name: ''

  ## Kubernetes Ingress https://kubernetes.io/docs/concepts/services-networking/ingress
  ingress:
    enabled: true
    annotations:
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"
      kubernetes.io/ingress.class: nginx
      cert-manager.io/cluster-issuer: 'dns-issuer-aws-live'
      nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
      nginx.ingress.kubernetes.io/backend-protocol: 'HTTPS'
    path: /
    pathType: null
    host: pmm.yourdomain.com
    rules: []
    tls: []
    #  - secretName: pmm-server-tls
    #    hosts:
    #      - monitoring-service.example.local
    labels: {}

vi add-pmm-server.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: pxc-pmm-server
  namespace: argocd
spec:
  destination:
    name: ''
    namespace: pxc-mysql
    server: 'https://kubernetes.default.svc'
  source:
    path: apps/pxc-pmm-server
    repoURL: 'git@github.com:teamsmiley/argocd-c3.git'
    targetRevision: HEAD
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

ingress๊นŒ์ง€ ์ž˜ ์ ์šฉ๋˜๋Š”๊ฒƒ์„ ์•Œ์ˆ˜์žˆ๋‹ค.

k apply -f add-pmm-server.yaml

์ž˜ ์ ์šฉ๋œ๋‹ค.

Last updated

Was this helpful?