一. 安装docker环境

#01 安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
 
#02 设置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9akof579.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
 
#03 安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

二. 安装prometheus

2.1 编辑配置文件

#01 编辑配置文件 邮件相关
1) alertmanager.yaml
[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat alertmanager.yaml
global:
  smtp_smarthost: 'z15119911990@163.com:25'  #163服务器
  smtp_from: '522308001@qq.com'        #发邮件的邮箱
  smtp_auth_username: 'z15119911990'  #发邮件的邮箱用户名,也就是你的邮箱
  smtp_auth_password: 'RVDDRXWLPQHVYNOB'#发邮件的邮箱密码
  smtp_require_tls: false        #不进行tls验证
 
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10m
  receiver: live-monitoring
 
receivers:
- name: 'live-monitoring'
  email_configs:
  - to: 'z15119911990@163.com'
 
2) node_down.yml 自定义的告警规则文件
[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat node_down.yml
groups:
- name: node_down
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 1m
    labels:
      user: test
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
 
 
3)主配置文件
[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# grep -Ev '^#|^$' prometheus.yml
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['172.17.24.204:9093']
      # - alertmanager:9093
rule_files:
  "node_down.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
    - targets: ['172.17.24.204:9090']
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['172.17.24.204:8080']
  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
      - targets: ['172.17.24.204:9100','172.17.24.203:9100']    #抓取被监控主机IP

2.2 编辑docker-compose

#01 书写docker-compose
[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat docker-compose.yaml
version: '2'
 
networks:
    mynet:
        driver: bridge
 
services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        hostname: prometheus
        restart: always
        volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
            - ./node_down.yml:/etc/prometheus/node_down.yml
        ports:
            - "9090:9090"
        networks:
            - mynet
 
    alertmanager:
        image: prom/alertmanager
        container_name: alertmanager
        hostname: alertmanager
        restart: always
        volumes:
            - ./alertmanager.yaml:/etc/alertmanager/alertmanager.yaml
        ports:
            - "9093:9093"
        networks:
            - mynet
 
    grafana:
        image: grafana/grafana
        container_name: grafana
        hostname: grafana
        restart: always
        ports:
            - "3000:3000"
        networks:
            - mynet
 
    node-exporter:
        image: prom/node-exporter
        #image: quay.io/prometheus/node-exporter
        container_name: node-exporter
        hostname: node-exporter
        restart: always
        ports:
            - "9100:9100"
        networks:
            - mynet
    cadvisor:
        image: google/cadvisor:latest
        container_name: cadvisor
        hostname: cadvisor
        restart: always
        volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:rw
            - /sys:/sys:ro
            - /var/lib/docker/:/var/lib/docker:ro
        ports:
            - "8080:8080"
        networks:
            - mynet
 
#02 启动 docker-compose up -d
 
#03 web验证
 
http://172.17.24.204:9090/

三. grafana 展示

#01 登入地址
172.17.24.204:3000
user: admin
passwd: admin
 
#02 使用node 模版

四 添加监控节点

  • 选择对应的 exporter
#01 安装exporter
docker pull prom/node-exporter
docker run -d -p 9100:9100 --restart=always  prom/node-exporter
 
 
#02 访问验证
http://localhost:9100/
 
#03 修改服务端 prometheus配置文件
  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
      - targets: ['172.17.24.204:9100','172.17.24.203:9100']    #抓取被监控主机IP

五. 监控 java进程

#01 下载
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.0/jmx_prometheus_javaagent-0.17.0.jar
 
#02 书写配置文件
[root@iZ2ze9nv7e19wvoseb2skzZ prometheus]# cat simple-config.yml
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:
  - pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'
    name: os_$1_bytes
    type: GAUGE
    attrNameSnakeCase: true
  - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)w+):'
    name: os_$1
    type: GAUGE
    attrNameSnakeCase: true
 
#03 启动服务
java -javaagent:./jmx_prometheus_javaagent-0.17.0.jar=9400:simple-config.yaml -jar <你的jar>
nohup java -javaagent:./jmx_prometheus_javaagent-0.17.0.jar=9400:simple-config.yml -jar /data/project/pigx-upms-biz/pigx-upms-biz.jar -java.tmp.dir=/data/upload_tmp &
 
 
#04 书写启动脚本
/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar
/opt/prometheus/simple-config.yml
-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar=9400:/opt/prometheus/simple-config.yml
 
[root@iZ2ze9nv7e19wvoseb2skzZ prometheus]# cat  /root/sh/pigx-upms-biz.sh
#!/bin/bash
source /etc/profile
PORT=4000
kill -9 $(lsof -i:$PORT | grep LISTEN | awk '{print $2}')
sleep 5s
echo "$name kill"
name_tmp=${0%\.*}
name=${name_tmp##*/}
LOG_PATH=${name%%.jar}
Promtheus="-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar=9400:/opt/prometheus/simple-config.yml "
echo $name
#nohup java -jar -Dfile.encoding=UTF-8 -Xms128m -Xmx1g -Dlog.path=/pigx/$LOG_PATH /data/project/$name/$name.jar -java.tmp.dir=/data/upload_tmp >> /data/project/$name/$name.log 2>&1 &
nohup   java ${Promtheus} -jar -Dfile.encoding=UTF-8 -Xms128m -Xmx1g -Dlog.path=/pigx/$LOG_PATH /data/project/$name/$name.jar -java.tmp.dir=/data/upload_tmp >> /data/project/$name/$name.log 2>&1 &

六. 自动化监控服务

#依赖项目
         <dependency>
               <groupId>io.micrometer</groupId>
               <artifactId>micrometer-registry-prometheus</artifactId>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-actuator</artifactId>
               <version>2.2.0.RELEASE</version>
           </dependency>
  • 启动类
@SpringBootApplication
public class Springboot2PrometheusApplication {
  
    public static void main(String[] args) {
        SpringApplication.run(Springboot2PrometheusApplication.class, args);
    }
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }
}
  • 配置

management.endpoints.web.exposure.include=*
management.metrics.tags.application=${spring.application.name}
micrometer-registry-prometheus 指定版本可能会导致不兼容

management.endpoints.web.base-path=/admin
management.server.port=8090
  • grafana id = 4701

prometheus 监控系统的更多相关文章

  1. Prometheus监控系统之入门篇(一)续

    在上篇Prometheus监控系统之入门篇(一)中我们讲解了Prometheus的基本架构和工作流程, 并从0到1搭建了Prometheus服务,pushgateway以及告警系统. 本篇我们主要介绍 ...

  2. 容器编排系统K8s之Prometheus监控系统+Grafana部署

    前文我们聊到了k8s的apiservice资源结合自定义apiserver扩展原生apiserver功能的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/ ...

  3. prometheus监控系统

    关于Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等,以找到系统的 ...

  4. Prometheus监控系统之入门篇(一)

    1. 简介 Prometheus: (简称Prom)是由SoundCloud开发的开源监控报警系统.是大名鼎鼎的CNCF云原生基金会下的第二大开源项目.具有如下特点: 使用Go语言开发 内置时序数据库 ...

  5. Grafana+Zabbix+Prometheus 监控系统

    环境说明 软件 版本 操作系统 IP地址 Grafana 5.4.3-1 Centos7.5 192.168.18.231 Prometheus 2.6.1 Centos7.5 192.168.18. ...

  6. 使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql

    使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql 一.docker部署prometheus监控系统 1.1 配置安装环境 1.1.1 安装promethe ...

  7. 使用docker方式构建prometheus监控的学习

    一.背景:近期学习部署prometheus监控系统,经研究发现prometheus提供docker运行模式.根据我的经验,能够使用docker模式构建系统一定多快好省. 二.环境: 1.centos7 ...

  8. 图文详解Prometheus监控+Grafana+Alertmanager告警安装使用

    一:前言 一个服务上线了后,你想知道这个服务是否可用,需要监控.假如线上出故障了,你要先于顾客感知错误,你需要监控.还有对数据库,服务器的监控,等等各层面的监控. 近年来,微服务架构的流行,服务数越来 ...

  9. Prometheus监控神器-Alertmanager篇(1)

    本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...

  10. Prometheus监控神器-Rules篇

    本章主要对如何使用Prometheus与Alertmanager组件集成配置,以及对警报规则 Rules 的俩种类型及其模板内容进行讲解. 与Alertmanager集成 Prometheus把产生的 ...

随机推荐

  1. Midjourney|文心一格 Prompt:完整参数列表、风格汇总、文生图词典合集

    Midjourney|文心一格 Prompt:完整参数列表.风格汇总.文生图词典合集 1.Midjourney 完整参数列表 参数名称 调用方法 使用案例 注意事项 V5 V4 V3 niji 版本 ...

  2. 【STL源码剖析】vector类模拟实现 了解底层-走进底层-掌握底层【超详细的注释和解释】

    今天博主继续带来STL源码剖析专栏的第二篇博客了! 今天带来vector的模拟实现! 其实在很多人学习C++过程中,都是只学习一些STL的使用方式,并不了解底层的实现.博主本人认为,这样的学习这样的技 ...

  3. 【Linux】虚拟机太卡咋办?用云服务器Xshell配置Vmware虚拟机【技能篇】

    [Linux]用云服务器Xshell配置Vmware虚拟机[技能篇] 强烈建议本篇收藏后再食用~ 文章目录 Xshell下载 配置Vmware 尾声 平时我们使用虚拟机,可能最烦人的问题就是卡顿了.今 ...

  4. ElasticSearch7.3学习(十六)----RestHighLevelClient Java api实现索引的创建、删除、是否存在、关闭、开启

    1.写在前面 注意:导入的包区别,不同的包创建索引的方式不同.博主亲身实践,具体体现在createIndexRequest.mapping()里面.读者可自行试验. import org.elasti ...

  5. System.SysUtils.TStringHelper 详解,注意事项

    大小写转换: function ToLower: string; function ToLower(LocaleID: TLocaleID): string; function ToLowerInva ...

  6. 聚石塔容器查看tomcat 日志的方法

    通过以上命令可以看出日志的路径,从而得出直接执行的命令:tail -f acs/log/catalina.log

  7. MySQL 中 的 bit 类型,tinyint(1);

    之前一直以为 mysql中没有 bit类型,需要使用 tinyint 来标识 bit.但是前端的实体类,不好控制,后来发现这些问题已经有了默认的统一设置,这样反而更好. 总结:MySQL中 使用布尔类 ...

  8. Linux进程的创建与销毁

    Linux操作系统是一种多任务.多用户的操作系统,这意味着它可以同时运行多个进程,每个进程都可以执行不同的任务. 在本文中,我们将介绍如何在Linux系统中创建和销毁进程. 进程的创建 在Linux系 ...

  9. PHP验证码识别实例

    PHP验证码识别实例 PHP验证码识别实例,识别的过程包括对图像的二值化.降噪.补偿.切割.倾斜矫正.建库.匹配,最后会提供实例代码,能够直接运行识别. 简述 要识别的验证码相对比较简单,没有粘连字符 ...

  10. 骨牌铺方格 SDUT

    状态转移方程:dp[i] = dp[i - 1] + dp[i - 2]. 当前行,可能是由上一行转移过来的,那么当前行就只能横着铺,所以方案数是dp[i - 1]. 当前行,可能是由i-2行转移过来 ...