技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Prometheus>正文
Linux下搭建Prometheus+Alertmanager+Grafana监控平台
2022年05月25日 Prometheus 暂无评论 ⁄ 被围观 8,198次+

组件介绍:

1、Prometheus是由go语言开发的一套开源的系统监控报警框架。

2、Alertmanager是接收Prometheus发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组,策略路由,是一款专业的告警通知系统。

3、Grafana是一个开源的图表可视化工具,图表配置方便,生成的图表很漂亮,并能实现告警,支持五十多种数据源,Prometheus就是其中支持的一种。

4、可以理解为Prometheus是收集数据,Alertmanager是数据告警系统,Grafana是把Prometheus收集来的数据整理并通过图表的方式展示出来。

5、Prometheus也有自己的图表展示模块,但相比Grafana比较简陋,所以一般使用Grafana作为Web UI展示数据。

6、Grafana也有告警功能,但是比较简单,所以一般使用Alertmanager专业告警系统。

操作系统:CentOS 7.x 8.x

服务端IP:192.168.21.182

客户端IP:192.168.21.179

准备工作:

一、所有服务器关闭selinux

setenforce 0 #临时关闭

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config #永久关闭

/usr/sbin/sestatus -v #shutdown -r now 重启服务器后查看selinux状态,disabled表示关闭

二、设置防火墙,放行相关端口

#内网集群环境下,如果有硬件防火墙,也可以直接关闭系统防火墙。

Prometheus服务端:tcp 9090

Prometheus客户端:tcp 9100

Alertmanager:tcp 9093

Grafana:tcp 3000

CentOS 7.x 8.x默认是firewall防火墙,可以改为iptables防火墙

1、关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

systemctl mask firewalld

systemctl stop firewalld

yum remove firewalld

2、安装iptables防火墙

软件包下载地址:

CentOS 8.x https://vault.centos.org/8.2.2004/BaseOS/x86_64/os/Packages/iptables-services-1.8.4-10.el8.x86_64.rpm

CentOS 7.x https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/iptables-services-1.4.21-35.el7.x86_64.rpm

上传到目录:/usr/local/src

cd /usr/local/src

安装 iptables-services:

CentOS 8.x rpm -ivh iptables-services-1.8.4-10.el8.x86_64.rpm

CentOS 7.x rpm -ivh iptables-services-1.4.21-35.el7.x86_64.rpm

vi /etc/sysconfig/iptables #编辑防火墙配置文件

# sample configuration for iptables service

# you can edit this manually or use system-config-firewall

# please do not ask us to add additional ports/services to this default configuration

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9093 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

/usr/libexec/iptables/iptables.init restart #重启防火墙

三、设置时区和时间(所有服务器要一致)

rm -rf /etc/localtime #先删除默认的时区设置

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换上海/北京作为默认

vi /etc/sysconfig/clock #添加时区

Zone=Asia/Shanghai

:wq! #保存退出

timedatectl set-local-rtc 0

hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数

date #显示系统时间

date -s "2022-05-15 14:15:00" #修改时间

一、安装部署Prometheus

1、安装Prometheus服务端

1.1下载Prometheus服务端安装包

Prometheus官方网站:https://prometheus.io/download/

下载二进制版的安装包

目前最新版本下载:https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-amd64.tar.gz

上传prometheus-2.35.0.linux-amd64.tar.gz到/usr/local/src目录

1.2安装Prometheus服务端

#解压安装包到安装目录

cd /usr/local/src

tar zxvf prometheus-2.35.0.linux-amd64.tar.gz -C /usr/local

#修改名称

mv /usr/local/prometheus-2.35.0.linux-amd64 /usr/local/prometheus

#创建Prometheus组和用户

groupadd -r prometheus #添加用户组

useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus

#创建prometheus数据存放目录

mkdir -p /data/prometheus

#设置目录权限

chown -R prometheus.prometheus /usr/local/prometheus

chown -R prometheus.prometheus /data/prometheus

#直接使用默认配置文件启动

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

#查看端口有9090表示服务启动成功

netstat -tnpl | grep prometheus

ss -tnpl | grep prometheus

#查看进程

ps -ef | grep prometheus

#关闭进程

pkill prometheus

#设置创建prometheus开机自启动

vi /usr/lib/systemd/system/prometheus.service    #注意要去掉多余的空格和行,否则启动会报错

[Unit]

Description=Prometheus

After=network.target

[Service]

Type=simple

Environment="GOMAXPROCS=4"

User=prometheus

Group=prometheus

ExecReload=/bin/kill -HUP $MAINPID

ExecStart=/usr/local/prometheus/prometheus \

--config.file=/usr/local/prometheus/prometheus.yml \

--storage.tsdb.path=/data/prometheus \

--storage.tsdb.retention=30d \

--web.console.libraries=/usr/local/prometheus/console_libraries \

--web.console.templates=/usr/local/prometheus/consoles \

--web.listen-address=0.0.0.0:9090 \

--web.read-timeout=5m \

--web.max-connections=10 \

--query.max-concurrency=20 \

--query.timeout=2m \

--web.enable-lifecycle

PrivateTmp=true

PrivateDevices=true

ProtectHome=true

NoNewPrivileges=true

LimitNOFILE=infinity

ReadWriteDirectories=/data/prometheus

ProtectSystem=full

SyslogIdentifier=prometheus

Restart=always

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload #重新加载配置

systemctl start prometheus #启动prometheus

systemctl status prometheus #查看prometheus状态

systemctl stop prometheus #停止prometheus

systemctl restart prometheus #重启prometheus

systemctl enable prometheus #设置开机启动

#查看端口有9090表示服务启动成功

netstat -tnpl | grep prometheus

#浏览器打开http://192.168.21.182:9090/可以看到如下界面

Status-Targets-就可以看到监控的本机

#浏览器打开http://192.168.21.182:9090/metrics

可以查看到监控本机数据展示

2、安装Prometheus客户端

2.1 在被监控的主机上安装node_exporter客户端组件

#下载二进制版的客户端组件

目前最新版本下载:https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz

上传node_exporter-1.3.1.linux-amd64.tar.gz到/usr/local/src目录

#解压安装包到安装目录

cd /usr/local/src

tar zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local

#修改名称

cd /usr/local

mv node_exporter-1.3.1.linux-amd64 node_exporter

#创建Prometheus组和用户

groupadd -r prometheus #添加用户组

useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus

#设置目录权限

chown -R prometheus.prometheus /usr/local/node_exporter

#使用默认文件启动node_exporter

/usr/local/node_exporter/node_exporter &

#确认是否正常启动(默认端口9100)

ss -tnpl |grep node_exporter

LISTEN 0 128 [::]:9100 [::]:* users:(("node_exporter",pid=1098,fd=3))

#查看进程

ps -ef | grep node_exporter

#关闭进程

pkill node_exporter

#设置创建node_exporter开机自启动

vi /usr/lib/systemd/system/node_exporter.service

[Unit]

Description=node_exporter

After=network.target

[Service]

Type=simple

User=prometheus

Group=prometheus

ExecStart=/usr/local/node_exporter/node_exporter \

--web.listen-address=0.0.0.0:9100 \

--web.telemetry-path=/metrics \

--log.level=info \

--log.format=logfmt

Restart=always

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令

systemctl start node_exporter #启动node_exporter

systemctl status node_exporter #查看node_exporter状态

systemctl  stop node_exporter #停止node_exporter

systemctl restart node_exporter #重启node_exporter

systemctl enable node_exporter #设置开机启动

#查看端口有9100表示服务启动成功

ss -tnpl | grep node_exporter

#浏览器打开http://192.168.21.179:9100/metrics

#可以查看到node_exporter在被监控端的数据展示

同样操作,在所有被监控主机上安装node_exporter客户端组件

3、设置prometheus服务端配置文件,添加被监控的客户端主机

cp   /usr/local/prometheus/prometheus.yml   /usr/local/prometheus/prometheus.yml-bak   #备份原文件

vi /usr/local/prometheus/prometheus.yml  #注意缩进格式

- job_name: "node_exporter"   #添加一个监控组的名称,可以自定义填写

static_configs:

- targets: ["192.168.21.179:9100"]   #被监控主机的ip

:wq! #保存退出

systemctl  daemon-reload  #修改后重新加载配置

systemctl  restart  prometheus  #重启prometheus

#浏览器打开http://192.168.21.182:9090/可以看到如下界面

#添加多个被监控主机,格式如下

- job_name: "node_exporter"

static_configs:

- targets: ["192.168.21.179:9100","192.168.21.178:9100","192.168.21.177:9100"]   #用英文状态下逗号分开

#这种新增监控节点的问题是每次添加完节点之后必须要重启Prometheus才能生效

#通过file_sd_configs基于文件的服务发现动态添加节点信息

vi /usr/local/prometheus/prometheus.yml  #在最后添加下面的代码

- job_name: "node_service_discovery"

file_sd_configs:

- files:

- targets/*.json    #加载prometheus安装目录下targets目录里面的所有json文件

refresh_interval: 15s    #设置刷新时间间隔

:wq! #保存退出

###################################################

#也可以直接用- files: ["/usr/local/prometheus/dynamic-node.json"]

###################################################

mkdir -p  /usr/local/prometheus/targets   #创建json文件存放目录

vi /usr/local/prometheus/targets/dev_node.json   #添加配置文件,注意缩进格式,否则出错

[

{

"targets": ["192.168.21.179:9100","192.168.21.178:9100","192.168.21.177:9100"],

"labels": {

"env": "Dev"

}

}

]

:wq! #保存退出

#这种方式只要第一次配置的时候重启Prometheus,后面在dev_node.json文件中新增或删除节点是即时生效的,不需要重启Prometheus

systemctl daemon-reload  #修改后重新加载配置

systemctl restart prometheus  #重启prometheus

#查看端口有9090表示服务启动成功

netstat -tnpl | grep prometheus

Status-Targets-可以看到新加入的主机信息

二、在Prometheus服务端安装Alertmanager告警模块

Alertmanager是独立的告警模块,也可以单独一台服务器,这里我们和Prometheus放在一起。

2.1下载Alertmanager安装包

Alertmanager官方网站:https://prometheus.io/download/

下载二进制版的安装包

目前最新版本下载:https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz

上传alertmanager-0.24.0.linux-amd64.tar.gz到/usr/local/src目录

2.2安装Alertmanager

#解压安装包到安装目录

cd /usr/local/src

tar zxvf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local

#修改名称

mv /usr/local/alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager

#直接使用默认配置文件启动

/usr/local/alertmanager/alertmanager --config.file="/usr/local/alertmanager/alertmanager.yml" &

#查看端口有9093表示服务启动成功

netstat -tnpl | grep alertmanager

ss -tnpl | grep alertmanager

#查看进程

ps -ef | grep alertmanager

#关闭进程

pkill alertmanager

2.3设置Alertmanager开机启动

vi /usr/lib/systemd/system/alertmanager.service #编辑

[Unit]

Description=alertmanager

Documentation=https://github.com/prometheus/alertmanager

After=network.target

[Service]

Type=simple

User=root

ExecStart=/usr/local/alertmanager/alertmanager \

--config.file=/usr/local/alertmanager/alertmanager.yml \

--storage.path=/usr/local/alertmanager/data \

--web.listen-address=:9093 \

--data.retention=120h

Restart=on-failure

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令

systemctl start alertmanager #启动alertmanager

systemctl status alertmanager #查看alertmanager状态

systemctl restart alertmanager #重启alertmanager

systemctl enable alertmanager #设置开机启动

#浏览器打开http://192.168.21.182:9093/#/alerts

#看到下面的界面,说明启动成功

2.4修改配置文件,设置电子邮箱、钉钉、企业微信告警

mv /usr/local/alertmanager/alertmanager.yml /usr/local/alertmanager/alertmanager.yml-bak #备份

vi /usr/local/alertmanager/alertmanager.yml  #设置电子邮箱、钉钉、企业微信告警,注意格式缩进

global:

resolve_timeout: 5m

smtp_smarthost: 'smtp.163.com:465'

smtp_from: 'xxx@163.com'

smtp_auth_username: 'xxx@163.com'

smtp_auth_password: 'xxxxxxxxx'    #不是登录密码,是邮箱授权码

smtp_require_tls: false

route:

group_by: ['alertname']

group_wait: 10s

group_interval: 30s

repeat_interval: 10m

receiver: 'email'

templates:

- 'templates/*.tmpl'    #启用电子邮箱告警模板

receivers:

- name: 'email'

email_configs:   #设置电子邮箱告警

- to: 'xxxxxx@qq.com'

html: '{{ template "email.html" . }}'

headers: {Subject: "[WARN] 报警邮件 {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}"}

webhook_configs:   #设置钉钉告警

- url: 'http://localhost:8060/dingtalk/webhook1/send'

wechat_configs:   #设置企业微信告警

- corp_id: ww8a707d83c846bxxx

to_user: '@all'

agent_id: 1000002

api_secret: tR1AKbM-e1F2ThY5tTREPc4WtrigGJcXswN3ERAmsss

inhibit_rules:

- source_match:

severity: 'critical'

target_match:

severity: 'warning'

equal: ['alertname', 'dev', 'instance']

:wq! #保存退出

webhook_configs部分参数说明:

钉钉告警需要安装插件prometheus-webhook-dingtalk

先要在登录到钉钉,创建一个钉钉群,添加机器人,获取到Webhook:https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq

还需要进行安全设置,ip白名单/自定义关键词/加签

#测试钉钉告警机器人

curl -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"prometheus alert test"}}' https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq

#插件下载地址

https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

上传到/usr/local/src目录下

#解压并重命名

cd /usr/local/src

tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local

mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 prometheus-webhook-dingtalk

#设置目录权限

chown -R prometheus:prometheus prometheus-webhook-dingtalk

#配置文件

cd /usr/local/prometheus-webhook-dingtalk

cp config.example.yml config.yml

vi /usr/local/prometheus-webhook-dingtalk/config.yml   #修改

targets:

webhook1:

url: https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq

# secret for signature

secret: 710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq

:wq!   #保存退出

#直接使用默认配置文件启动

cd /usr/local/prometheus-webhook-dingtalk

/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &

#查看端口有8060表示服务启动成功

ss -tnpl | grep prometheus-webh

#查看进程

ps -ef | grep prometheus-webh

#关闭进程

pkill prometheus-webh

#添加开机启动

vi /usr/lib/systemd/system/prometheus-webhook-dingtalk.service

[Unit]

Description=prometheus-webhook-dingtalk

After=network-online.target

[Service]

User=prometheus

Restart=on-failure

ExecStart=/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk \

--config.file=/usr/local/prometheus-webhook-dingtalk/config.yml

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload #重新加载配置

systemctl start prometheus-webhook-dingtalk #启动prometheus-webhook-dingtalk

systemctl status prometheus-webhook-dingtalk #查看prometheus-webhook-dingtalk状态

systemctl stop prometheus-webhook-dingtalk #停止prometheus-webhook-dingtalk

systemctl restart prometheus-webhook-dingtalk #重启prometheus-webhook-dingtalk

systemctl enable prometheus-webhook-dingtalk #设置开机启动

#查看端口有8060表示服务启动成功

ss -tnpl | grep prometheus-webh

#测试

curl http://localhost:8060/dingtalk/webhook1/send -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content": "监控告警"}}'

wechat_configs部分参数说明:登录企业微信网站https://work.weixin.qq.com/

api_secret: 企业微信("企业应用"-"自定应用"[Alertmanager微信告警]- "Secret")

corp_id(企业ID)("我的企业"-"CorpID"[在底部])

agent_id: 企业微信("企业应用"-"自定应用"[Alertmanager微信告警]-"AgentId")

to_user: '@all' :发送报警到所有人

vi    /usr/local/alertmanager/templates/email.tmpl   #添加电子邮箱告警配置模板

{{ define "email.html" }}

{{ range .Alerts }}

告警程序: prometheus_alert <br>

告警级别: {{ .Labels.severity }} 级 <br>

告警类型: {{ .Labels.alertname }} <br>

故障主机: {{ .Labels.instance }} <br>

告警主题: {{ .Annotations.summary }} <br>

告警详情: {{ .Annotations.description }} <br>

触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br>

{{ end }}

{{ end }}

:wq!  #保存退出

参数说明:{{ .StartsAt.Format "2006-01-02 15:04:05" }} 这里的时间必须设置为go语言的诞生时间,不能乱写

#检查配置文件

cd /usr/local/alertmanager

./amtool check-config alertmanager.yml

[root@centos-8 alertmanager]# cd /usr/local/alertmanager

[root@centos-8 alertmanager]# ./amtool check-config alertmanager.yml

Checking 'alertmanager.yml' SUCCESS

Found:

- global config

- route

- 1 inhibit rules

- 1 receivers

- 0 templates

浏览器打开http://192.168.21.182:9093/#/status   查看状态

三、关联Prometheus服务端与Alertmanager组件

Alertmanager是独立的组件,告警信息是通过Prometheus服务端推送过来的,所以需要在服务端Prometheus中关联Alertmanager组件并添加告警规则文件。

vi  /usr/local/prometheus/prometheus.yml  #配置prometheus关联Alertmanager

# my global config

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).

# Alertmanager configuration

alerting:

alertmanagers:

- static_configs:

- targets:

- 192.168.21.182:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.

rule_files:

- "rules/*.yml"

# - "first_rules.yml"

# - "second_rules.yml"

:wq! #保存退出

mkdir -p /usr/local/prometheus/rules  #创建规则目录

vi /usr/local/prometheus/rules/node_alerts.yml  #添加编辑

groups:

- name: 实例存活告警规则

rules:

- alert: 实例存活告警 # 告警规则的名称(alertname)

expr: up == 0 # expr 是计算公式,up指标可以获取到当前所有运行的Exporter实例以及其状态,即告警阈值为up==0

for: 30s # for语句会使 Prometheus 服务等待指定的时间, 然后执行查询表达式。(for 表示告警持续的时长,若持续时长小于该时间就不发给alertmanager了,大于该时间再发。for的值不要小于prometheus中的scrape_interval,例如scrape_interval为30s,for为15s,如果触发告警规则,则再经过for时长后也一定会告警,这是因为最新的度量指标还没有拉取,在15s时仍会用原来值进行计算。另外,要注意的是只有在第一次触发告警时才会等待(for)时长。)

labels: # labels语句允许指定额外的标签列表,把它们附加在告警上。

severity: Disaster

annotations: # annotations语句指定了另一组标签,它们不被当做告警实例的身份标识,它们经常用于存储一些额外的信息,用于报警信息的展示之类的。

summary: "节点失联"

description: "节点断联已超过1分钟!"

- name: 内存告警规则

rules:

- alert: "内存使用率告警"

expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 75 # 告警阈值为当内存使用率大于75%

for: 30s

labels:

severity: warning

annotations:

summary: "服务器内存报警"

description: "内存资源利用率大于75%!(当前值: {{ $value }}%)"

- name: 磁盘报警规则

rules:

- alert: 磁盘使用率告警

expr: (node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100 > 80 # 告警阈值为某个挂载点使用大于80%

for: 1m

labels:

severity: warning

annotations:

summary: "服务器 磁盘报警"

description: "服务器磁盘设备使用超过80%!(挂载点: {{ $labels.mountpoint }} 当前值: {{ $value }}%)"

:wq! #保存退出

#添加对alertmanager的监控

vi  /usr/local/prometheus/targets/dev_node.json   #编辑添加

"192.168.21.182:9093"  #添加

:wq! #保存退出

#检查配置文件

/usr/local/prometheus/promtool check config   /usr/local/prometheus/prometheus.yml

systemctl  daemon-reload  #修改后重新加载配置

systemctl  restart  prometheus  #重启prometheus

四、测试Alertmanager告警

关闭一台客户端服务器,查看电子邮箱、钉钉、企业微信是否收到告警信息

五、安装部署安装grafana

在服务端安装部署

下载地址:https://grafana.com/grafana/download

目前最新版本:https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.3.linux-amd64.tar.gz

上传grafana-enterprise-8.5.3.linux-amd64.tar.gz到/usr/local/src目录

#解压安装包到安装目录

cd /usr/local/src

tar zxvf grafana-enterprise-8.5.3.linux-amd64.tar.gz -C /usr/local

#修改名称

cd /usr/local

mv grafana-8.5.3 grafana

#使用默认文件启动grafana

cd  /usr/local/grafana   #先进入安装目录,再启动

/usr/local/grafana/bin/grafana-server &  #启动

#如果不加 --config参数,Grafana默认会去读conf里面的配置文件

#查看端口有3000表示服务启动成功

netstat -lnptu | grep 3000

#查看进程

ps -ef | grep grafana

#关闭进程

pkill grafana

vi /etc/profile #把grafana服务加入系统环境变量:在最后添加下面这一行

export PATH=$PATH:/usr/local/grafana/bin

:wq! #保存退出

source /etc/profile #使配置立刻生效

#设置grafana开机自启动

vi /usr/lib/systemd/system/grafana.service #编辑

[Unit]

Description=Grafana

After=network.target

[Service]

Type=notify

ExecStart=/usr/local/grafana/bin/grafana-server -homepath=/usr/local/grafana

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令

systemctl start grafana #启动node_exporter

systemctl status grafana #查看node_exporter状态

systemctl restart grafana #重启node_exporter

systemctl enable grafana #设置开机启动

浏览器打开http://192.168.21.182:3000/

默认用户名和密码admin/admin

可以选择修改新密码,也可以点击Skip跳过

六、在Grafana上添加Prometheus数据源

把prometheus服务端收集的数据做为一个数据源添加到grafana,通过grafana展示出来

#添加prometheus数据源,登录http://192.168.21.182:3000/

点击左侧的齿轮图表-Data Source

Add data source

选择Prometheus

URL:http://192.168.21.182:9090

其他参数保持默认即可

点击 Save & test

#添加监控模板

Grafana官方提供模板地址:https://grafana.com/grafana/dashboards

Linux系统监控模板

英文版:https://grafana.com/grafana/dashboards/11074

中文版:https://grafana.com/grafana/dashboards/16098

中文版:https://grafana.com/grafana/dashboards/8919

#我们使用8919这个模板JSON文件下载地址:

https://grafana.com/api/dashboards/8919/revisions/25/download

#下载JSON文件

点+选择Import

打开上一步下载好的JSON文件,复制粘贴到Import via panel json

Load

选择Prometheus

选择Import

可以看到刚才添加的仪表盘,已经能看到监控数据了

点击Grafana可以查看面板信息

#配置Grafana邮件告警

Grafana自带告警功能,可以了解下,但是一般用Alertmanager告警模块。

1、配置告警邮箱

#使用163邮箱进行配置

打开163邮箱-设置-POP3/SMTP/IMAP-POP3/SMTP服务

点击开启

记录下授权密码,后面需要用到:xxxxxxxxxxxxxxxx

确定

确保POP3/SMTP服务是:已开启

2、在Grafana配置文件中添加告警邮箱信息

vi /usr/local/grafana/conf/defaults.ini  #在最后添加以下配置

[smtp]

enabled = true

host = smtp.163.com:465

user = user@163.com

password = xxxxxxxxxxxxxxxx

skip_verify = true

from_address = user@163.com

from_name = Grafana

[alerting]

enabled = true

execute_alerts = true

:wq! #保存退出

参数说明:

smtp.163.com:465 #163邮箱的SMTP服务器

user@163.com #用来发邮件的163邮箱地址

xxxxxxxxxxxxxxxx #注意不是邮箱的登录密码,是开启163邮箱IMAP/SMTP服务生成的授权密码

3、Grafana控制台添加接收告警的邮件地址

点铃铛图标-Alerting-Notification channels

New channel

Test进行测试

邮件发送成功,可以到邮箱查看

至此,Linux下搭建Prometheus+Alertmanager+Grafana监控平台完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2024 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3