组件介绍:
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监控平台完成。