prometheus-安装使用方案

需要安装Docker 【Mysql,Redis 需要】 
    yum install docker

查看 Docker 是否安装成功    
    docker version

可通过以下命令启动 Docker 服务:Docker服务启动完毕,就可以开始使用Docker了
    systemctl start  docker.service 

-----------------------------------------------------------

1.查看可用版本
    docker search prometheus

2.取最新版的 zookeeper 镜像
    docker pull prometheus:latest  [稍微耗时,得稍等一会儿]

3.查看本地镜像
    docker images

4.运行容器-启动容器并添加映射
    docker run -p 9090:9090 -v /Users/jingmingming/docker_softeare/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest

5.安装成功
    docker ps

6.访问 Prometheus Web UI :http://localhost:9090/ 
    访问Targets信息:http://localhost:9090/targets
    查看所有指标信息:http://localhost:9090/metrics

7.简单操作
    查看容器 docker ps -a 或 docker ps -f name=prometheus
    查看状态 docker stats prometheus
    重启容器 docker restart prometheus
    停止容器 docker stop  [CONTAINER_ID]   【docker ps -a 可以查到】
    启动容器 docker start [CONTAINER_ID]   【docker ps -a 可以查到】

98.移除容器 [不是删除镜像-只是容器]
    docker rm [CONTAINER_ID]   【docker ps -a 可以查到】

99.删除镜像
    docker rmi -f [IMAGE_ID]  【docker images 可以查到】

-------------------------------------------------------------------
Linux 安装 Prometheus   http://localhost:9090
    下载 [prometheus-2.20.1.linux-amd64.tar.gz]
    解压( tar -zxvf prometheus-2.20.1.linux-amd64.tar.gz )
    启动 prometheus : # ./prometheus  后台启动:nohup ./prometheus &
    默认端口:9090
    添加 prometheus 为系统开机服务
        添加配置文件 prometheus.service
            vi /usr/lib/systemd/system/prometheus.service
            [Unit]
            Description=Prometheus server daemon
            Documentation=https://prometheus.io/
            After=network.target

            [Service]
            Type=simple
            User=root
            Group=root
            ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle
            Restart=on-failure

            [Install]
            WantedBy=multi-user.target

        动态刷新加载 prometheus.yml 配置文件 curl -XPOST http://localhost:9090/-/reload 

        通知 systemd 重新加载配置文件 : systemctl daemon-reload                    
        设置为开机启动:systemctl enable prometheus.service
        删除开机启动:systemctl disable prometheus.service
        启动服务:systemctl start prometheus.service
        状态查询:systemctl status prometheus.service  ; Active:active(running)时已正常启动
        重启服务:systemctl restart prometheus.service
        停止服务:systemctl stop prometheus.service

8.Linux Node 主机监控  http://localhost:9100/
    下载 Node exporter 后解压(tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz)
    启动 node_exporter : # ./node/exporter  后台启动:nohup ./node_exporter &
    默认端口:9100
    启动时添加参数可修改默认端口:--web.listen-address=":9200"
    添加node_exporter为系统开机服务
        添加配置文件 node_exporter.service
            vi /usr/lib/systemd/system/node_exporter.service
            [Unit]
            Description=node_exporter
            Documentation=https://prometheus.io/
            After=network-online.target
            [Service]
            Type=simple
            User=root
            Group=root
            ExecStart=/data/node_exporter/node_exporter
            Restart=on-failure
            [Install]
            WantedBy=multi-user.target
        通知 systemd 重新加载配置文件 : systemctl daemon-reload                    
        设置为开机启动:systemctl enable node_exporter.service
        删除开机启动:systemctl disable node_exporter.service
        启动服务:systemctl start node_exporter.service
        状态查询:systemctl status node_exporter.service  ; Active:active(running)时已正常启动
        重启服务:systemctl restart node_exporter.service
        停止服务:systemctl stop node_exporter.service

    与Prometheus集成
        在Prometheus主机目录中找到主配置文件(默认为:prometheus.yml)    

---------------------------------------------------------------

安装 grafana http://localhost:3000/  默认的用户名密码:admin / admin
    https://mirrors.huaweicloud.com/grafana/7.1.3/ 【国内加速下载】
    #下载  
        grafana-7.1.3-1.x86_64.rpm
    #安装
        yum localinstall grafana-7.1.3-1.x86_64.rpm
    卸载 
        yum erase grafana -y

    通知 systemd 重新加载配置文件 : systemctl daemon-reload            
    设置为开机启动:systemctl enable grafana-server
    删除开机启动:systemctl disable grafana-server
    启动服务:systemctl start grafana-server
    状态查询:systemctl status grafana-server  ; Active:active(running)时已正常启动
    重启服务:systemctl restart grafana-server
    停止服务:systemctl stop grafana-server

    与Prometheus集成 : 添加数据源 ,导入模板ID(8919、11074):https://grafana.com/grafana/dashboards/11074 (前人总结出的模板)
---------------------------------------------------------------
docker 安装MySQL

1.查找镜像
    docker search mysql

2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):
    docker pull mysql  【时间略久】 或者导入现成的镜像:docker load -i docker-mysql.tar

3.通过镜像创建容器并运行
    docker run -p 3306:3306 --name mysql_ming -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest


        -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
        -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
        -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
        -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
        -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

    centos虚拟机可能会出现问题,
    处理方式:https://blog.csdn.net/weixin_30546189/article/details/96488783
            https://www.cnblogs.com/cxbhakim/p/9149596.html

4.此时,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested  by server。。。
    解决方案:
        进入容器:docker exec -it 62349aa31687 /bin/bash
        进入mysql:mysql -uroot -p
        授权:mysql> GRANT ALL ON *.* TO 'root'@'%';
        刷新权限:mysql> flush privileges;
        更新加密规则:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ;
        更新root用户密码:mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
        刷新权限:mysql> flush privileges;

    #添加导出器用户 
        mysql>CREATE USER 'mysqld_ming'@'localhost' IDENTIFIED BY 'ming1234';
        mysql>GRANT PROCESS , REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_ming'@'localhost' ;
        mysql>commit;
        mysql>FLUSH PRIVILEGES;
        mysql>select Host , User from mysql.user ; #检查用户是否已经穿件成功

5.停止docker 启动docker 
    docker stop [CONTAINER_ID]   【docker ps -a 可以查到】
    docker start [CONTAINER_ID]  【docker ps -a 可以查到-没有删除容器的情况下】

6.移除容器 [不是删除镜像-只是容器]
    docker rm [CONTAINER_ID]   【docker ps -a 可以查到】

7.删除镜像
    docker rmi -f [IMAGE_ID]  【docker images 可以查到】    
-----------------------------------------------------------
安装MySQL导出器

     下载:mysqld_exporter-0.12.1.linux-amd64.tar.gz
      解压:tar -xvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
            mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
      创建配置文件 .my.cnf 文件
          vim .my.cnf
            [client]
            host=localhost
            user=mysqld_ming
            password=ming1234
    创建mysqld_exporter.service 的 systemd unit 文件
        vim /usr/lib/systemd/system/mysqld_exporter.service
        [Unit]
        Description=mysqld_exporter
        Documentation=https://prometheus.io/
        After=network-online.target

        [Service]
        Type=simple
        User=root
        ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
        --config.my-cnf /usr/local/mysqld_exporter/.my.cnf \
        --collect.auto_increment.columns \
        --collect.binlog_size \
        --collect.engine_innodb_status \
        --collect.engine_tokudb_status \
        --collect.global_status \
        --web.listen-address=0.0.0.0:9104
        Restart=always

        [Install]
        WantedBy=multi-user.target

    通知 systemd 重新加载配置文件 : systemctl daemon-reload            
    设置为开机启动:systemctl enable mysqld_exporter.service
    删除开机启动:systemctl disable mysqld_exporter.service
    启动服务:systemctl start mysqld_exporter.service
    状态查询:systemctl status mysqld_exporter.service  ; Active:active(running)时已正常启动
    重启服务:systemctl restart mysqld_exporter.service
    停止服务:systemctl stop mysqld_exporter.service

    查看指标信息:http://localhost:9104/metrics

    集成prometheus
        prometheus.service添加配置
            vim /usr/local/prometheus/prometheus.yml 
              - job_name: 'mysql_job'
                static_configs:
                  - targets: ['localhost:9104']
                       labels:
                         instance: mysql_localhost

    重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload 
        systemctl restart prometheus.service 
        systemctl status prometheus.service

    参考:https://blog.csdn.net/u014756339/article/details/107816038
         https://grafana.com/grafana/dashboards/11323

    SQL :  use sys
        CREATE TABLE `test` (
          `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
          `name` varchar(128) DEFAULT NULL COMMENT 'name',
          `ext1` varchar(62) DEFAULT NULL COMMENT 'ext1',
          `ext2` varchar(128) DEFAULT NULL COMMENT 'ext2',
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='test';

        insert into test (name,ext1,ext2) values ('jmm','ext1','ext2');
-----------------------------------------------------------
安装Redis
1.查看可用版本
    docker search redis

2.取最新版的 Redis 镜像
    docker pull redis:latest  [稍微耗时,得稍等一会儿]   或者导入现成的镜像:docker load -i docker-redis.tar


3.查看本地镜像
    docker images

4.运行容器
    docker run -itd --name redis-test -p 6379:6379 redis:latest
        -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务

5.安装成功
    docker ps

6.通过 redis-cli 连接测试使用 redis 服务。
    docker exec -it redis-test /bin/bash
    redis-cli
-----------------------------------------------------------
安装Redis导出器
下载:redis_exporter-v1.9.0.linux-amd64.tar.gz
      解压:tar -xvf redis_exporter-v1.9.0.linux-amd64.tar.gz
            mv redis_exporter-v1.9.0.linux-amd64 /usr/local/redis_exporter
      解压后只有一个二进制程序就叫 redis_exporter 通过 -h 可以获取到帮助信息,下面列出一些常用的选项
          -redis.addr:指明一个或多个 Redis 节点的地址,多个节点使用逗号分隔,默认为 redis://localhost:6379
        -redis.password:验证 Redis 时使用的密码;
        -redis.file:包含一个或多个redis 节点的文件路径,每行一个节点,此选项与 -redis.addr 互斥。
        -web.listen-address:监听的地址和端口,默认为 0.0.0.0:9121

    创建 redis_exporter.service
        vim /usr/lib/systemd/system/redis_exporter.service
        [Unit]
        Description=redis_exporter
        Documentation=https://prometheus.io/
        After=network.target

        [Service]
        Type=simple
        User=root
        ExecStart=/usr/local/redis_exporter/redis_exporter -redis.addr localhost:6379  -redis.password 123456   #没有密码的话可以不设置
        Restart=on-failure

        [Install]
        WantedBy=multi-user.target

    通知 systemd 重新加载配置文件 : systemctl daemon-reload            
    设置为开机启动:systemctl enable redis_exporter.service
    删除开机启动:systemctl disable redis_exporter.service
    启动服务:systemctl start redis_exporter.service
    状态查询:systemctl status redis_exporter.service  ; Active:active(running)时已正常启动
    重启服务:systemctl restart redis_exporter.service
    停止服务:systemctl stop redis_exporter.service

    查看指标信息:http://localhost:9121/metrics

    集成prometheus
        prometheus.service添加配置
            vim /usr/local/prometheus/prometheus.yml 
            - job_name: redis_exporter
              static_configs:
              - targets: ['localhost:9121']

    重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload 
        systemctl restart prometheus.service 
        systemctl status prometheus.service

---------------------------------------
报警组件安装
    1.下载组件 alertmanager-0.21.0.linux-amd64.tar.gz
    2.解压组件 tar xvzf alertmanager-0.21.0.linux-amd64.tar.gz  
    3.移动目录
        mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager
        cd /usr/local/alertmanager/
    4.修改alertmanager配置文件:vim alertmanager.yml
        global:
          # resolve_timeout:解析超时时间
          resolve_timeout: 5m
          # smtp_smarthost: 使用email打开服务配置
          smtp_smarthost: 'mx.jd.local:25'
          # smtp_from:指定通知报警的邮箱
          smtp_from: 'trace-service@jd.com'
          # smtp_auth_username:邮箱用户名
          smtp_auth_username: 'trace-service@jd.com'
          # smtp_auth_password:授权密码
          smtp_auth_password: 'PGxyfbxqzag@293'
          # 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: 'jingmingming@jd.com'

        # inhibit_rules标记:降低告警收敛,减少报警,发送关键报警
        #inhibit_rules:
        #  - source_match:
        #      severity: 'critical'
        #    target_match:
        #      severity: 'warning'
        #    equal: ['alertname', 'dev', 'instance']

    5.检查alertmanager配置文件
        ./amtool check-config alertmanager.yml
    6.启动alertmanager
        ./alertmanager --config.file=alertmanager.yml
    7.系统启动项设置
        添加系统服务:vi /usr/lib/systemd/system/alertmanager.service

        [Unit]
        Description=alertmanager
        Documentation=https://prometheus.io/
        After=network.target

        [Service]
        Type=simple
        User=root
        ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
        Restart=on-failure

        [Install]
        WantedBy=multi-user.target


    8.启动添加后的系统服务
        systemctl daemon-reload
        systemctl restart alertmanager.service
        设置为开机启动:systemctl enable alertmanager.service
        删除开机启动:systemctl disable alertmanager.service
        启动服务:systemctl start alertmanager.service
        状态查询:systemctl status alertmanager.service  ; Active:active(running)时已正常启动
        停止服务:systemctl stop alertmanager.service

    9.访问:http://localhost:9093

###############################################################################
            prometheus 对接 alertmanager 

    1.修改配置文件 vim prometheus.yml
        alerting:
              alertmanagers:  # 配置alertmanager
              - static_configs:
                - targets:
                  - localhost:9093  #alertmanager服务器ip端口
            rule_files:      # 告警规则文件
              - 'rules/*.yml'
        检查配置文件是否正确:./promtool check config prometheus.yml
    2.配置报警规则rules (记得创建 rules目录)
        参考:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_65_prometheus_alertmanager_rule.html
        vim rules/node.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 }}]."
              - alert: 设备宕机了   
                expr: up{job="node"} == 0
                for: 1m
                labels:
                 severity: critical
                annotations:
                 summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!   
                 console: '服务器挂了!!!!'
              - alert: redis宕机了   
                expr: up{job="redis_exporter"} == 0
                for: 1m
                labels:
                 severity: critical
                annotations:
                 summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!   
                 console: 'redis宕机了'

         简单介绍:
         groups:
         - name: test-rules
           rules:
           - alert: InstanceDown # 告警名称
             expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定
             for: 2m # 满足告警条件持续时间多久后,才会发送告警
             labels: #标签项
              team: node
             annotations: # 解析项,详细解释告警信息
              summary: "{{$labels.instance}}: has been down"
              description: "{{$labels.instance}}: job {{$labels.job}} has been down "      value: {{$value}}

    3.重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload 
        systemctl restart prometheus.service 
        systemctl status prometheus.service

    webhook 报警参考:https://blog.csdn.net/shida_csdn/article/details/81980021

 

资源下载:

       https://prometheus.io/download/
        https://github.com/oliver006/redis_exporter/releases
        http://grafana.openstack.org/dashboards 模板
        https://grafana.com/grafana/dashboards/9777 模板
        https://github.com/percona/grafana-dashboards/tree/master/dashboards 模板

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值