centos7搭建grafana+prometheus

730 阅读3分钟

grafana

下载

https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

下载Standalone Linux Binaries(64 Bit) image.png wget下载

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.1.5.linux-amd64.tar.gz

tar解压

tar -zxvf grafana-enterprise-8.1.5.linux-amd64.tar.gz

移动到自己想要存放的路径

mkdir -p /data/server
mv grafana-enterprise-8.1.5.linux-amd64 /data/server/

启动

修改端口

默认端口3000

vi /data/server/grafana/conf/defaults.ini

找到http_port,修改为自己想要暴露的端口,例如:

http_port = 8000

nohup启动

nohup /data/server/grafana/bin/grafana-server>/dev/null 2>&1 &

防火墙放行端口

系统若开启了防火墙或者iptables,注意放行端口

firewalld

检查是否开启了防火墙

systemctl status firewalld

下图是开启了防火墙 image.png

放行端口

firewall-cmd --add-port=8000/tcp --permanent

重新载入

firewall-cmd --reload

查看端口是否放行成功

firewall-cmd --query-port=8000/tcp

iptables

检查是否开启了 iptables

systemctl status iptables

放行端口

iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

查看端口是否放行成功

iptables -nL

初始化

查看机器IPip a
浏览器访问 http://{{机器IP}}:80000
系统默认用户名和密码为admin/admin,第一次登陆系统会要求修改密码
登录成功后,界面如下 image.png

prometheus

下载

https://prometheus.io/download

image.png wget下载

wget https://github.com/prometheus/prometheus/releases/download/v2.30.1/prometheus-2.30.1.linux-amd64.tar.gz

tar解压

tar -zxvf prometheus-2.30.1.linux-amd64.tar.gz

移动到自己想要存放的路径

mkdir -p /data/server
mv prometheus-2.30.1.linux-amd64 /data/server/prometheus

启动

nohup启动

不指定端口,则使用默认端口9090

nohup /data/server/prometheus --config.file="prometheus.yml">/dev/null 2>&1 &

浏览器访问 http://{{机器IP}}:9090
指定启动端口8090

nohup /data/server/prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:8090">/dev/null 2>&1 &

浏览器访问 http://{{机器IP}}:8090
界面如下 image.png

运行数据采集工具

node_exporter

在需要监控上安装 node_exporter,并启动node_exporter

下载

https://prometheus.io/download/
38413954-4BCD-4527-91C2-CECD61FFBD7B.png wget下载

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

tar解压

tar -zxvf node_exporter-1.2.2.linux-amd64.tar.gz

移动到自己想要存放的路径

mkdir -p /data/server
mv node_exporter-1.2.2.linux-amd64 /data/server/node_exporter

启动

不指定端口启动,则使用默认端口9100

nohup /data/server/node_exporter/node_exporter /dev/null 2>&1 &

prometheus添加配置

在prometheus启动的机器上修改配置文件 vi /data/server/prometheus/prometheus.yml

- job_name: 'linux'
    static_configs:
      - targets: ["机器IP:端口"]

机器IP:修改成需要监控的机器的IP
端口:修改为node_exporter使用端口
修改后重启prometheus
访问prometheus的控制面板选择 Status > Targets

E79B34B7-7A24-4B71-9BAB-99E85A08FFCE.png

prometheus 添加告警

在prometheus安装的机器上,安装alertmanager

下载

https://prometheus.io/download/
24398143-EE75-4D6F-BCE0-64405990B4D6.png wget下载

wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz

tar解压

tar -zxvf alertmanager-0.23.0.linux-amd64.tar.gz

移动到自己想要存放的路径

mkdir -p /data/server
mv alertmanager-0.23.0.linux-amd64 /data/server/alertmanager

启动

修改配置 vi /data/server/alertmanager/alertmanager.yml 发送邮件告警设置

global:
  resolve_timeout: 5m
  smtp_from: 'xxx@163.com'
  smtp_smarthost: 'smtp.163.com:465'
  smtp_auth_username: 'xxx@163.com'
  smtp_auth_password: 'xxx'
  smtp_require_tls: false
  smtp_hello: '163.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: 'xxx@163.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

不指定端口,则默认使用端口9093

nohup ./alertmanager --config.file="alertmanager.yml"

prometheus添加配置

vi /data/server/prometheus/prometheus.yml

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 机器IP:端口

机器IP:修改为机器的IP
端口:修改为alertmanager使用端口
重启prometheus

添加node_rules告警规则

vi /data/server/prometheus/prometheus.yml

rule_files:
  - "/data/server/alertmanager/node_rules.yml"

vi /data/server/alertmanager/node_rules.yml

groups:
- name: node
  rules:
  - alert: "node server status"
    expr: up{job="linux"} == 0
    for: 15s
    annotations:
      summary: "机器{{ $labels.instance }}连接失败"
      description: "{{ $labels.instance }}宕机!"
- name: memory-rule
  rules:
  - alert: "node 内存报警"
    expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) > 90
    for: 15s
    labels:
      severity: warning
    annotations:
      summary: "机器:{{$labels.instance}}内存使用率超过90%了"
      description: "内存当前使用率:{{ $value }}%"
      value: "{{ $value }}"

重启prometheus

常用告警规则
内存使用
100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes)

磁盘使用
(node_filesystem_size_bytes{mountpoint="/data"}-node_filesystem_free_bytes{mountpoint="/data"})/node_filesystem_size_bytes{mountpoint="/data"} * 100

cpu使用
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100)

测试告警

运行node_exporter机器,停止node_exporter,然后等待一会就可以收到告警邮件

image.png

再次运行node_exporter,则告警恢复
image.png

grafana添加prometheus数据源

0C43B118-E3DE-403A-83C0-AB894E115F95.png

6FDA7763-EDC8-4654-B66B-7390C9943498.png

945330AB-7D83-46CA-9C85-D45F6B35F832.png

填写prometheus看板的地址,点击 save & test 015E3AA9-E803-431B-A052-10BCF1054BFA.png

grafana添加node监控看板

DB01CF07-60B7-4D11-96CB-25D8F929E2F3.png

点击 manage import F6C5524F-0500-4D41-9355-7593B4F07253.png

模板填写 8919

B6DD41EE-446B-4646-A0D9-C9D7D27DCA7C.png

Name 可以填写自定义名称 VictoriaMetrics 选择Prometheus的数据源

F5CE538F-DC36-4F7A-93F8-42F65CE9E599.png