侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

1.5.docker安装prometheus

芳华是个男孩!
2024-10-14 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
广告 广告

title: 1.5.docker安装prometheus
order: 5

icon: lightbulb

主机名

IP地址

配置

系统

说明

localhost

192.168.11.61

2核4g

Ubuntu 20.04

docker版本23.0.1,docker-compose版本1.29.2

1、环境准备

安装Docker

镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

安装docker

export DOWNLOAD_URL="http://mirrors.163.com/docker-ce"
curl -fsSL https://get.docker.com/ | sh

检查

docker -v
或:
systemctl status docker

安装Docker-compose

安装命令

curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

检查

docker-compose -v

二、Docker-compose安装Prometheus

1、手动创建docker-compose和配置文件(二选一)

创建prometheus监控的文件夹

#切换到root用户
sudo -i

mkdir /data/docker-prometheus -p

mkdir /data/docker-prometheus/{grafana,prometheus,alertmanager} -p

cd /data/docker-prometheus/

创建alertmanager的配置文件

cat > alertmanager/config.yml <<"EOF"
global:
  #163服务器
  smtp_smarthost: 'smtp.163.com:465'
  #发邮件的邮箱
  smtp_from: 'cdring@163.com'
  #发邮件的邮箱用户名,也就是你的邮箱     
  smtp_auth_username: 'cdring@163.com'
  #发邮件的邮箱密码
  smtp_auth_password: 'your-password'
  #进行tls验证
  smtp_require_tls: false

route:
  group_by: ['alertname']
  # 当收到告警的时候,等待group_wait配置的时间,看是否还有告警,如果有就一起发出去
  group_wait: 10s
  #  如果上次告警信息发送成功,此时又来了一个新的告警数据,则需要等待group_interval配置的时间才可以发送出去
  group_interval: 10s
  # 如果上次告警信息发送成功,且问题没有解决,则等待 repeat_interval配置的时间再次发送告警数据
  repeat_interval: 10m
  # 全局报警组,这个参数是必选的
  receiver: email

receivers:
- name: 'email'
  #收邮件的邮箱
  email_configs:
  - to: 'cdring@163.com'
    #当告警恢复后,是否发送邮件
    send_resolved: true
inhibit_rules:
 - source_match:
     severity: 'critical'
   target_match:
     severity: 'warning'
   equal: ['alertname', 'dev', 'instance']
EOF

新建grafana的配置文件

GF_SECURITY_ADMIN_PASSWORD=为grafana超级管理员admin的密码,根据实际修改。

cat > grafana/config.monitoring <<EOF
GF_SECURITY_ADMIN_PASSWORD=password
GF_USERS_ALLOW_SIGN_UP=false
EOF

新建prometheus的配置文件

cat > prometheus/prometheus.yml << "EOF"
# 全局配置
global:
  scrape_interval:     15s # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
  evaluation_interval: 15s # 每15秒评估一次规则。默认是每1分钟一次。

# Alertmanager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"

# 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'alertmanager'
    scrape_interval: 15s
    static_configs:
    - targets: ['alertmanager:9093']
  - job_name: 'cadvisor'
    scrape_interval: 15s
    static_configs:
    - targets: ['cadvisor:8080']
      labels:
        instance: Prometheus服务器 

  - job_name: 'node-exporter'
    scrape_interval: 15s
    static_configs:
    - targets: ['node_exporter:9100']
      labels:
        instance: Prometheus服务器 
EOF

创建alert报警文件

cat > prometheus/alert.yml <<"EOF"
groups:
- name: Prometheus alert
  rules:
  # 对任何实例超过30秒无法联系的情况发出警报
  - alert: 服务告警
    expr: up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "服务异常,实例:{{ $labels.instance }}"
      description: "{{ $labels.job }} 服务已关闭"
EOF

新建docker-compose.yaml文件

prometheus docker hub最新版本查看地址

alertmanager docker hub最新版本查看地址

node_exporter docker hub最新版本查看地址

#进入到prometheus目录
cd /data/docker-prometheus

#通过cat新建docker-compose.yaml文件
cat > docker-compose.yaml <<"EOF"
version: '3.3'

volumes:
  prometheus_data: {}
  grafana_data: {}

networks:
  monitoring:
    driver: bridge

services:
  prometheus:
    image: prom/prometheus:v2.37.6
    container_name: prometheus
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./prometheus/:/etc/prometheus/
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      #热加载配置
      - '--web.enable-lifecycle'
      #api配置
      #- '--web.enable-admin-api'
      #历史数据最大保留时间,默认15天
      - '--storage.tsdb.retention.time=30d'  
    networks:
      - monitoring
    links:
      - alertmanager
      - cadvisor
      - node_exporter
    expose:
      - '9090'
    ports:
      - 9090:9090
    depends_on:
      - cadvisor

  alertmanager:
    image: prom/alertmanager:v0.25.0
    container_name: alertmanager
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./alertmanager/:/etc/alertmanager/
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    networks:
      - monitoring
    expose:
      - '9093'
    ports:
      - 9093:9093

  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    networks:
      - monitoring
    expose:
      - '8080'

  node_exporter:
    image: prom/node-exporter:v1.5.0
    container_name: node-exporter
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command: 
      - '--path.procfs=/host/proc' 
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
    networks:
      - monitoring
    ports:
      - '9100:9100'

  grafana:
    image: grafana/grafana:9.4.3
    container_name: grafana
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    networks:
      - monitoring
    links:
      - prometheus
    ports:
      - 3000:3000
    depends_on:
      - prometheus
EOF

2、通过克隆gitee代码安装(二选一)

命令

mkdir /data/

cd /data/

git clone https://gitee.com/linge365/docker-prometheus.git

cd docker-prometheus

3、运行Prometheus

运行命令

cd /data/docker-prometheus

docker-compose up -d

检查容器

docker ps

检查端口

ss -lntp|egrep "3000|9090|9100|9093"

web访问地址

应用

访问地址

备注

prometheus

http://192.168.11.61:9090

无用户和密码

grafana

http://192.168.11.61:3000

admin/xxx

altermanager

http://192.168.11.61:9093

无用户和密码

node-exporter

http://192.168.11.61:9100/metrics

无用户和密码

4、各个容器及应用

  • Prometheus 采集数据

  • Grafana 用于图表展示

  • alertmanager 用于接收 Prometheus 发送的告警信息

  • node-exporter 用于收集操作系统和硬件信息的metrics

  • cadvisor 用于收集docker的相关metrics

三、使用grafana展示prometheus的图形

1、登录Grafana

登录Grafana http://192.168.11.61:3000/

用户名:admin

密码:password

2、创建 Prometheus 数据源

在 Grafana 中创建 Prometheus 数据源:

  1. 单击边栏中的“齿轮”,打开“配置”菜单。

  2. 单击“数据源”。

  3. 单击“添加数据源”。

  4. 选择“Prometheus”作为类型。

  5. 设置适当的 Prometheus 服务器 URL(例如,http://prometheus:9090

  6. 单击“保存并测试”以保存新的数据源。

如下图:

点击Prometheus

url填入:http://prometheus:9090 注:docker容器一般通过主机名链接,因为ip会变。

3、创建仪表盘

手动创建仪表盘

从 Grafana.com 导入仪表板

https://grafana.com/grafana/dashboards/

打开grafana的dashboards官网,在搜索栏输入node exporter回车,点击下载量大的dashboards如下图:

在拷贝id

打开grafana web控制台–点击dashbord图标–在点import导入–粘贴之前复制的id,1860--在点load加载

name填写“服务器监控”(根据实际修改),选择“prometheus”–在点import导入

导入dashbord完成后,如下图:

0
广告 广告

评论区