目录
第一步:安装go语言环境(我觉得不装也没有什么问题)
第二步:在192.168.248.11 上安装Prometheus
第三步:监控远程LInux主机
第四步:在192.168.248.11 上安装Grafana
第五步:在Prometheus服务器上安装alermanager
准备一台Prometheus服务器 192.168.248.11
一台被监控服务器 192.168.248.12
安装Prometheus服务
第一步:安装go语言环境(我觉得不装也没有什么问题)
go语言环境下载
链接:
https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -xzf go1.8.3.linux-amd64.tar.gz -C /usr/local
vim /etc/profile
#在
文件最下面
添加go环境
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:/usr/local/go/bin

#保存
退出后,让
配置文件生效:
source /etc/profile
#验证是否成功
go version

第二步:在192.168.248.11 上安装Prometheus
#去官网下载对应的系统的版本,官方地址:
https://prometheus.io/download/

#传入服务器,解压到/usr/local
tar -vxf prometheus-2.33.4.linux-amd64.tar.gz -C /usr/local

#为了以后方便进入目录,可以做个软连接
ln -sv /usr/local/prometheus-2.33.4.linux-amd64.tar.gz -C /usr/local/Prometheus
#配置监控的
配置文件:prometheus.yml

#运行该
文件
cd /usr/local/Prometheus
./prometheus
#通过url 192.168.248.11:9090,点击targets
跳转到监控目标

#主机数据展示

#在web主
页面可以通过关键字
查询监控项

#补充:可以将Prometheus服务放入系统服务里,使用sy
stemctl启动
cd /usr/lib/sy
stemd/sy
stem
vim prometheus.service
[Unit] Description=prometheus Sy
stem Documentation=https://prometheus.io [Service] Restart=on-failure ExecStart=/usr/local/prometheus/prometheus --storage.tsdb.path=/usr/local/prometheus/data --con
fig.file=/usr/local/prometheus/prometheus.yml [Install] WantedBy=
multi-user.target


第三步:监控远程LInux主机
#在远程linux主机(被监控端安装node_exporter组件)
#下载地址:
https://prometheus.io/download/

tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-0.16.0.linux-amd64/ /usr/local/node_exporter
#包里只有
一个启动命令node_exporter,可以直接使用此命令启动
nohup /usr/local/node_exporter/node_exporter &

#再开
一个终端,确认9100的端口

#Tip:nohup命令:如果把启动node_exporter的终端给
关闭,那么进程也会随之
关闭。nohup命令会帮我们
解决这个问题
#通过访问192.168.248.12:9100/metrics可以查看node_exporter在被监控端收集的监控信息

#在192.168.248.11这台服务器的
配置文件里
添加被监控及其的配置段

#重启服务,先
关闭上次打开的进程

#在192.168.248.11这台服务器 lsof -i:9090

kill -9 44410
cd /usr/local/Prometheus
./prometheus

#贴士:可以将node exporter加入系统启动
cd /usr/lib/sy
stemd/sy
stem
vim node_exporter.service
[Unit] Description=Prometheusnode_exporter [Service] User=nobody ExecStart=/usr/local/node_exporter/node_exporter --log.level=error ExecStop=/usr/bin/killallnode_exporter [Install] WantedBy=default.target

第四步:在192.168.248.11 上安装Grafana
wget
https://dl.grafana.com/oss/release/grafana-5.3.4-1.x86_64.rpm
rpm -ivh grafana-5.3.4-1.x86_64.rpm
## wget
https://dl.grafana.com/enterprise/release/grafana-enterprise-7.2.0-1.x86_64.rpm
## sudo yum install grafana-enterprise-7.2.0-1.x86_64.rpm
sy
stemctl start grafana-server
sy
stemctl enable grafana-server
#检查端口 lsof -i:3000

#浏览器访问192.168.248.11:3000





#配置dashboard
#
登录grafana的dashboard平台,
查询所需的json
文件,地址:
https://grafana.com/grafana/dashboards
#去官网寻找对应的表盘,这里选择node exporter监控看板
#在grafana中导入表盘
#访问
https://grafana.com/grafana/dashboards/8919/revisions 下载最小的json,或
copy对应id



#grafana的dashboard安装成功界面展示

==================Prometheus+Grafana安装完成============================
#在192.168.248.12 上安装
MysqL并加入Prometheus的监控
#下载
wget
https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz
#解压:
tar xf
MysqLd_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
#创建
一个MysqL配置文件,写上连接的
用户名和
密码(这个
用户需要被授予远程访问的权限)
vim /usr/local/
MysqLd_exporter-0.11.0.linux-amd64/.my.cnf
[client]
user=abc
password=123456
#启动
MysqL的监控
nohup /usr/local/
MysqLd_exporter-0.11.0.linux-amd64/
MysqLd_exporter --con
fig.my.cnf=/usr/local/
MysqLd_exporter-0.11.0.linux-amd64/.my.cnf &
#将
MysqL的监控配置到192.168.248.11上
cd /usr/local/Prometheus
vim /prometheus.yml
#
文件末尾
添加如下
内容,注意缩进
- job_name:'agent_
MysqL'
static_con
figs:
- targets:['192.168.246.12:9104']
#杀死原进程,再启动新进程
lsof -i:9090
cd /usr/local/Prometheus
./prometheus

=======================
MysqL添加到Prometheus完成=========================
第五步:在Prometheus服务器上安装alermanager
上面的Prometheus服务安排在192.168.80.11上,下面的统一安排在192.168.80.14上
# 下载地址:
https://prometheus.io/download/

#或者
wget
https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager
#我这里用的是0.23.0的版本
#
修改配置文件
cd /usr/local/alertmanager
vim alertmanager.yml
global: resolve_timeout: 5m smtp_from: '17****
[email protected]' #邮箱地址 smtp_smarthost: 'smtp.qq.com:465' #邮箱smtp服务器代理 smtp_auth_username: '17*****
[email protected]' # 邮箱
名称 smtp_auth_password: '*****' #授权码 smtp_require_tls: false smtp_hello: 'qq.com' route: group_by: ['alertname'] #报警分组依据 group_wait: 5s #最初即第一次等待多久时间发送一组警报的
通知 group_interval: 5s # 在发送新警报前的等待时间 repeat_interval: 30m # 发送重复警报的周期 对于email配置中,此项不可以设置过低,>否则将会由于
邮件发送太多频繁,被smtp服务器拒绝 receiver: 'email' # 发送警报的接收者的
名称,以下receivers name的
名称 receivers: - name: 'email' email_con
figs: # 邮箱配置 - to: '17*****
[email protected]' # 接收警报的email配置 headers: { Subject: "[WARN] 报警
邮件"} #
接收邮件的
标题 send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']

#检测yml
文件是否有语法
错误
./amtool check-con
fig alertmanager.yml

#启动alertmanager
cd /usr/local/alertmanager
./alertmanager

#
修改Prometheus
配置文件
cd /usr/local/prometheus/
vim prometheus.yml
cd /usr/local/prometheus vim prometheus.yml # my global con
fig 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 con
figuration alerting: alertmanagers: - static_con
figs: - targets: ['localhost:9093'] #alermanager地址 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "/usr/local/prometheus/rules/*.yml" #规则存放路径 # - "second_rules.yml" # A scrape con
figuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_con
figs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this con
fig.

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

#
添加报警规则
vim sy
stem_info.yml
groups: - name: 主机状态-监控告警 rules: - alert: 主机状态 expr: up == 0 for: 5m labels: status: 非常严重 annotations: summary: "{{$labels.instance}}:服务器宕机" description: "{{$labels.instance}}:服务器延时超过5分钟" - alert:
cpu使用情况 expr: 100-(avg(irate(node_
cpu_seconds_total{mode="idle"}[5m])) by(instance)* 100) > 80 for: 1m labels: status: 一般告警 annotations: summary: "{{$labels.instance}}
cpu使用率过高!" description: "{{$labels.instance }}
cpu使用大于80%(目前使用:{{$value}}%)" - alert: 内存使用 expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 80 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} 内存使用率过高!" description: "{{$labels.instance }} 内存使用大于80%(目前使用:{{$value}}%)" - alert: IO
性能 expr: (avg(irate(node_
disk_io_time_seconds_total[1m])) by(instance)* 100) > 80 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} 流入磁盘IO使用率过高!" description: "{{$labels.instance }} 流入磁盘IO大于80%(目前使用:{{$value}})" - alert: 网络 expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} 流入网络带宽过高!" description: "{{$labels.instance }}流入网络带宽持续2分钟高于100M. RX带宽使用率{{$value}}" - alert: 网络 expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} 流出网络带宽过高!" description: "{{$labels.instance }}流出网络带宽持续2分钟高于100M. RX带宽使用率{{$value}}" - alert: TCP会话 expr: node_netstat_Tcp_CurrEstab > 1000 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} TCP_ESTABLISHED过高!" description: "{{$labels.instance }} TCP_ESTABLISHED大于1000(目前使用:{{$value}}%)" - alert: 磁盘容量 expr: 100-(node_filesy
stem_free_bytes{fstype=~"ext4|xfs"}/node_filesy
stem_size_bytes {fstype=~"ext4|xfs"}*100) > 80 for: 1m labels: status: 严重告警 annotations: summary: "{{$labels.instance}} 磁盘分区使用率过高!" description: "{{$labels.instance }} 磁盘分区使用大于80%(目前使用:{{$value}}%)"
#重启Prometheus服务
sy
stemctl restart prometheus
#进浏览器查看警报

#邮箱展示(由于我这里邮箱名字给错了,所有
显示发送失败

=================================alertmanager报警配置完成============================
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。