Prometheus+Grafana+Alertmanager

Prometheus+Grafana+Alertmanager


环境准备

  • 拉取镜像包; 并解压

    curl -O http://172.21.48.213/Monitor.tar.gz
    tar zxvf Monitor.tar.gz 
    
  • 上传基础镜像

    docker load -i CentOS_7.9.2009.tar
    

部署 prometheus

  1. 创建工作目录

    mkdir prometheus; cd prometheus/
    
  2. 将软件包, 和配置文件移动到本目录

    cp ../Monitor/prometheus-2.13.0.linux-amd64.tar.gz  ./
    cp ../Monitor/prometheus-2.13.0.linux-amd64/prometheus.yml ./
    cp ../Monitor/alert-rules.yml ./
    
  3. 修改配置文件

     vim prometheus.yml 
     
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - 127.0.0.1:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
       - "alert-rules.yml"
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: 'prometheus'
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
        - targets: ['127.0.0.1:9090']
     
      - job_name: 'node'
        static_configs:
        - targets: ['127.0.0.1:91000']
    
  4. 编写 Dockerfile

    cat Dockerfile 
    FROM centos:centos7.9.2009
    MAINTAINER Chinaskill
    EXPOSE 9090
    
    ADD prometheus-2.13.0.linux-amd64.tar.gz /root/
    ADD alert-rules.yml prometheus.yml prometheus-2.13.0.linux-amd64/
    WORKDIR /root/prometheus-2.13.0.linux-amd64/
    
    CMD ./prometheus --config.file="prometheus.yml" 
    
  5. 构建

    docker build . -t chinaskill-prometheus:v1.1
    # Successfully built 69d859984067
    # Successfully tagged chinaskill-prometheus:v1.1
    
  6. 检测

    docker run -d 69d859984067
    # 9f8434a00474d2b8fd9a7eca3cc92c92e48b6be6ef362ca789368f58b6cf03ec
    docker top 9f8434a00474d2b8fd9a7eca3cc92c92e48b6be6ef362ca789368f58b6cf03ec
    # UID                 PID                 PPID                C                   STIME               TTY                 TIME                # CMD
    # root                68020               67999               3                   20:37               ?                   00:00:00            # ./prometheus --config.file=prometheus.yml
    

部署node-exporte

  1. 创建工作目录

    mkdir node_exporter; cd node_exporter
    
  2. 将软件包移动到工作目录

    cp ../Monitor/node_exporter-0.18.1.linux-amd64.tar.gz ./
    
  3. 编写Dockerfile

    cat Dockerfile 
    FROM centos:centos7.9.2009
    MAINTAINER Chinaskill
    EXPOSE 9100
    
    ADD node_exporter-0.18.1.linux-amd64.tar.gz /root/
    WORKDIR /root/node_exporter-0.18.1.linux-amd64/
    
    CMD ./node_exporter
    
  4. 构建

    docker build . -t chinaskill-node_exporter:v1.1
    # Successfully built aedf06084adf
    # Successfully tagged chinaskill-node_exporter:v1.1
    
  5. 检测

    docker run -d aedf06084adf
    # f6e5f6744fbd06a9ba59cefe47da925274aa6653b2d9e7ab241c430c3957019b
    docker top f6e5f6744fbd06a9ba59cefe47da925274aa6653b2d9e7ab241c430c3957019b
    # UID                 PID                 PPID                C                   STIME               TTY                 TIME                # CMD
    # root                73648               73627               0                   20:43               ?                   00:00:00            # ./node_exporter
    

部署 alterManager

  1. 创建工作目录

    mkdir alertmanager; cd alertmanager
    
  2. 将软件包移动到此目录下

    cp ../Monitor/alertmanager-0.19.0.linux-amd64.tar.gz ./
    
  3. 将alertmanager 目录下的文件移动到此目录下

    cp ../Monitor/alertmanager/alertmanager.yml ./
    
  4. 修改配置

    cat alertmanager.yml 
    global:
      resolve_timeout: 5m
      smtp_smarthost: '114463512@.163.com:465'
      smtp_from: 'alert@163.com'
      smtp_auth_username: '114463512@163.com'
      smtp_auth_password: 'flwlf[a;'     
      smtp_require_tls: false
    
    route:
      receiver: 'default'
      group_wait: 10s
      group_interval: 1m
      repeat_interval: 1h
      group_by: ['alertname']
    
    receivers:
    - name: 'default'
      webhook_configs:
      - url: 'http://127.0.0.1:5001/'
    
    inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      equal: ['alertname', 'instance']
    
  5. 编写Dockerfile

    cat Dockerfile 
    FROM centos:centos7.9.2009
    MAINTAINER Chinaskill
    EXPOSE 9093
    
    
    ADD alertmanager-0.19.0.linux-amd64.tar.gz /root/
    ADD alertmanager.yml /rootalertmanager-0.19.0.linux-amd64/
    WORKDIR /root/alertmanager-0.19.0.linux-amd64/
    
    CMD ./alertmanager --config.file="alertmanager.yml"
    
  6. 构建

    docker build . -t chinaskill-alertmanager:v1.1                            
    # Successfully built 3f3040a0793d
    # Successfully tagged chinaskill-alertmanager:v1.1
    
  7. 检测

    docker run -d 3f3040a0793d
    # b6935ba4fdb76f3eebba3827f498fff6716036b5307c2610df66da99d315e8bd
    docker top b6935ba4fdb76f3eebba3827f498fff6716036b5307c2610df66da99d315e8bd
    # UID                 PID                 PPID                C                   STIME               TTY                 TIME           
    # CMD
    # root                85336               85318               4                   20:55               ?                   00:00:00
    # ./alertmanager --config.file=alertmanager.yml
    

部署grafana

  1. 创建工作目录

    mkdir grafana; cd grafana
    
  2. 拉取软件包

    cp ../Monitor/grafana-6.4.1.linux-amd64.tar.gz ./
    
  3. 编写Dockerfile

    cat Dockerfile 
    FROM centos:centos7.9.2009
    MAINTAINER Chinaskill
    EXPOSE 3000
    
    ADD grafana-6.4.1.linux-amd64.tar.gz /root/
    WORKDIR /root/grafana-6.4.1/bin/
    
    CMD ./grafana-server
    
  4. 构建

    docker build . -t chinaskill-grafana:v1.1
    # Successfully built efddca496757
    # Successfully tagged chinaskill-grafana:v1.1
    
  5. 检测

    docker run -d efddca496757
    # 51227af6ab43d38ccd547fd7a401215ed211dc508366cbcc80138607dc271d46
    docker top 51227af6ab43d38ccd547fd7a401215ed211dc508366cbcc80138607dc271d46
    # UID                 PID                 PPID                C                   STIME               TTY                 TIME          
    # CMD
    # root                93359               93340               6                   21:03               ?                   00:00:0
    # ./grafana-server
    

基于k8s 部署服务

  1. 创建工作目录

    mkdir chinaskill; cd chinaskill/
    
  2. 编写yaml

    cat node.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        run: node
      name: node
    spec:
      nodeSelector:
        kubernetes.io/hostname: master
      containers:
      - image: chinaskill-node_exporter:v1.1
        name: node
      - image: chinaskill-alertmanager:v1.1
        name: alertmanager
      - image: chinaskill-prometheus:v1.1
        name: prometheus
      - image: chinaskill-grafana:v1.1
        name: grafana
        
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: node
    spec:
      ports:
      - name: "3000"
        nodePort: 30020
        port: 3000
        protocol: TCP
        targetPort: 3000
      - name: "31090"
        nodePort: 31090
        port: 9090
        protocol: TCP
        targetPort: 9090
      - name: "32100"
        nodePort: 32100
        port: 9100
        protocol: TCP
        targetPort: 9100
      
      selector:
        run: node
      type: NodePort
    
  3. 构建

    kubectl  apply -f node.yaml 
    # pod/node created
    
  4. 检测

    kubectl  get pod
    # NAME   READY   STATUS    RESTARTS   AGE
    # node   4/4     Running   0          3m17s
    kubectl  get svc node
    #NAME   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)                                        AGE
    #node   NodePort   10.97.22.136   <none>        3000:30020/TCP,9090:31090/TCP,9100:32100/TCP   3m37s
    

posted @ 2022-10-11 10:13  Docker-沫老师  阅读(15)  评论(0)    收藏  举报