Prometheus安装部署

1.Docker安装
  • 简单命令学习

docker images

docker search

docker ps

  • docker pull 镜像:版本
  • docker rmi 镜像ID / docker rm -f $(docker ps -a -q)
  • docker run -d -p 外部端口:内部端口 容器ID
  • docker stop/start/kill 容器ID
  • docker inspect 容器ID
  • docker container logs 容器ID
  • docker top 容器ID
  • docker cp 容器ID:容器内部的文件路径: 宿主机路径
  • docker exec -it 容器ID /bin/bash

DockerFile

  • docker build -t 镜像名称:版本 -f dockerFile文件

    # 基于哪个镜像
    From java:8
    # 复制文件到容器
    ADD microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar
    # 声明需要暴露的端口
    EXPOSE 8761
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-jar","/app.jar"]   
    

  • docker run -m 500M redis #限制容器的最大使用内存为500M

  • docker stats # 返回容器资源的实时使用情况,1秒刷新一次

  • docker stats --no-stream # 返回容器当时的资源使用情况

  • ​ 使用 -v 可以挂载一个主机上的目录到容器的目录

  • docker run -p 外部端口:内部端口 -v 宿主机路径:容器路径 容器ID

  • docker tag 镜像名 分组/镜像名

  • docker push 分组/镜像名

  • docker container rm 容器ID

  1. 使用Docker安装Prometheus

https://cloud.tencent.com/developer/article/1678621

入门 : https://www.cnblogs.com/chanshuyi/p/01_head_first_of_prometheus.html

https://mingshan.fun/2020/07/17/prometheus-install/

https://www.kancloud.cn/willseecloud/prometheus/1904355

  • 拉取镜像
    docker pull prom/node-exporter
    docker pull prom/prometheus
    docker pull grafana/grafana
    
  • 安装运行 Prometheus 服务端

    Prometheus 服务端负责数据的收集,因此我们应该首先安装并运行 Prometheus Server

    # 创建目录
    mkdir /opt/metrics/prometheus
    cd /opt/metrics/prometheus
    
    #先启动一个prometheus容器,copy一份prometheus.yml配置文件,进行挂载修改配置文件
    docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
    #先基于prom/prometheus镜像随便运行一个容器,我们需要将其主配置文件复制一份进行更改
    [root@docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml /opt/metrics/prometheus/
    #复制prometheus容器中的主配置文件到宿主机本地
    #停止临时容器prometheus
    [root@docker01 ~]# docker rm -f prometheus 
    #编辑配置文件,如下: 
    [root@docker01 ~]# vim prometheus.yml
    
    #重启挂载配置文件后的prometheus服务
    docker run -d -p 9090:9090 -v /opt/metrics/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus 
    #执行上述命令,运行新的prometheus容器,并将刚刚修改的主配置文件挂载到容器中的指定位置
    #以后若要修改主配置文件,则直接修改本地的即可。
    #挂载主配置文件后,本地的和容器内的相当于同一份,在本地修改内容的话,会同步到容器中
    
    #浏览器访问地址,点击STATUS->Targets:查看监控的服务列表为UP则正常
    http://192.168.62.130:9090/graph
    #prometheus自身监控信息
    http://192.168.62.130:9090/metrics
    
    
    global:
      # 默认情况下,每15s拉取一次目标采样点数据。
      scrape_interval:     15s 
      # 我们可以附加一些指定标签到采样点度量标签列表中, 用于和第三方系统进行通信, 包括:federation, remote storage, Alertmanager
      external_labels:
        # 下面就是拉取自身服务采样点数据配置
        monitor: 'codelab-monitor'
    scrape_configs:
      # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
      - job_name: prometheus
        # 覆盖global的采样点,拉取时间间隔5s
        scrape_interval: 5s
        static_configs:
          - targets: ['localhost:9090','192.168.62.130:9090']
     
      - job_name: node_exporter
        static_configs:
          - targets: ['localhost:9100','192.168.62.130:9100']
            labels:
              instance: localhost
              
      - job_name: metrics-demo
        # 覆盖global的采样点,拉取时间间隔5s
        scrape_interval: 5s
        metrics_path: '/actuator/prometheus'
        static_configs:
          - targets: ['172.17.12.91:8080']
    
    docker restart prometheus
    
    #当查询初显时间警告: https://blog.csdn.net/eastyell/article/details/112232691
    
  1. 运行 NodeExporter 客户端数据源

    node_exporter设计用于监控主机系统。不建议将其部署为Docker容器,因为它需要访问主机系统。请注意,您要监视的任何非根安装点都需要绑定到容器中。如果启动容器以进行主机监视,请指定path.rootfs参数。此参数必须与host root的bind-mount中的路径匹配。node_exporter将path.rootfs用作访问主机文件系统的前缀

      
    docker run -d -p 9100:9100 --name node_exporter \
      --restart=always \
      -v "/proc:/host/proc:ro" \
      -v "/sys:/host/sys:ro" \
      -v "/:/rootfs:ro" \
      prom/node-exporter \
      --path.procfs=/host/proc \
      --path.rootfs=/rootfs \
      --path.sysfs=/host/sys \
      --collector.filesystem.ignored-mount-points='^/(sys|proc|dev|host|etc)($$|/)'
      
     # 把node_exporter 加入prometheus 任务
       -job_name (在上面的prometheus.yml配置文件里配置)
     # 重启
     docker restart prometheus
     # 浏览器访问
     http://192.168.62.130:9100/metrics
    
  2. Grafana可视化

    只需要在 Grafana 上配置一个 Prometheus 的数据源。接着我们就可以配置各种图表,Grafana 就会自动去 Prometheus 拉取数据进行展示

    # 创建目录
    mkdir /opt/metrics/grafana-storage
    chmod 777 -R /opt/metrics/grafana-storage
    # 启动
    docker run -d \
      -p 3000:3000 \
      --name=grafana \
      --restart=always \
      -v /opt/metrics/grafana-storage:/var/lib/grafana \
      -e "GF_SECURITY_ADMIN_PASSWORD=admin123" \
      grafana/grafana
    
    #上述命令中的“-e”选项是为了设置默认的登录用户admin,密码为“admin123”。
    #如果启动容器的过程中,提示iptables等相关的错误信息,
    #则需要执行命令systemctl restart docker,重启docker服务,然后重新运行容器
    #但是需要注意,若运行容器时没有增加“--restart=always”选项的话,
    #那么在重启docker服务后,还需将所有容器手动重启。
    #重启所有容器命令“docker ps -a -q | xargs docker start”
    
    #浏览器访问登录 
    http://192.168.62.130:3000/login 
    
    #配置数据源,配置图标,指标,面板信息
    https://www.cnblogs.com/chanshuyi/p/02_grafana_quick_start.html
    
    # 官网寻找模板导入
    https://grafana.com/
    
    
    

    eg : 监控MySQL服务

    # 拉取MySQL
    docker pull prom/mysqld-exporter
    # docker启动MySQL
    docker run -d -p 9104:9104 -v /opt/software/mysql:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
    
    #  docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="root:123456@(192.168.62.130:3306)/"  -v /opt/software/mysql:/var/lib/mysql --name mysql prom/mysqld-exporter
    
    #外网访问
    docker exec -it 容器ID  bash
    >mysql -uroot -p 
    >输入密码
    # 权限
    mysql> use mysql;
    
    然后执行下面的命令:
    mysql> update user set password_expired = "Y"where user="root";
    
    mysql>  ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    mysql>  FLUSH PRIVILEGES;
    
    

以上执行完成后,在linux的宿主(windows)上用mysqlbench进行连接

MySQL服务加入prometheus服务监控
 - job_name: mysql
   scrape_interval: 5s
   static_configs:
     - targets: ['192.168.62.130:9104']
       labels:
         instance: mysql

设置Prometheus告警

Prometheus的告警方式有好几种方式,邮箱、钉钉、微信等,我这里选择邮箱的告警方式

mkdir /opt/metrics/alertmanager
cd /opt/metrics/alertmanager

# 运行预警服务,运行简单容器

docker run --name alertmanager -d -p 9093:9093 prom/alertmanager

# 拷贝预警配置文件,# 将容器中的配置文件复制到本地

docker cp alertmanager:/etc/alertmanager/alertmanager.yml /opt/metrics/alertmanager/    
#容器拷贝后,删除容器
docker rm -f alertmanager
#编辑配置文件
vim alertmanager.yml

#运行新的alertmanager容器,并挂载更改后的配置文件
docker run -d --name alertmanger -p 9093:9093 -v /opt/metrics/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml --restart=always prom/alertmanager

#如果配置文件有错误,那么这个容器是运行不了的。
#配置文件中可以分为以下几组:
#global:全局配置。设置报警策略,报警渠道等;
#route:分发策略;
#receivers:接收者,指定谁来接收你发送的这些信息;
#inhibit_rules:抑制策略。当存在于另一组匹配的警报,抑制规则将禁用于一组匹配的警报

#将以下所有的邮箱账号及auth_password更改为自己的账户即可
global:
  resolve_timeout: 5m
  smtp_from: '465722177@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '465722177@qq.com'
  smtp_auth_password: 'xxxxx'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:

- name: 'email'
  email_configs:
  - to: '465722177@qq.com'
    send_resolved: true                   # 这行的作用是,当容器恢复正常后,也会发送一份邮件
    inhibit_rules:
  - source_match:
    severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

设置alertmanager报警规则

mkdir -p /opt/metrics/alertmanager/rules
  cd /opt/metrics/alertmanager/rules

  # 编辑报警规则配置文件

  vim node-up.rules

  groups:

  - name: node-up     #设置报警的名称
    rules:
    - alert: node-up
      expr: up{job="prometheus"} == 0      #该job必须和Prometheus的配置文件中job_name完全一致
      for: 15s
      labels:
        severity: 1           #一级警告
        team: node
      annotations:
        summary: "{{ $labels.instance }} 已停止运行超过 15s!"


关联到Prometheus

cd /opt/metrics/prometheus
#编辑prometheus配置文件,添加报警规则
vi prometheus.yml 

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.62.130:9093                    # 改为alertmanager容器的IP+端口
rule_files:
  - "/opt/metrics/alertmanager/rules/*.rules"
#必须格外注意配置文件的格式,注意缩进

#重启prometheus,上面的命令进行重启
docker rm -f prometheus
#重启挂载配置文件后的prometheus服务
docker run -d -p 9090:9090 -v /opt/metrics/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus

# 如果prometheus上的某一个target为down,则会通过邮件发送预警信息.


设置报警信息模板

cd /opt/metrics/alertmanager
mkdir alertmanager-tmpl

cd alertmanager-tmpl/
#编辑模板信息
vim email.tmpl

{{ define "email.from" }}465722177@qq.com{{ end }}            # 将此改为自己的邮箱
{{ define "email.to" }}465722177@qq.com{{ end }}      # 将此改为自己的邮箱
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert<br>
告警级别: {{ .Labels.severity }} 级<br>
告警类型: {{ .Labels.alertname }}<br>
故障主机: {{ .Labels.instance }}<br>
告警主题: {{ .Annotations.summary }}<br>
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }} <br>
=========end==========<br>
{{ end }}
{{ end }}

cd /opt/metrics/alertmanager
#编辑预警配置文件,添加模板信息
vim alertmanager.yml 
#添加注释部分,其他不变
global:
  resolve_timeout: 5m
  smtp_from: '465722177@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '465722177@qq.com'
  smtp_auth_password: 'xxxxxx'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
templates:               # 添加此行

  - '/opt/metrics/alertmanager/alertmanager-tmpl/*.tmpl'     # 添加此行

prometheus 学习文档

添加注释部分,其他不变
global:
resolve_timeout: 5m
smtp_from: ‘465722177@qq.com’
smtp_smarthost: ‘smtp.qq.com:465’
smtp_auth_username: ‘465722177@qq.com’
smtp_auth_password: ‘xxxxx’
smtp_require_tls: false
smtp_hello: ‘qq.com’
route:
group_by: [‘alertname’]
templates: # 添加此行

  • ‘/opt/metrics/alertmanager/alertmanager-tmpl/*.tmpl’ # 添加此行


>  prometheus 学习文档

 https://github.com/1046102779/prometheus
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值