精华内容
下载资源
问答
  • 普罗米修斯监控系统部署方式,基于kubernetes系统进行配置
  • 普罗米修斯监控

    2020-11-12 17:42:59
    普罗米修斯 1、安装 安装 2、配置监控 [Prometheus + Grafana(八)系统监控之Kafka] Prometheus 监控之 kafka 3、指令 nohup /data/prometheus-2.21.0.linux-amd64/prometheus --config.file=/data/...

    普罗米修斯

    1、安装

    2、配置监控

    3、指令

    nohup /data/prometheus-2.21.0.linux-amd64/prometheus --config.file=/data/prometheus-2.21.0.linux-amd64/prometheus.yml &
    
    • kakfa监控配置demo
    lowercaseOutputName: true
    
    rules:
    
    - pattern: kafka.producer<type=(.+), client-id=(.+), topic=(.+)><>([a-z-]+)
      name: kafka_producer_$4
      type: GAUGE
      labels:
        resource: "$1"
        clientId: "$2"
        topic: "$3"
    
    - pattern: kafka.producer<type=(.+), client-id=(.+)><>([a-z-]+)
      name: kafka_producer_$3
      type: GAUGE
      labels:
        resource: "$1"
        clientId: "$2"
    
    - pattern: kafka.consumer<type=(.+), partition=(.+), topic=(.+), client-id=(.+)><>([a-z-]+)
      name: kafka_consumer_$5
      type: GAUGE
      labels:
        resource: "$1"
        partition: "$2"
        topic: "$3"
        clientId: "$4"
    
    - pattern: kafka.consumer<type=(.+), client-id=(.+), topic=(.+)><>([a-z-]+)
      name: kafka_consumer_$4
      type: GAUGE
      labels:
        resource: "$1"
        clientId: "$2"
        topic: "$3"
    
    - pattern: kafka.consumer<type=(.+), client-id=(.+)><>([a-z-]+)
      name: kafka_consumer_$3
      type: GAUGE
      labels:
        resource: "$1"
        clientId: "$2"
    
    - pattern: kafka.connect<type=(.+), connector=(.+), task=(.+)><>([a-z-]+)
      name: kafka_connect_$1_$2_$3_$4
      type: GAUGE
      labels:
        resource: "$1"
        connector: "$2"
        task: "$3"
    
    - pattern: kafka.connect<type=(.+), connector=(.+)><>([a-z-]+)
      name: kafka_connect_$2_$3
      type: GAUGE
      labels:
        resource: "$1"
        connector: "$2"
    
    - pattern: kafka.connect<type=(.+)><>([a-z-]+)
      name: kafka_connect_$2
      type: GAUGE
      labels:
        resource: "$1"
    
    
    

    4、 Github

    5、界面

    • 完美

    image-20201111182039360

    6、kakfaConnect监控配置

    使用一下配置请使用默认配置项。

    {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "editable": true,
      "gnetId": null,
      "graphTooltip": 0,
      "id": 7,
      "links": [],
      "panels": [
        {
          "collapsed": false,
          "datasource": null,
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 0
          },
          "id": 22,
          "panels": [],
          "title": "connect",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 1
          },
          "hiddenSeries": false,
          "id": 20,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_task_error_metrics_deadletterqueue_produce_failures ",
              "interval": "",
              "legendFormat": "fail——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_task_error_metrics_total_record_errors ",
              "interval": "",
              "legendFormat": "errors——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "死信队列",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {},
              "unit": "ms"
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 1
          },
          "hiddenSeries": false,
          "id": 14,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_source_task_metrics_poll_batch_avg_time_ms ",
              "interval": "",
              "legendFormat": "avg——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_source_task_metrics_poll_batch_max_time_ms ",
              "interval": "",
              "legendFormat": "max——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "poll 耗时",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "ms",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 9
          },
          "hiddenSeries": false,
          "id": 16,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_source_task_metrics_source_record_poll_total ",
              "interval": "",
              "legendFormat": "poll——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_source_task_metrics_source_record_write_total ",
              "interval": "",
              "legendFormat": "send——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Source总记录数",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 9
          },
          "hiddenSeries": false,
          "id": 18,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_source_task_metrics_source_record_poll_rate ",
              "interval": "",
              "legendFormat": "poll——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_source_task_metrics_source_record_write_rate ",
              "interval": "",
              "legendFormat": "send——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Source速率",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 17
          },
          "hiddenSeries": false,
          "id": 12,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_sink_task_metrics_sink_record_read_total ",
              "interval": "",
              "legendFormat": "read——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_sink_task_metrics_sink_record_send_total ",
              "interval": "",
              "legendFormat": "send——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "sink 总记录数",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 17
          },
          "hiddenSeries": false,
          "id": 10,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_connect_sink_task_metrics_sink_record_read_rate ",
              "interval": "",
              "legendFormat": "read——{{instance}}——{{connector}}——{{task}}",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_sink_task_metrics_sink_record_send_rate ",
              "interval": "",
              "legendFormat": "send——{{instance}}——{{connector}}——{{task}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "sink 平均速率",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {},
              "mappings": [],
              "thresholds": {
                "mode": "absolute",
                "steps": [
                  {
                    "color": "green",
                    "value": null
                  }
                ]
              },
              "unit": "ms"
            },
            "overrides": []
          },
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 25
          },
          "id": 8,
          "options": {
            "reduceOptions": {
              "calcs": [
                "last"
              ],
              "fields": "",
              "values": false
            },
            "showThresholdLabels": false,
            "showThresholdMarkers": true
          },
          "pluginVersion": "7.1.5",
          "targets": [
            {
              "expr": "kafka_connect_connect_worker_rebalance_metrics_time_since_last_rebalance_ms ",
              "interval": "",
              "legendFormat": "{{instance}}--再平衡距离现在",
              "refId": "C"
            }
          ],
          "timeFrom": null,
          "timeShift": null,
          "title": "再平衡时间",
          "type": "gauge"
        },
        {
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {},
              "mappings": [],
              "thresholds": {
                "mode": "absolute",
                "steps": [
                  {
                    "color": "green",
                    "value": null
                  },
                  {
                    "color": "red",
                    "value": 80
                  }
                ]
              }
            },
            "overrides": []
          },
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 25
          },
          "id": 6,
          "options": {
            "reduceOptions": {
              "calcs": [
                "last"
              ],
              "fields": "",
              "values": false
            },
            "showThresholdLabels": false,
            "showThresholdMarkers": true
          },
          "pluginVersion": "7.1.5",
          "targets": [
            {
              "expr": "kafka_connect_connect_worker_rebalance_metrics_epoch ",
              "interval": "",
              "legendFormat": "{{instance}}",
              "refId": "A"
            }
          ],
          "timeFrom": null,
          "timeShift": null,
          "title": "领导者年龄",
          "type": "gauge"
        },
        {
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {},
              "mappings": [],
              "thresholds": {
                "mode": "absolute",
                "steps": [
                  {
                    "color": "green",
                    "value": null
                  },
                  {
                    "color": "red",
                    "value": 80
                  }
                ]
              }
            },
            "overrides": []
          },
          "gridPos": {
            "h": 9,
            "w": 12,
            "x": 0,
            "y": 33
          },
          "id": 4,
          "options": {
            "reduceOptions": {
              "calcs": [
                "last"
              ],
              "fields": "",
              "values": false
            },
            "showThresholdLabels": false,
            "showThresholdMarkers": true
          },
          "pluginVersion": "7.1.5",
          "targets": [
            {
              "expr": "kafka_connect_connect_worker_metrics_task_startup_success_total",
              "interval": "",
              "legendFormat": "{{instance}}--成功启动",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_connect_worker_metrics_task_count ",
              "interval": "",
              "legendFormat": "{{instance}}--Task",
              "refId": "B"
            }
          ],
          "timeFrom": null,
          "timeShift": null,
          "title": "Task数量",
          "type": "gauge"
        },
        {
          "datasource": "Prometheus",
          "fieldConfig": {
            "defaults": {
              "custom": {},
              "mappings": [],
              "thresholds": {
                "mode": "absolute",
                "steps": [
                  {
                    "color": "green",
                    "value": null
                  },
                  {
                    "color": "red",
                    "value": 80
                  }
                ]
              }
            },
            "overrides": []
          },
          "gridPos": {
            "h": 9,
            "w": 12,
            "x": 12,
            "y": 33
          },
          "id": 2,
          "options": {
            "orientation": "auto",
            "reduceOptions": {
              "calcs": [
                "last"
              ],
              "fields": "",
              "values": false
            },
            "showThresholdLabels": false,
            "showThresholdMarkers": true
          },
          "pluginVersion": "7.1.5",
          "targets": [
            {
              "expr": "kafka_connect_connect_worker_metrics_connector_startup_success_total",
              "interval": "",
              "legendFormat": "{{instance}}--成功启动",
              "refId": "A"
            },
            {
              "expr": "kafka_connect_connect_worker_metrics_connector_count",
              "interval": "",
              "legendFormat": "{{instance}}--连接器",
              "refId": "B"
            }
          ],
          "timeFrom": null,
          "timeShift": null,
          "title": "连接器器",
          "type": "gauge"
        },
        {
          "collapsed": true,
          "datasource": null,
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 42
          },
          "id": 28,
          "panels": [
            {
              "aliasColors": {},
              "bars": false,
              "dashLength": 10,
              "dashes": false,
              "datasource": null,
              "fieldConfig": {
                "defaults": {
                  "custom": {}
                },
                "overrides": []
              },
              "fill": 1,
              "fillGradient": 0,
              "gridPos": {
                "h": 8,
                "w": 12,
                "x": 0,
                "y": 2
              },
              "hiddenSeries": false,
              "id": 24,
              "legend": {
                "avg": false,
                "current": false,
                "max": false,
                "min": false,
                "show": true,
                "total": false,
                "values": false
              },
              "lines": true,
              "linewidth": 1,
              "nullPointMode": "null",
              "percentage": false,
              "pluginVersion": "7.1.5",
              "pointradius": 2,
              "points": false,
              "renderer": "flot",
              "seriesOverrides": [],
              "spaceLength": 10,
              "stack": false,
              "steppedLine": false,
              "targets": [
                {
                  "expr": "kafka_producer_producer_metrics_record_send_total ",
                  "interval": "",
                  "legendFormat": "send——{{instance}}",
                  "refId": "B"
                }
              ],
              "thresholds": [],
              "timeFrom": null,
              "timeRegions": [],
              "timeShift": null,
              "title": "总记录数",
              "tooltip": {
                "shared": true,
                "sort": 0,
                "value_type": "individual"
              },
              "type": "graph",
              "xaxis": {
                "buckets": null,
                "mode": "time",
                "name": null,
                "show": true,
                "values": []
              },
              "yaxes": [
                {
                  "format": "short",
                  "label": null,
                  "logBase": 1,
                  "max": null,
                  "min": "0",
                  "show": true
                },
                {
                  "format": "short",
                  "label": null,
                  "logBase": 1,
                  "max": null,
                  "min": null,
                  "show": true
                }
              ],
              "yaxis": {
                "align": false,
                "alignLevel": null
              }
            },
            {
              "aliasColors": {},
              "bars": false,
              "dashLength": 10,
              "dashes": false,
              "datasource": null,
              "fieldConfig": {
                "defaults": {
                  "custom": {}
                },
                "overrides": []
              },
              "fill": 1,
              "fillGradient": 0,
              "gridPos": {
                "h": 8,
                "w": 12,
                "x": 12,
                "y": 2
              },
              "hiddenSeries": false,
              "id": 26,
              "legend": {
                "avg": false,
                "current": false,
                "max": false,
                "min": false,
                "show": true,
                "total": false,
                "values": false
              },
              "lines": true,
              "linewidth": 1,
              "nullPointMode": "null",
              "percentage": false,
              "pluginVersion": "7.1.5",
              "pointradius": 2,
              "points": false,
              "renderer": "flot",
              "seriesOverrides": [],
              "spaceLength": 10,
              "stack": false,
              "steppedLine": false,
              "targets": [
                {
                  "expr": "kafka_producer_producer_topic_metrics_record_send_rate ",
                  "interval": "",
                  "legendFormat": "send——{{instance}}",
                  "refId": "B"
                }
              ],
              "thresholds": [],
              "timeFrom": null,
              "timeRegions": [],
              "timeShift": null,
              "title": "速率",
              "tooltip": {
                "shared": true,
                "sort": 0,
                "value_type": "individual"
              },
              "type": "graph",
              "xaxis": {
                "buckets": null,
                "mode": "time",
                "name": null,
                "show": true,
                "values": []
              },
              "yaxes": [
                {
                  "format": "short",
                  "label": null,
                  "logBase": 1,
                  "max": null,
                  "min": "0",
                  "show": true
                },
                {
                  "format": "short",
                  "label": null,
                  "logBase": 1,
                  "max": null,
                  "min": null,
                  "show": true
                }
              ],
              "yaxis": {
                "align": false,
                "alignLevel": null
              }
            }
          ],
          "title": "Producer",
          "type": "row"
        },
        {
          "collapsed": false,
          "datasource": null,
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 43
          },
          "id": 34,
          "panels": [],
          "title": "consumer",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 44
          },
          "hiddenSeries": false,
          "id": 30,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_consumer_consumer_fetch_manager_metrics_records_consumed_total{topic=\"cdc_test_user\"}",
              "interval": "",
              "legendFormat": "{{client_id}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "总记录数",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 44
          },
          "hiddenSeries": false,
          "id": 32,
          "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "percentage": false,
          "pluginVersion": "7.1.5",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate",
              "interval": "",
              "legendFormat": "{{client_id}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "速率",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        }
      ],
      "refresh": "5s",
      "schemaVersion": 26,
      "style": "dark",
      "tags": [],
      "templating": {
        "list": []
      },
      "time": {
        "from": "now-1h",
        "to": "now"
      },
      "timepicker": {
        "refresh_intervals": [
          "5s",
          "10s",
          "30s",
          "1m",
          "5m",
          "15m",
          "30m",
          "1h",
          "2h",
          "1d"
        ]
      },
      "timezone": "",
      "title": "kakfa Connector",
      "uid": "bwy32RoMz",
      "version": 11
    }
    
    展开全文
  • 1、监控linux机器node-exporter 被监控的机器安装https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz这里导入的数据源非彼数据源 ,而是用 grafana画...

    1、监控linux机器

    node-exporter 被监控的机器安装

    https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz

    5b75be1d660d1d3cdd040aed11a71430.png

    这里导入的数据源非彼数据源 ,而是用 grafana画好的 dashborad

    f51f01037047d6e5481845262ff32456.png

    这里的数据源 才是选择 prometeus 的数据源

    5b3e6c0c2ec3496338095ea679e9e3f8.png

    配置----piechart插件

    安装pie插件

    官网:https://grafana.net/plugins/grafana-piechart-panel  

    grafana的默认插件目录是/var/lib/grafana/plugins,可以将下载好的插件解压到这个目录,重启grafana即可

    service grafana-server restart

    /usr/sbin/grafana-cli plugins ls  #查看已安装插件

    276a13396873b99f33592ea601ea2c5d.png

    启动

    1c216643e84538a63d3e825a06381cbe.png

    效果图

    06b0689374081601cfd2361a1225d1a1.png

    2、监控Windows机器

    wmi-exporter

    被监控windows机器安装wmi-exporter,会自动创建一个开机自启的服务

    https://github.com/martinlindhe/wmi_exporter/releases

    默认wmi-exporter 端口为:9182

      - job_name: 'Prometheus'    static_configs:

      - targets: ['118.190.217.164:9182']

    3、监控mysql

    3.1、配置mysql

    # 由于小编的服务器是空的,所以需要安装一下这里也做一下记录

    # 查看是否安装mysqlyum list installed | grep mysql# 安装步骤1、下载mysql 包rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm2、安装mysqlyum install -y mysql-server# 设置开机启动systemctl enable mysqld.service# 检查是否安装了开机启动systemctl list-unit-files | grep mysqld# 设置开启服务systemctl start mysqld.service# 查看默认密码grep 'temporary password' /var/log/mysqld.log# 登录mysqlmysql -uroot -p # 修改当前用户密码SET PASSWORD = PASSWORD('123456');# 开启远程登录,授权root远程登录GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456!' WITH GRANT OPTION;# 刷新立即生效

    flush privileges;

    3.2、exporter

    1、被监控mysql机器安装mysqld-exporter

    https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz

    tar -C /usr/local/ -xvf mysqld_exporter-0.11.0.linux-amd64.tar.gz

    2、设置配置文件,user为数据库登录用户,password为这个用户的密码

    vi .my.cnf

    [client]user=root

    password=123456

    3、启动mysqld-exporter

    d6f620abcc6fc39f01004da28e50d97f.png

    4、prometheus配置文件中加入mysql监控并重启

    vim /root/prometheus/prometheus/prometheus.yml# mysql-exporter 默认端口为 9104- job_name: 'MySQL'    static_configs:    - targets: ['118.190.217.164:9104']

    5、设置数据源 grafana界面添加`mysql数据源

    a08037da2a555a3df082d45ccd311d74.png

    007f1f022b09b085ce79c6496e0870e8.png

    69d07376b873880b3e1b649452249749.png

    添加需要被监控的数据库及相关信息

    0af7d51e0fd1dca309e3364d3d9f9dfc.png

    测试是否成功,如下图:

    80472f3f1fcab7448e7046ed38069e2c.png

    重启Prometheus服务就可以看到Mysql的配置

    46ff312241dd9a17ed3e89de55a3d1ae.png

    6、导入配置好的dashboard,数据源选择mysql数据源即可。(刚安装的所以信息较少)

    08dabd64b076d35f0d7b5a02d3940d81.png

    4、 监控Redis

    4.1、配置redis

    我们直接去redis 的官网下载:

    c579f9c52886bfcc999cf3a08f282dac.png

    wget http://download.redis.io/releases/redis-5.0.8.tar.gztar xzf redis-5.0.8.tar.gz -C /usr/localcd /usr/local/redis-5.0.8makesrc/redis-server

    发现以下异常警告,需要对Redis做一些配置。

    ae50492c0a30ec17604804f659cae0e1.png

    Redis常用配置

    vim redis.conf

    解决方案

    考虑到redis一般都是部署在服务器上作为服务存在的。所以,本文的解决方案都是持久性配置,不是临时配置。

    第一个警告

    net.core.somaxconn = 1024添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

    第二个警告

    vm.overcommit_memory = 1添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

    第三个警告

    echo never > /sys/kernel/mm/transparent_hugepage/enabled添加到/etc/rc.local中,然后执行source /etc/rc.local生效配置。

    #修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。

    daemonize no

    #可修改默认监听端口,如果改了端口启动时需要指定端口号,“ redis-cli -p 6380”

    port 6379

    #修改生成默认日志文件位置

    logfile "/usr/local/redis-5.0.8/redis.log""

    #配置持久化文件存放位置

    dir ./redisData

    #设置redis的密码,默认情况下“requirepass foobared”是被注释的,去掉注释,将“ foobared”改为要设置的密码,重启redis后生效requirepass foobared# 例如

    requirepass 123456

    6c0dabd28128901890412f043c558c94.png

    8fd31134cee6b0c4fd6c6d3743a0119f.png

    16ad23fd97c0a4d2c5043fc6fcf4b3a7.png

    进入redis目录启动redis (加上 & 号程序会以后台方式运行)

    ./redis-server &

    4.2、exporter

    1、安装redis_exporter

    tar xf redis_exporter-v0.15.0.linux-amd64.tar.gz -C /usr/local/

    cd /usr/local/

    2、启动redis_exporter

    默认redis_exporter端口为9121

    ./redis_exporter redis//118.190.217.164:6379 & -web.listenaddress 118.190.217.164:9121

    fe1ca9d2b1a9af7f500375d919082d8a.png

    3、prometheus配置文件中加入redis监控并重启

    # 切记要重启vim /root/prometheus/prometheus/prometheus.yml- job_name: 'Redis'    static_configs:

       - targets: ['118.190.217.164:9121']

    4、grafana导入画好的dashboard

    5d4374e0cb41379ab86c14366ea61cdc.png

    重新启动服务

    488d06b42f38751e86c34f8c2d0ecca7.png

    5550bfa9cebcd00c1c160a22f4a6a076.png

    6f8c6bf5b5db793c975872c9f4217c20.png

    5、效果总览

    623286dc60568ead359a9145a8ef2121.png

    a6ba0852a3504a0724eddec8e6988a9f.png

    1fc5b42a054ced9b0cd703bd9c634e85.png

    福利:

    7c49b3246b53ecd247bf8c69aab63742.png

    4e218fbfcee401c39d3cba2ddcd14ca2.gif

    45f4f06dcd12742e27a837da51713971.png

    f42a384278c7b40d8bc74129928d5e78.png

    在看和转发

    都是一种支持

    9aa8bdd34e58bb366ed094bab4826342.gif

    展开全文
  • 搞定Prometheus普罗米修斯监控系统

    千次阅读 多人点赞 2021-01-17 00:33:59
    能够通过安装node_exporter监控远程linux 能够通过安装mysqld_exporter监控远程mysql数据库 能够安装grafana 能够在grafana添加prometheus数据源 能够在grafana添加监控cpu负载的图形 能够在grafana图形显示...

    目录

     

    学习目录

    任务背景

    任务分析

    一、普罗米修斯概述

    二、时间序列数据

    三、实验环境准备

    1、安装prometheus

    2、prometheus界面

    3、主机数据展示

    4、普罗米修斯默认的监控图像​

    四、使用普罗米修斯监控Linux 主机

    1、node组件介绍

    2、安装node_exporter

    3、让普罗米修斯监控可以拉取node 节点信息

    五、使用普罗米修斯监控mysqld 服务

    1、如何监控其他服务

    2、安装mysqld_exporter 组件

    3、安装mysql,并启动

    4、创建mysql 账号

    5、在mysqld_exporter 组件中配置msyql 信息

    6、启动mysqld_exporter组件

    7、让普罗米修斯监控可以拉取mysqld 节点信息

    六、Grafana 可视化工具

    1、什么是Grafana

    2、安装Grafana

    3、登录Grafana 

    4、添加普罗米修斯的数据源

    5、为添加好的数据源做图形显示

    七、Grafana图形显示MySQL监控数据

    1、修改配置文件安装模板

    2、在Grafana 中导入json 文件

    3、设置数据库源

    4、更改数据源名称

    八、Grafana + onealert 报警

    1、onealert

    2、在Grafana中配置Webhook URL


    学习目录

    • 能够安装prometheus服务器
    • 能够通过安装node_exporter监控远程linux
    • 能够通过安装mysqld_exporter监控远程mysql数据库
    • 能够安装grafana
    • 能够在grafana添加prometheus数据源
    • 能够在grafana添加监控cpu负载的图形
    • 能够在grafana图形显示mysql监控数据
    • 能够通过grafana+onealert实现报警

    任务背景

    AAA公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行为业务监控,责成运维部门来实施这个项目。

    任务要求:

    1. 部署监控服务器,实现7*24实时监控
    2. 针对公司的为一务及研发部门设计监控系统,对监控项和触发器拿出合理意见
    3. 做好问题预警机制,对可能出的问题要及时告警并形成严格的处理机制
    4. 做好监控告警系统,要求可以实现告警分级
      1. 一级报警 电话通知
      2. 二级报警 微信通知
      3. 三级报警 邮件通知
    5. 处理好公司服务器异地集中监控问题,K8S内部使用的监控系统就是普罗米修斯


    任务分析

    为什么要监控?

    实时收集数据,通过报警及时发现问题 ,及时处理。数据为优化也可以提供依据。

    监控四要素:

    • 监控对象:【主机状态、服务、资源、页面、url】
    • 用什么监控:【zabbix-server zabbix-agent】 -> 普罗米修斯监控
    • 什么时间监控:【7 x 24、5x8】
    • 报警给谁:【管理员】

    项目选型:

    • mrtg(Multi Router Traffic Grapher)通过snmp 协议得到设备的流量信息,并以包含PNG格式的图形的HTML文档方式显示给用户。
    • cacti(仙人掌)用php语言实现的一个软件,它的主要功能是用snmp 服务获取数据,然后用rrdtool 存储和更新数据。官网地址:https://www.cacti.net/
    • ntop 官网地址:https://www.stopo.org/
    • nagios 能够跨平台,插件多,报警功能强大。官网地址: https://www.nagios.org/
    • centreon 底层使用的就是nagios。是一个nagios整合版软件。官网地址:https://www.centreon.com/
    • ganglia 设计用于测量数以千计的节点,资源消耗非常小。官网地址:http://ganglia.info/
    • open-falcon 小米发布的运维监控软件,高效率,高可用。时间较短,用户基数小。官网地址: http://open-falcon.org/
    • zabbix 跨平台,画图,多条件告警,多种API接口。使用基数特别大。官网地址: https://www.zabbix.com/
    • prometheus 基于时间序列的数值数据的容器监控解决方案。官网地址: https://prometheus.io/
       

    综合分析:Prometheus比较适合公司的监控需求


    一、普罗米修斯概述

    Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。https://prometheus.io/docs/introduction/overview/

    二、时间序列数据

    1、什么是序列数据
    时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。应用的场景很多, 如:

    • 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距
    • 离等等。每时每刻都要将数据记录下来做分析。
    • 某一个地区的各车辆的行驶轨迹数据
    • 传统证券行业实时交易数据
    • 实时运维监控数据等

    2、时间序列数据特点

    • 性能好

    关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。

    • 存储成本低

    高效的压缩算法,节省存储空间,有效降低IO,Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)

    3、Prometheus的主要特征

    • 多维度数据模型
    • 灵活的查询语言
    • 不依赖分布式存储,单个服务器节点是自主的
    • 以HTTP方式,通过pull模型拉去时间序列数据
    • 也可以通过中间网关支持push模型
    • 通过服务发现或者静态配置,来发现目标服务对象
    • 支持多种多样的图表和界面展示

    4、普罗米修斯原理架构图


    三、实验环境准备

    序号服务器IP角色
    1node-01 (172.20.10.7)被监控服务器
    2node-02 (172.20.10.8)Prometheus 服务器
    3node-03 (172.20.10.9)grafana 服务器

    1. 静态ip(要求能上外网)【三台服务器都要操作】
    2. 主机名【三台服务器都要操作】: vi /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    ## BigData CDH 5.x
    172.20.10.7 node-01.bigdata.com node-01
    172.20.10.8 node-02.bigdata.com node-02
    172.20.10.9 node-03.bigdata.com node-03

    3. 时间同步(时间同步一定要确认一下)【三台服务器都要操作】

    # crontab -e
    # .------------------------------------------minute(0~59)
    # | .----------------------------------------hours(0~23)
    # | | .--------------------------------------day of month(1~31)
    # | | | .------------------------------------month(1~12)
    # | | | | .----------------------------------day of week(0~6)
    # | | | | | .--------------------------------command
    # | | | | | |
    # | | | | | |
    */1 * * * * /usr/sbin/ntpdate cn.pool.ntp.org

    4. 关闭防火墙

    systemctl stop firewalld       (当前开机状态生效)
    systemctl disable firewalld    (永久生效,重启才生效)
    systemctl status firewalld 

    5. SELINUX关闭

    setenforce 0   (当前开机状态生效)
    vi /etc/selinux/config (SELINUX=disabled)   (永久生效,重启生效)

    1、安装prometheus

    https://prometheus.io/download/ 下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译

    第一步:上传软件prometheus-2.5.0.linux-amd64.tar.gz 到Linux服务器目录下:/home/tools

    第二步:解压软件:tar -zxvf /home/tools/prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/

    第三步:创建prometheus软链接:ln -s /usr/local/prometheus-2.5.0.linux-amd64 /usr/local/prometheus

    第四步:启动普罗米修斯软件

    直接使用默认配置文件启动
    [root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    
    注: &连接符代表后台运行,不占用终端窗口

    第五步:测试端口占用情况(判断是否真正的启动了)

    如果没有安装的话:yum install lsof
    [root@server ~]# lsof -i:9090   或   ss -naltp | grep 9090

    ss -naltp | grep 9090

    2、prometheus界面

    通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090

    默认只监控了本机一台,点Status --》点Targets --》可以看到只监控了本机


    3、主机数据展示

    通过http://服务器IP:9090/metrics可以查看到监控的数据

    在web主界面可以通过关键字查询监控项

    4、普罗米修斯默认的监控图像


    四、使用普罗米修斯监控Linux 主机

    1、node组件介绍

    在远程linux 主机(被监控端agent)上安装node_exporter组件(这样普罗米修斯就可以接收到其收集系统)。

    下载地址:https://prometheus.io/download/

    2、安装node_exporter

    第一步:上传软件包到Linux 服务器中(Agent 被监控端)node-01服务器中:node_exporter-0.16.0.linux-amd64.tar.gz

    第二步:解压安装node_exporter 组件

    tar -zxvf /home/tools/node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
    
    ln -s /usr/local/node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter

    第三步:启动node_exporter组件

    里面就一个启动命令node_exporter,可以直接使用此命令启动
    ls /usr/local/node_exporter/
    LICENSE node_exporter NOTICE
    
    启动指令,&代表后台运行,nohup代表永久运行
    nohup /usr/local/node_exporter/node_exporter &

    扩展: nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。
     

    第四步:查看9100 端口占用情况

    ss -naltp | grep 9100

    第五步:使用http 协议 + 9100 端口收集Linux 主机信息

    通过浏览器访问 http://被监控端IP:9100/metrics 就可以查看到node_exporte在被监控端收集的监控信息。即:http://node-01:9100/metrics


    3、让普罗米修斯监控可以拉取node 节点信息

    回到prometheus服务器的配置文件里添加被监控机器的配置段
     

    在主配置文件最后加上下面三行

    vi /usr/local/prometheus/prometheus.yml

    具体配置如下:文件的最后添加内容

      
      - job_name: 'node-01_agent1' # 取一个job名称来代 表被监控的机器
        static_configs:
        - targets: ['172.20.10.7:9100'] # 这里改成被监控机器 的IP,后面端口接9100 

    设置完成后,保存,然后重新启动Prometheus  普罗米修斯监控系统 

    改完配置文件后,重启服务 
    [root@node-02 prometheus]# pkill prometheus 
    [root@node-02 prometheus]# lsof -i:9090 
    
    # 确认端口没有进程占 用
    [root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    
    [root@node-02 prometheus]# lsof -i:9090    # 确认端口被占用,说明重启成功
    或
    [root@node-02 prometheus]# ss -naltp | grep 9090

    回到web 管理界面 --》点Status --》 点Targets --》可以看到多了一台监控目标

    通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090


    五、使用普罗米修斯监控mysqld 服务

    1、如何监控其他服务

    在node_exporter 的基础上,可以根据自己的需要收集其他信息

    2、安装mysqld_exporter 组件

    下载地址:https://prometheus.io/download/

    第一步:上传组件到Linux 服务器

    第二步:解压与安装mysqld组件

    tar -zxvf /home/tools/mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
    
    ln -s /usr/local/mysqld_exporter-0.11.0.linux-amd64 /usr/local/mysqld_exporter
    
    [root@node-01 local]# ls /usr/local/mysqld_exporter
    LICENSE  mysqld_exporter  NOTICE

    3、安装mysql,并启动

    安装过程。这里不要误解哈,因为之前node-01节点上已经安装了社区版本的mysql服务,所以想直接使用。但发现还不是很满意,所以又在node-03上安装了mariadb

    安装mariadb数据库,并授权
    [root@node-03 ~]# yum install mariadb\* -y
    [root@node-03 ~]# systemctl restart mariadb
    [root@node-03 ~]# systemctl enable mariadb
    [root@node-03 ~]# mysql

    这个过程比较简单【跳过】:ss -naltp | grep 3306

    4、创建mysql 账号

    mysql -u root -p aa_bb_CC1234
    
    grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by 'aa_bb_CC1234';
    flush privileges;
    quit

    5、在mysqld_exporter 组件中配置msyql 信息

    这个文件是手工创建

    创建一个mysql 配置文件,写上连接的用户名与密码(和上面的授权的用户名
    和密码要对应)
    [root@node-01 mysqld_exporter]# vi /usr/local/mysqld_exporter/.my.cnf
    [client]
    user=mysql_monitor
    password=aa_bb_CC1234

    6、启动mysqld_exporter组件

    启动mysqld_exporter
    [root@node-01 ~]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
    
    
    确认端口(9104)
    [root@node-01 ~]# ss -naltp | grep 9104


    7、让普罗米修斯监控可以拉取mysqld 节点信息

    回到prometheus服务器的配置文件里添加被监控机器的配置段
     

    在主配置文件最后加上下面三行

    vi /usr/local/prometheus/prometheus.yml

    具体配置如下:文件的最后添加内容

      
      - job_name: 'mysql_agent' # 取一个job名称来代 表被监控的机器
        static_configs:
        - targets: ['172.20.10.7:9104'] # 这里改成被监控机器 的IP,后面端口接9100 

    设置完成后,保存,然后重新启动Prometheus  普罗米修斯监控系统 

    改完配置文件后,重启服务 
    [root@node-02 prometheus]# pkill prometheus 
    [root@node-02 prometheus]# lsof -i:9090 
    
    # 确认端口没有进程占 用
    [root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    
    [root@node-02 prometheus]# lsof -i:9090    # 确认端口被占用,说明重启成功
    或
    [root@node-02 prometheus]# ss -naltp | grep 9090

    回到web 管理界面 --》点Status --》 点Targets --》可以看到多了一台监控目标

    通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090


    六、Grafana 可视化工具

    1、什么是Grafana

    Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。

    网址: https://grafana.com/

    它是开源的时序数据分析平台    目前支持52种数据源,其中promethus 就是其中支持的一种

    2、安装Grafana

    下载地址:https://grafana.com/grafana/download

    我这里选择的rpm包,下载后直接rpm -ivh安装就OK
    [root@node-03 ~]# rpm -ivh /home/tools/grafana-5.3.4-1.x86_64.rpm
    
    或
    yum install grafana-5.3.4-1.x86_64.rpm -y
    
    启动服务
    [root@node-03 ~]# systemctl start grafana-server
    设置开机自启动
    [root@node-03 ~]# systemctl enable grafana-server
    
    确认端口(3000)
    [root@node-03 ~]# ss -naltp | grep 3000

    3、登录Grafana 

    http://node-03:3000/login

    默认的账号与密码:admin。首次登录后,需要对admin的密码进行更改,如:123456

    4、添加普罗米修斯的数据源

    第一步:添加数据源

    第二步:设置数据源、数据源名称、类型、IP地址、端口号...

    5、为添加好的数据源做图形显示

    第一步:点击加号,选择Dashboard

    第二步:增加一个图形

    第三步:选择需要呈现图形的数据(小三角 =》Edit 编辑)

    第四步:选择DataSource 数据源,选择普罗米修斯 

    第五步:可以把我们设计完的图形保存起来

    扩展,第六步:根据条件帅选我们想要的数据


    七、Grafana图形显示MySQL监控数据

    1、修改配置文件安装模板

    在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)

    参考网址: https://github.com/percona/grafana-dashboards
     

    在grafana配置文件里最后加上以下三行
    [root@node-03 ~]# vi /etc/grafana/grafana.ini
    [dashboards.json]
    enabled = true
    path = /var/lib/grafana/dashboards
    
    
    [root@node-03 ~]# cd /var/lib/grafana/
    [root@node-03 grafana]# git clone https://github.com/percona/grafana-dashboards.git
    [root@grafana grafana]# cp -r grafanadashboards/dashboards/ /var/lib/grafana/
    
    如果网速过慢,可以先通过windows下载好再上传至服务器
    mkdir /var/lib/grafana/dashboards
    然后下载好的dashboars目录下的.json文件全部上传至 /var/lib/grafana/dashboards
    
    重启grafana服务
    [root@node-03 grafana]# systemctl restart grafana-server

    2、在Grafana 中导入json 文件

    选择上传MySQL_Overview.json,设置完成后,单点Import 

    3、设置数据库源

    点import导入后,报prometheus数据源找不到,因为这些json文件里默认要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫 prometheus_data(坑啊

    4、更改数据源名称

    那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:第一个字母P是大写)。然后再回去刷新,就有数据了(如下图所示)


    八、Grafana + onealert 报警

    1、onealert

    https://caweb.aiops.com/#/integrate,需要先在这个系统中进行注册一个账号。然后登录。

    2、在Grafana中配置Webhook URL

    第一步:在Grafana中创建Notification channel,选择类型为Webhook;

    第三步:将配置的Webhook Notification Channel添加到Grafana Alert中

    设置告警内容:发送给运维负责人

    CPU负载测试

    cat /dev/urandom | md5sum

    测试告警情况:

     

    测试结果:

    告警后,邮箱收到报警邮件

    如果告警消除后,也会收到一封告警消除的邮件。

    同时,使用手机扫描二维码,也可以详细了解告警信息。


    文章最后,给大家推荐一些受欢迎的技术博客链接

    1. JAVA相关的深度技术博客链接
    2. Flink 相关技术博客链接
    3. Spark 核心技术链接
    4. 设计模式 —— 深度技术博客链接
    5. 机器学习 —— 深度技术博客链接
    6. Hadoop相关技术博客链接
    7. 超全干货--Flink思维导图,花了3周左右编写、校对
    8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
    9. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
    10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
    11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】

    欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                               

           

     

     

    展开全文
  • 第一部分:课前小菜: 例子: 分布式:将多台Linux主机组合在一起,做成像一...第二部分:普罗米修斯监控服务之-监控携带metric接口的服务 1.普罗米修斯监控分为两种: ​ 1、携带metric接口的服务 ​ 2、不携带metri

    第一部分:课前小菜:

    image-20210425213550961

    例子:
    分布式:将多台Linux主机组合在一起,做成像一台主机一样来使用
    微服务:将一台Linux主机拆分成多台Linux使用
    淘宝:搜索页、商品详情页、订单页、支付页、物流、评论
    
    淘宝:服装、手机数码、家纺、手表、房产
    
    微服务:按照不同的功能、按照不同的业务拆分成多个模块,以至于某一个模块出问题不至于导致整站的不可用
    
    

    image-20210425181506948

    第二部分:普罗米修斯监控服务之-监控携带metric接口的服务

    1.普罗米修斯监控分为两种:

    ​ 1、携带metric接口的服务

    ​ 2、不携带metric接口的服务

    普罗米修斯监控携带metric接口的服务的流程

    ​ 1、通过EndPrints获取需要监控的ETCD的地址

    ​ 2、创建Service,给予集群内部的ServiceMoniter使用

    ​ 3、创建ServiceMoniter部署需要访问证书

    ​ 4、重启普罗米修斯监控Pod,载入监控项

    2.携带metric接口的意义

    携带metric接口的服务就表示可以通过metric接口获取服务的监控项和监控信息。本次课以ETCD作为载体。
    

    3.测试ETCD服务的metrics接口

    ##如果出现一大堆东西代表metric接口正常携带
    (curl -k允许连接到SSL站点而不需要证书(H))
    curl -k --cert /etc/kubernetes/pki/apiserver-etcd-client.crt --key /etc/kubernetes/pki/apiserver-etcd-client.key https://127.0.0.1:2379/metrics
    (简略的写一点)
    # HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
    # TYPE promhttp_metric_handler_requests_total counter
    promhttp_metric_handler_requests_total{code="200"} 0
    promhttp_metric_handler_requests_total{code="500"} 0
    promhttp_metric_handler_requests_total{code="503"} 0
    
    
    

    image-20210425182127434

    4.关于端口的说明

    [root@k8s-master-01 ~]# netstat -lntp | grep etcd
    tcp        0      0 192.168.15.31:2379      0.0.0.0:*               LISTEN      2456/etcd           
    tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      2456/etcd           
    tcp        0      0 192.168.15.31:2380      0.0.0.0:*               LISTEN      2456/etcd           
    tcp        0      0 127.0.0.1:2381          0.0.0.0:*               LISTEN      2456/etcd           
    [root@k8s-master-01 ~]# 
    
    

    5.关于ServiceMonitor的简介(非常重要)

    Prometheus Operator默认的监控指标并不能完全满足实际的监控需求,这时候就需要我们自己根据业务添加自定义监控。添加一个自定义监控的步骤如下:
    1、创建一个ServiceMonitor对象,用于Prometheus添加监控项
    2、为ServiceMonitor对象关联metrics数据接口的Service对象
    3、确保Services对象可以正确获取到metrics数据
    
    
    ServiceMonitor通过标签筛选需要被监控的对象(k8s service),并且指定从它的哪个端口和url路径来拉取指标,并定义拉取操作的间隔时间。
    
    ServiceMonitor本质是对 prometheus 配置中指标数据来源(endpoint)的抽象,每新建一个 service monitor 资源,prometheus operator 就会在自定义资源 promethues 的配置文件中添加相应的配置,以达到和使用原生 prometheus 相同的效果,这就把原来需要需要手动和统一配置的任务通过 crd 来自动化实现了。
    
    

    第三部分:通过普罗米修斯监控ETCD(携带metric的一种类型)

    1.流程梳理:普罗米修斯监控携带metric接口的服务的流程:

    ​ 1、通过EndPrints获取需要监控的ETCD的地址

    ​ 2、创建Service,给予集群内部的ServiceMoniter使用

    ​ 3、创建ServiceMoniter部署需要访问证书,给予prometheus-k8s-0来使用

    ​ 4、重启普罗米修斯监控Pod(prometheus-k8s-0),载入监控项

    因为ETCD是携带metric接口的服务,所以会用上述流程。

    2.通过EndPoints获取需要监控的ETCD的地址

    [root@k8s-master-01 ~]# kubectl get pods -n kube-system
    ##可以看出etcd在kube-system这个空间内部
    etcd-k8s-master-01   1/1     Running   11         31d
    
    
    vim etcd_endpoints.yaml
    kind: Endpoints
    apiVersion: v1
    metadata:
      namespace: kube-system
      name: etcd-moniter
      labels:
        k8s: etcd
    subsets:
      - addresses:
          - ip: "192.168.12.31"
        ports:
          - port: 2379
            protocol: TCP
            name: etcd
            
    ##部署etcd_endpoints.yaml
    [root@k8s-master-01 ~]# mkdir etcd
    [root@k8s-master-01 ~]# cd etcd/
    [root@k8s-master-01 etcd]# ls
    [root@k8s-master-01 etcd]# vim etcd_endpoints.yaml
    [root@k8s-master-01 etcd]# kubectl apply -f etcd_endpoints.yaml 
    endpoints/etcd-moniter created
    
    ##得到etcd的ip和端口
    [root@k8s-master-01 etcd]# kubectl get  endpoints -n kube-system
    NAME                                              ENDPOINTS                                                                 AGE
    
    etcd-moniter                                      192.168.12.31:2379                                                        109s
    

    3.创建Service,给予集群内部的ServiceMoniter使用

    kind: Service
    apiVersion: v1
    metadata:
      namespace: kube-system
      name: etcd-moniter       ###重要:必须和上面的name名称保持一致因为endpoints的名称来源于service
      labels:
        k8s: etcd     
    spec:
      ports:
        - port: 2379
          targetPort: 2379
          name: etcd
          protocol: TCP
          
          
          
    
    
    

    4.创建Service,给予集群内部的ServiceMoniter使用

    kind: Service
    apiVersion: v1
    metadata:
      namespace: kube-system
      name: etcd-moniter       ###重要:必须和上面的name名称保持一致因为endpoints的名称来源于service
      labels:
        k8s: etcd
    spec:
      ports:
        - port: 2379
          targetPort: 2379
          name: etcd
          protocol: TCP
          
    ##部署Service
    root@k8s-master-01 etcd]# vim etcd_service.yaml
    
    [root@k8s-master-01 etcd]# kubectl apply -f etcd_service.yaml 
    service/etcd-moniter created
    [root@k8s-master-01 etcd]# kubectl get svc -n kube-system
    NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                        AGE
    etcd-moniter   ClusterIP   10.110.31.122   <none>        2379/TCP                       18s     
         
         
    ##测试service创建成功与否(报错待解决)
    
    
    
    [root@k8s-master-01 etcd]# kubectl get svc -n kube-system
    NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                        AGE
    etcd-moniter   ClusterIP   10.96.144.71   <none>        2379/TCP                       4s
    kube-dns       ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP         31d
    kubelet        ClusterIP   None           <none>        10250/TCP,10255/TCP,4194/TCP   39h
    [root@k8s-master-01 etcd]# curl -k  --cert /etc/kubernetes/pki/apiserver-etcd-client.crt  --key /etc/kubernetes/pki/apiserver-etcd-client.key https://10.96.144.71:2379/metrics
    curl: (7) Failed connect to 10.96.144.71:2379; 拒绝连接
    
    找到问题的原因了:
    1.endpoints 后来发现没有部署(这个很奇怪,我明明部署了了)
    2.在创建Endpoints时候,我把etcd的ip地址写成老师的机子上的了。错了。
    
    
    
    

    5.创建ServiceMoniter部署需要访问证书

    image-20210425202822915

    ##就是这个Endpoints的ports的name

    image-20210425202847468

    image-20210425203229723

    ###重要点:ServiceMonitor是给prometheus-k8s-0来使用的。而后者就在namespace: monitoring中,所以写namespace: monitoring
    
    [root@k8s-master-01 etcd]# vi etcd_servicemonitor.yaml
    kind: ServiceMonitor
    apiVersion: monitoring.coreos.com/v1
    metadata:
      labels:
        k8s: etcd
      name: etcd-monitor
      namespace: monitoring  
    spec:
      endpoints:
      - interval: 3s
        port: etcd
        scheme: https
        tlsConfig:
          caFile: /etc/prometheus/secrets/etcd-certs/ca.crt
          certFile: /etc/prometheus/secrets/etcd-certs/peer.crt
          keyFile: /etc/prometheus/secrets/etcd-certs/peer.key
          insecureSkipVerify: true                ##相当于curl -k 选项,关闭禁用目标证书 打开
      selector:
        matchLabels:
          k8s: etcd                              ###这个只能选用Endpoints的标签
      namespaceSelector:       ###空间选择器。这些endpoints里的东西都是kube-system里的,所以这样选用
        matchNames:               
          - "kube-system"                           
          
          
     ###检测结果查找servicemonitor
    [root@k8s-master-01 etcd]# kubectl get servicemonitor -n monitoring
    NAME                      AGE
    
    etcd-monitor              38s
    
    

    6.重启普罗米修斯监控Pod(prometheus-k8s-0),载入监控项

    ##主要是创建这一步来的:

    secrets:

    - etcd-certs
    
    kind: Prometheus
    apiVersion: monitoring.coreos.com/v1
    metadata:
      labels:
        prometheus: k8s
      name: k8s
      namespace: monitoring
    spec:
      alerting:
        alertmanagers:
          - name: alertmanager-main
            namespace: monitoring
            port: web
          - name: alertmanager-main-etcd
            namespace: kube-system
            port: etcd
      image: quay.io/prometheus/prometheus:v2.15.2
      nodeSelector:
        kubernetes.io/os: linux
      podMonitorNamespaceSelector: {}
      podMonitorSelector: {}
      replicas: 2
      resources:
        requests:
          memory: 400Mi
      ruleSelector:
        matchLabels:
          prometheus: k8s
          role: alert-rules
      securityContext:
        fsGroup: 2000
        runAsNonRoot: true
        runAsUser: 1000
      serviceAccountName: prometheus-k8s
      serviceMonitorNamespaceSelector: {}
      serviceMonitorSelector: {}
      version: v2.15.2
      secrets:
        - etcd-certs
    

    7.创建一个secrets:用来保存prometheus监控的etcd的证书

    ##用命令行的格式创建secret,因为这个secrets是用给prometheus的,它在monitoring空间,所以指定在这个空间里
    kubectl create secret generic etcd-certs -n monitoring --from-file=/etc/kubernetes/pki/etcd/ca.crt --from-file=/etc/kubernetes/pki/etcd/peer.crt --from-file=/etc/kubernetes/pki/etcd/peer.key
    secret/etcd-certs created
    

    8.再创建好证书的基础上开始部署prometheus并测试

    [root@k8s-master-01 etcd]# kubectl apply -f prometheus.yaml 
    prometheus.monitoring.coreos.com/k8s configured
    
    
    [root@k8s-master-01 etcd]# kubectl get pods -n monitoring
    ##测试成功
    NAME                                   READY   STATUS    RESTARTS   AGE
    
    prometheus-k8s-0                       3/3     Running   1          2m4s
    prometheus-k8s-1                       3/3     Running   1          2m14s
    
    

    9.测试是否监控成功

    image-20210425211450728

    10.加入Grafana

    image-20210425211527036

    展开全文
  • 比如DigitalOcean或Docker都是普罗米修斯作为基础监控。希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命名的监控系统究竟怎么样呢?今天虫虫给大家讲讲这个以...
  • 普罗米修斯监控概述

    2021-09-23 13:54:25
    文章目录一、常用监控的简介1.1cacti1.2Nagios1.3Zabbix1.5Prometheus 一、常用监控的简介 1.1cacti Cacti(英文含义为仙人掌〉是一套基于 PHP、MySQL、SNMP和 RRDtool开发的网络流量监测图形分析工具。 它通过...
  • Prometheus普罗米修斯监控系统一级目录二级目录三级目录 一级目录 二级目录 三级目录
  • 文章目录WinLinuxgolangPrometheus安装包安装下载安装配置启动使用设置报警被监控的主机必备品:exporter(有各种类型)下载安装运行grafana Dashboard添加数据源 选择 prometheus允许嵌入 允许匿名访问(分享时)...
  • 普罗米修斯监控mysql与邮件告警

    万次阅读 2021-06-08 21:39:30
    exporter # systemctl status mysqld_exporter # systemctl enable mysqld_exporter 验证,浏览器输入:http://192.168.0.208:9104/ grafana使用模板7362显示监控数据,http://192.168.0.207:3000/dashboard/import ...
  • 看国外的博客好了 All databases on the eyes. Postgres exporter + Prometheus + Grafana.
  • docker 主机监控模板:193 Liunx主机监控模板:9276 二、监控docker容器 1、添加监控节点同理 2、在被监控服务器部署cadvisor容器 [root@CentOS7-admin ~] docker run \ --volume=/:/rootfs:ro \ --volume=/var/run...
  • 开始之前需要知道普罗米修斯的相关思想 采用http协议来传输数据 主动调用获取数据 简化理解,有一个服务(java服务)提供返回固定格式(四种)的接口,普罗米修斯服务定时调用(内部感觉用该有长链接,否则多少消耗...
  • 普罗米修斯监控docker 服务

    千次阅读 2018-08-28 10:48:06
    环境192.168.254.127 (监控服务器)192.168.254.128 (被监控机器) 首先在监控服务器安装:1.安装Node Exporter 来收集硬件信息所有节点运行以下命令安装Node Exporter 容器docker run -d -p 9100:9100 \-v "/proc...
  • 普罗米修斯监控入门

    2021-08-30 22:34:29
    安装普罗米修斯 从https://prometheus.io/download/下载相应版本安装包 tar zxf prometheus-2.29.2.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/prometheus-2.29.2.linux-amd64/ /usr/local/prometheus cd...
  • 自动化压测 实现思路 JMeter 脚本...jmeter -n -t $jmx_file -l $jtl_file -o $web_report_folder 自动化压测流程 Docker搭建普罗米修斯监控体系 普罗米修斯监控原理 官网:https://prometheus.io/ Docker镜像库地址:...
  • Prometheus是最近几年开始流行的一个新兴监控告警工具,特别是kubernetes的流行带动了prometheus的应用。 Prometheus是一套完整的监控告警系统: Prometheus的主要特点有: 1. a mul...
  • 毕设要用到普罗米修斯,然后我就踩坑了,监控redis的时候,一直拿不到redis的监控数据,一开始以为我的redis版本不够,所以卸载了4的版本,换用了5才的版本,然后发现还是拿不到,搜了很多办法,还是没有解决,最终...
  • - job_name: 'linux' static_configs: - targets: ['ip:9100'] - job_name: 'mysql' static_configs: - targets: ['ip:9104'] 一切准备完成后,启动普罗米修斯 运行nohup ./prometheus --config.file=prometheus....
  • 前言本系列着重介绍Prometheus以及如何用它和其...系列主要分为以下几块Prometheus各个概念介绍和搭建,如何抓取数据(一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起)如何推送数据...
  • 使用领先的开源监控解决方案为您的指标和警报提供支持。 样品柱 配置普罗米修斯服务器 prometheus : server : version : 2.0 enabled : true dir : config : /srv/volumes/prometheus data : /srv/volumes/...
  • Prometheus作为强大的开源监控系统,最大的依赖便是PromQL。是监控数据个性化查询、展示的基础。所以要掌握Prometheus,掌握PromQL是必备的前提。 瞬时向量:包含该时间序列中最新的⼀个样本值 区间向量:⼀段时间...
  • 普罗米修斯监控openGauss

    千次阅读 多人点赞 2021-11-22 10:32:46
    普罗米修斯 https://github.com/prometheus/pushgateway opengauss_export https://github.com/enmotech/opengauss_exporter pushgateway https://github.com/prometheus/pushgateway openGauss ...
  • 普罗米修斯(prometheus)官方网站:https://prometheus.io/ 2:将下载的软件包上传到需要安装的系统上 我这里使用wget命令下载软件包 复制他的下载链接 命令格式:wget 下载链接 cd /root/ wget ...
  • 使用Prometheus代码存储库进行监视 包含“的代码和配置示例。 勘误 勘误表
  • 文章目录Promethus监控系统介绍概叙时间序列数据1.特点2.特征3.环境设置4.服务端部署5.启动6.测试连接7.客户端部署8.监控MySQL1)安装mysqld_exporter组件2)安装mariadbGrafana1.什么是Grafana2.使用Grafana连接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,443
精华内容 977
关键字:

普罗米修斯监控