一.Grafana
(1)安装Grafana的Linux环境
在官网下载windows的Grafana的压缩包到指定目录,解压缩Grafana压缩文件到包含当前Grafana版本的文件夹。将该文件夹解压缩到希望Grafana运行的任何位置。进入conf目录中复制一份sample.ini,并将sample.ini改名为custom.ini,打开文件custom.ini中,找到custom.ini中的http_port,将其取消注释(.ini文件中的注释为 ; )端口号默认为3000。
进入到 bin目录下,通过执行 grafana-server.exe中的启动Grafana(最好使用命令行启动),如果需要将Grafana作为windows服务进行,则下载NSSM,具体操作,博客: https://www.jianshu.com/p/41b77a1eb7d3
(2)开始练习操作Grafana
首次进入Grafana的web页面,localhost:3000,默认端口号为3000,端口号可以修改custom.ini中的http,默认登录名密码为:admin/admin,进入后修改密码。
二.操作流程:
1.检查服务器配置一个监控。(监控磁盘是否出问题)
集群由 node_exporter 进行监控内存、cpu、磁盘的情况,可以通过 ps aux | grep node_exporter 来检测是否有node_exporter 进程在运行,如果没有则进行配置。
了解node_exporter的作用:
node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控
node-exporter由prometheus官方提供、维护,不会捆绑安装,但基本上是必备的exporter
2.如果没有监控
下载node_exporter
1.将node_exporter安装到linux的/usr/local/node_exporter上
2.$ tar -zxvf 软件压缩包
$ mv 软件名 node_exporter
$ cd node_exporter
$ ./node_exporter & #启动node_exporter
3.访问 ip:9000
prometheus
整个系统以prometheus为核心,primetheus通过集成pushgateway、alertmanager、grafana、node_exporter来进行一系列的架构。下面为整体的架构图:
Alertmanager
- 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容;
- 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等;
- 告警路由(route):根据标签匹配,确定当前告警应该如何处理;
- 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
- 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生
钉钉机器人
webhook_configs:
- url: http://------ip----:8080/webhook
监控指标
CPU使用情况
- alert: Bigdata_CPU #告警规则 expr: 100-(avg(irate(node_cpu_seconds_total{ mode= "idle" }[5m])) by(instance)* 100) > 80 for : 1m labels: token: {{ .Values.prometheus.prometheusSpec.externalLabels.env }}-bigdata priority: P0 status: 告警 #告警内容 annotations: content: "大数据告警:IPadress:{{`{{$labels.instance}}`}} CPU使用大于80%(目前使用:{{`{{$value}}`}}%)" title: "大数据告警:CPU使用大于80%(目前使用:{{`{{$value}}`}}%)" |
内存使用情况
- alert: Bigdata_Memory expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes ) > 80 for : 1m labels: token: {{ .Values.prometheus.prometheusSpec.externalLabels.env }}-bigdata priority: P0 status: 告警 annotations: content: "大数据告警:IPaddress:{{`{{$labels.instance}}`}} 内存使用大于80%(目前使用:{{`{{$value}}`}}%)!" title: "大数据告警:内存使用大于80%(目前使用:{{`{{$value}}`}}%)" |
磁盘使用情况
系统盘
- alert: Bigdata_System_Disk expr: 100 - ((node_filesystem_avail_bytes{ mountpoint= "/" ,fstype!= "rootfs" } * 100) / node_filesystem_size_bytes{ mountpoint= "/" ,fstype!= "rootfs" }) > 90 for : 1m labels: token: {{ .Values.prometheus.prometheusSpec.externalLabels.env }}-bigdata priority: P0 status: 告警 annotations: content: "大数据告警:IPadress:{{`{{$labels.instance}}`}},device:{{`{{$labels.device}}`}},mount:{{`{{$labels.mountpoint}}`}} 磁盘分区使用量大于90%(目前使用:{{`{{$value}}`}}%)!" title: "大数据告警:{{`{{$labels.mountpoint}}`}} 磁盘分区使用大于90%(目前使用:{{`{{$value}}`}}%)" |
数据盘
- alert: Bigdata_Data_Disk expr: 100 - ((node_filesystem_avail_bytes{ device!~ 'rootfs' ,mountpoint=~ "/mnt/.*" } * 100) / node_filesystem_size_bytes{ device!~ 'rootfs' ,mountpoint=~ "/mnt/.*" }) > 80 for : 1m labels: token: {{ .Values.prometheus.prometheusSpec.externalLabels.env }}-bigdata priority: P0 status: 告警 annotations: content: "大数据告警:IPadress:{{`{{$labels.instance}}`}},device:{{`{{$labels.device}}`}},mount:{{`{{$labels.mountpoint}}`}} 磁盘分区使用大于80%(目前使用:{{`{{$value}}`}}%)" title: "大数据告警:{{`{{$labels.mountpoint}}`}} 磁盘分区使用大于80%(目前使用:{{`{{$value}}`}}%)" |