zoukankan      html  css  js  c++  java
  • Prometheus监控Centos,Mysql,Docker

    服务器安装

    1.下载镜像包

    docker pull prom/node-exporter

    docker pull prom/prometheus

    docker pull grafana/grafana

    2.启动node-exporter

    docker run -d --privileged=true --name=nodeexporter

    -p 9100:9100

      -v "/proc:/host/proc:ro" 

      -v "/sys:/host/sys:ro" 

      -v "/:/rootfs:ro" 

      --net="host" 

      prom/node-exporter

    访问地址:http://192.168.91.132:9100/metrics,确定正常启动

     

    3.启动prometheus

    新建目录prometheus,编辑配置文件prometheus.yml

    mkdir /opt/prometheus

    cd /opt/prometheus/

    vim prometheus.yml

    内容如下:

    global:

      scrape_interval:     60s

      evaluation_interval: 60s

    scrape_configs:

      - job_name: prometheus

        static_configs:

          - targets: ['localhost:9090']

            labels:

              instance: prometheus

      - job_name: linux

        static_configs:

          - targets: ['192.168.91.132:9100']

            labels:

              instance: localhost

    注意:修改IP地址,这里的192.168.91.132就是本机地址

    启动prometheus

    docker run  -d --privileged=true --name=prometheus

      -p 9090:9090 

    -v /etc/localtime:/etc/localtime 

    -v /opt/prometheus/data:/etc/prometheus  

      prom/prometheus --web.enable-lifecycle

    --config.file=/etc/prometheus/prometheus.yml

    访问urlhttp://192.168.91.132:9090/graph

    效果

     

    访问targetsurl如下:http://192.168.91.132:9090/targets

    效果如下:

     

    4.启动grafana

    新建空文件夹grafana-storage,用来存储数据

    mkdir /opt/grafana-storage

    设置权限

    chmod 777 -R /opt/grafana-storage

    因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!

    启动grafana

    docker run -d --privileged=true --name=grafana

      -p 3000:3000 

      --name=grafana

      -v /opt/grafana-storage:/var/lib/grafana

      grafana/grafana

    granafa默认端口为3000,可以在浏览器中输入http://localhost:3000/
    granafa首次登录账户名和密码admin/admin,可以修改
    配置数据源Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入nameurl

     

    添加 Dashboard -> New Dashboard -> Import Dashboard -> 输入11074,导入Linux监控模板. 并配置数据源为Prometheus,即上一步中的name
    配置完保存后即可看到逼格非常高的系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IOCPU温度等信息。

     

    node_exporter安装配置

    # 运行用户添加

    groupadd prometheus

    useradd -g prometheus -m -d /usr/local/node_exporter/ -s /sbin/nologin prometheus

    # 下载node_server

    wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-386.tar.gz

    # 解压到指定目录并删除下载文件

    tar -zxf node_exporter-1.0.1.linux-386.tar.gz

    mv node_exporter-1.0.1.linux-386 /usr/local/

    ln -sv /usr/local/node_exporter-1.0.1.linux-386 /usr/local/node_exporter

    rm -f node_exporter-1.0.1.linux-386.tar.gz

    # 系统服务配置 node_exporter
    touch /usr/lib/systemd/system/node_exporter.service
    chown prometheus:prometheus /usr/lib/systemd/system/node_exporter.service
    chown -R prometheus:prometheus /usr/local/node_exporter*
    vim /usr/lib/systemd/system/node_exporter.service

    node_exporter.service中加入如下代码:

    [Unit]

    Description=node_exporter

    After=network.target

    [Service]

    Type=simple

    User=prometheus

    ExecStart=/usr/local/node_exporter/node_exporter-1.0.1.linux-386/node_exporter

    Restart=on-failure

    [Install]

    WantedBy=multi-user.target

    启动 node_exporter 服务并设置开机启动

    systemctl daemon-reload

    systemctl enable node_exporter.service

    systemctl start node_exporter.service

    systemctl status node_exporter.service

    systemctl restart node_exporter.service

    systemctl start node_exporter.service

    systemctl stop node_exporter.service

    node_exporter启动成功后, 你就可以通过如下api看到你的监控数据了(将下面的node_exporter_server_ip替换成你的node_exporterIP地址, 放到浏览器中访问就可以了 ). 

    http://node_exporter_server_ip:9100/metrics

     

    prometheus server服务器上/opt/prometheus/prometheus.yml下添加监控机器

    - job_name: 192.168.10.205-dev.docker

        static_configs:

          - targets: ['192.168.10.205:9100']

            labels:

              instance: 192.168.10.205-dev.docker

    重写加载配置

    curl -X POST http://localhost:9090/-/reload

    新添加的机器即可在Dashbord中看到。

    注:Dashbord一类只需要创建一个,多台服务器查看时选择jobinstance即可以查看到对应的服务器。

    不同的功能监控Dashbord可以自动识别归类

    创建和配置Alertmanager

    mkdir -p /opt/prometheus/alertmanager

    cd !$

    vim alertmanager.yml

    global:

      # resolve_timeout:解析超时时间

      resolve_timeout: 5m

      # smtp_smarthost: 使用email打开服务配置

      smtp_smarthost: 'smtp.exmail.qq.com:465'

      # smtp_from:指定通知报警的邮箱

      smtp_from: 'system_business@jmgo.com'

      # smtp_auth_username:邮箱用户名

      smtp_auth_username: 'system_business@jmgo.com'

      # smtp_auth_password:授权密码

      smtp_auth_password: ']kqN,8q)!iSX'

      # smtp_require_tls:是否启用tls

      smtp_require_tls: false

      # route标记:告警如何发送分配

      route:

        # group_by:采用哪个标签作为分组的依据

        group_by: ['alertname']

        # group_wait:分组等待的时间

        group_wait: 10s

        # group_interval:上下两组发送告警的间隔时间

        group_interval: 10s

        # repeat_interval:重复发送告警时间。默认1h

        repeat_interval: 1m

        # receiver 定义谁来通知报警

        receiver: 'mail'

    # receiver标记:告警接受者

    receivers:

    # name:报警来源自定义名称

    - name: 'mail'

      # email_configs:通过邮箱发送报警

      email_configs:

        # to:指定接收端email

        - to: 'zbliu@jmgo.com'

    # inhibit_rules标记:降低告警收敛,减少报警,发送关键报警

    #inhibit_rules:

    #  - source_match:

    #      severity: 'critical'

    #    target_match:

    #      severity: 'warning'

    #    equal: ['alertname', 'dev', 'instance']

    运行altermanager

    docker rm -f alertmanager

    docker run -d -p 9093:9093 --privileged=true --name alertmanager -v /opt/prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml

    prom/alertmanager

    访问http://192.168.10.15:9093

     

    配置prometheusalertmanager通信

    # vim prometheus.yml

    alerting:

      alertmanagers:  # 配置alertmanager

      - static_configs:

        - targets:

          - 127.0.0.1:9093  #alertmanager服务器ip端口

    rule_files:      # 告警规则文件

      - '/etc/prometheus/rules/rule.yml'

     配置报警规则rules

    # vim /opt/prometheus/data/rules/rule.yml

    groups:

    - name: test

      rules:

      - alert: 内存使用率过高

        expr: 100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30

        for: 1m  # 告警持续时间,超过这个时间才会发送给alertmanager

        labels:

          severity: warning

        annotations:

          summary: "Instance {{ $labels.instance }} 内存使用率过高"

          description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过80%,当前使用率[{{ $value }}]."

      - alert: cpu使用率过高

        expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 0

        for: 1m

        labels:

          severity: warning

        annotations:

          summary: "Instance {{ $labels.instance }} cpu使用率过高"

          description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
    # 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值。

    检查告警规则,重启prometheus

    查看http://192.168.10.15:9090/rules,显示规则则表示规则配置起效

    http://192.168.10.15:9090/alerts,显示目前报警

    开启防火墙端口9093

    http://192.168.10.15:9093/#/alerts

     

    收到邮件

     

    Mysql_exporter安装配置

    下载组件

    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-386.tar.gz

    tar zxvf mysqld_exporter-0.12.1.linux-386.tar.gz

    mv mysqld_exporter-0.12.1.linux-386 /usr/local/mysql_exporter

    切换至mysql

    mysql -u root -p

    # 创建数据库用户。

    mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'Jmgo.123';

    # 可查看主从运行情况查看线程,及所有数据库。

    mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

    创建mysql配置文件、运行时可免密码连接数据库:vim /usr/local/mysql_exporter/.my.cnf

    [client]

    user=exporter

    password=***

    启动

    Cd /usr/local/mysql_exporter

    ./mysqld_exporter --config.my-cnf=.my.cnf

    常用参数:# 选择采集innodb

    --collect.info_schema.innodb_cmp# innodb存储引擎状态

    --collect.engine_innodb_status# 指定配置文件

    --config.my-cnf=".my.cnf"

    添加系统服务:vim /usr/lib/systemd/system/mysql_exporter.service

    [Unit]

    Description=https://prometheus.io

    [Service]

    Restart=on-failure

    ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysql_exporter/.my.cnf

    [Install]

    WantedBy=multi-user.target

    查看捕获mysql数据

    访问:http://***:9104/metrics

      

    使用prometheus监控修改监控端配置文件:vim prometheus.yml

    - job_name: Mysql_10.204

        static_configs:

          - targets: ['192.168.10.204:9104']

            labels:

              instance: 192.168.10.204-dev.mysql

    检查并重启服务

    http://***:9090/targets,看是否有新增的监控服务器

    Granfana 导入Mysql 监控图表

    推荐图标IDhttps://grafana.com/dashboards/7362

      

    cadvisor安装配置(监控docker

    docker run  -d --privileged=true --restart=always

      -v /:/rootfs:ro

      -v /var/run:/var/run:rw

      -v /sys:/sys:ro

      -v /var/lib/docker/:/var/lib/docker:ro

      -v /dev/disk/:/dev/disk:ro

      -p 8080:8080

      --name=cadvisor

      google/cadvisor:latest

    执行

    mount -o remount,rw '/sys/fs/cgroup' 

    ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu

    打开防火墙端口,到prometheus服务器上修改监控端配置文件:vim prometheus.yml

    - job_name: Docker_10.205

        static_configs:

          - targets: ['192.168.10.205:8080']

            labels:

              instance: 192.168.10.205-dev.docker

    引入模板193,重启prometheus,可以查看到docker监控

     

  • 相关阅读:
    一个链表,奇数位升序偶数位降序,让链表变成升序的
    LeetCode 046 Permutations 全排列
    LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
    LeetCode 024 Swap Nodes in Pairs 交换链表中相邻的两个节点
    模板实现一个栈(内部使用动态申请的数组作为存储结构)
    004 Median of Two Sorted Arrays 两个有序数组的中位数
    静态链接与动态链接
    sizeof和strlen的区别
    const和define的区别
    lodash
  • 原文地址:https://www.cnblogs.com/wishonline/p/13954303.html
Copyright © 2011-2022 走看看