docker-compose 部署prometheus + grafana

本文介绍了如何通过docker-compose部署Prometheus、node-exporter、Alertmanager和Grafana。详细步骤包括启动各组件、验证状态及测试告警功能。最终,成功实现了一个简洁的监控解决方案,并将配置文件托管在了个人GitHub上。
摘要由CSDN通过智能技术生成

通过docker-compose部署prometheus、node-exporter、alertmanager和grafana。prometheus最新版本:2.19.2

mkdir -p /home/prom/{
   prometheus,prometheus/data,alertmanager,grafana}

chmod 777 /home/prom/{
   prometheus/data,grafana}

cd /home/prom
tree .

.
├── alertmanager
│   ├── alertmanager.yml
│   └── config.yml
├── docker-compose.yml
├── grafana
└── prometheus
    ├── alert-rules.yml
    ├── data
    └── prometheus.yml

4 directories, 5 files

Prometheus

vim /home/prom/prometheus/alert-rules.yml
groups:
  - name: node-alert
    rules:
    - alert: NodeDown
      expr: up{
   job="node"} == 0
      for: 5m
      labels:
        severity: critical
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} down"
        description: "Instance: {
   {
    $labels.instance }} 已经宕机 5分钟"
        value: "{
   { $value }}"
        
    - alert: NodeCpuHigh
      expr: (1 - avg by (instance) (irate(node_cpu_seconds_total{
   job="node",mode="idle"}[5m]))) * 100 > 80
      for: 5m
      labels:
        severity: warning
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} cpu使用率过高"
        description: "CPU 使用率超过 80%"
        value: "{
   { $value }}"

    - alert: NodeCpuIowaitHigh
      expr: avg by (instance) (irate(node_cpu_seconds_total{
   job="node",mode="iowait"}[5m])) * 100 > 50
      for: 5m
      labels:
        severity: warning
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} cpu iowait 使用率过高"
        description: "CPU iowait 使用率超过 50%"
        value: "{
   { $value }}"

    - alert: NodeLoad5High
      expr: node_load5 > (count by (instance) (node_cpu_seconds_total{
   job="node",mode='system'})) * 1.2
      for: 5m
      labels:
        severity: warning
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} load(5m) 过高"
        description: "Load(5m) 过高,超出cpu核数 1.2倍"
        value: "{
   { $value }}"

    - alert: NodeMemoryHigh
      expr: (1 - node_memory_MemAvailable_bytes{
   job="node"} / node_memory_MemTotal_bytes{
   job="node"}) * 100 > 90
      for: 5m
      labels:
        severity: warning
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} memory 使用率过高"
        description: "Memory 使用率超过 90%"
        value: "{
   { $value }}"

    - alert: NodeDiskRootHigh
      expr: (1 - node_filesystem_avail_bytes{
   job="node",fstype=~"ext.*|xfs",mountpoint ="/"} / node_filesystem_size_bytes{
   job="node",fstype=~"ext.*|xfs",mountpoint ="/"}) * 100 > 90
      for: 10m
      labels:
        severity: warning
        instance: "{
   { $labels.instance }}"
      annotations:
        summary: "instance: {
   {
    $labels.instance }} disk(/ 分区) 使用率过高"
        description: 
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
答:以下是一个示例的docker-compose.yml文件,用于启动PrometheusGrafana来监控一个或多个应用程序: ``` version: '3' services: prometheus: image: prom/prometheus container_name: prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' restart: always grafana: image: grafana/grafana container_name: grafana depends_on: - prometheus ports: - "3000:3000" environment: GF_SERVER_ROOT_URL: http://localhost:3000 GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin volumes: - ./grafana-data:/var/lib/grafana restart: always ``` 在该docker-compose.yml文件中,我们创建了两个服务:prometheusgrafanaPrometheus服务使用Prometheus Docker映像,并将端口映射到9090。它还将/prometheus.yml文件作为挂载卷传递给容器。在启动容器时,我们使用命令行参数来指定/config.file=/etc/prometheus/prometheus.yml。 Grafana服务程序使用Grafana Docker映像,并依赖于prometheus服务。Grafana服务映射端口3000,并将以下环境变量传递给容器:GF_SERVER_ROOT_URL:使用localhost:3000 (在该容器中内部)作为grafana的根URL,GF_SECURITY_ADMIN_USER和GF_SECURITY_ADMIN_PASSWORD管理Grafana管理员的凭据。此服务还挂载了grafana-data目录,以便可以在重启容器时保留所有Grafana的设置。 最后,我们定义了restart: always参数以确保容器在退出时自动重新启动。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值