一、Prometheus
选择文件安装路径:本人喜欢在 opt下创建monitor 文件夹在/opt/monitor文件夹下面创建安装文件的文件夹进行安装相应的中间件
1、下载两种方法
(1)、使用 wget 下载 Prometheus 的安装包
安装路径:在/opt/monitor/prometheus下载并解压Prometheus文件 wget https://github.com/prometheus/prometheus/releases/download/v1.6.2/prometheus-2.1.0.linux-amd64.tar.gz
(2)、自己手动下载通过Xftp7放到安装/opt/monitor/prometheus文件夹下
2、解压
到安装目录下进行解压 tar -xvzf prometheus-2.1.0.linux-amd64.tar.gz
3、修改prometheus.yml
路径切换到:/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64# 执行命令:vim prometheus.yml
static_configs: - targets: ['192.168.113.244:9090']
4、启动prometheus
进入/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#文件夹下启动 执行启动命令:./prometheus & 后台启动:nobup ./prometheus
5、查看是否启动成功
查看是否存在进程 ps -ef|grep prometheus
6、浏览器访问 IP:9090(192.168.113.244:9090)
安装成功!!!
二、redis_exporter和kafka_exporter
Prometheus监控redis需要通过redis_exporter来获取redis的相关信息
1、下载redis_exporter和 kafka_exporter组件包
1、安装路径:在/opt/monitor/redis_exporter下载并解压redis_exporter文件 手动下载redis_exporter-v1.24.0.linux-amd64.tar.gz 下载地址:https://github.com/oliver006/redis_exporter/releases 2、安装路径:在/opt/monitor/kafka/kafka_exporter下载并解压kafka_exporter文件 下载kafka_exporter-1.2.0.linux-amd64.tar.gz 下载地址:https://github.com/danielqsj/kafka_exporter linux命令 : wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gz
2、运用xftp移入安装文件夹下并解压
解压redis_exporter :tar -zxvf redis_exporter-v1.24.0.linux-amd64.tar.gz 解压Kafka——exporter:tar -zxvf kafka_exporter-1.2.0.linux-amd64.tar.gz
3、启动redis_exporter和kafka_exporter
(1)、redis_exporter
进入/opt/monitor/redis_exporter/redis_exporter-v1.24.0.linux-amd64#目录下执行下方命令启动
nohup ./redis_exporter -web.listen-address :监听端口 -redis.addr IP + 端口 -redis.password 密码 & #其他机器redis的IP+端口 #切换不同的监听端口 nohup ./redis_exporter -web.listen-address :9122 -redis.addr 39.98.125.18:6379 -redis.password admin & nohup ./redis_exporter -web.listen-address :9123 -redis.addr 192.168.113.238:6380 -redis.password admin & (2)、kafka_exporter
进入/opt/monitor/kafka/kafka_exporter/kafka_exporter-1.2.0.linux-amd64#目录下执行下方命令启动
#一个kafka可监控多个kafka(启动命令) nohup ./kafka_exporter --kafka.server=192.168.113.98:9092 --web.listen-address=:9308 & nohup ./kafka_exporter --kafka.server=192.168.113.244:9092 --web.listen-address=:9309 &
4、查看是否启动成功
查看是否存在进程 ps -ef|grep redis_exporter ps -ef|grep kafka_exporter
附加:jmx方式监控Kafka
下载jmx_prometheus_javaagent-0.6.jar和kafka-0-8-2.yml linux命令 : wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.6/jmx_prometheus_javaagent-0.6.jar
1.1 jmx_prometheus_javaagent和kafka.yml的配置使用
在linux安装的kafka文件的bin目录下打开kafka-server-start.sh 文件的第一二行添加如下两行代码代码:
export JMX_PORT="9999" export KAFKA_OPTS="-javaagent:/opt/monitor/kafka/jmx_prometheus/jmx_prometheus_javaagent-0.6.jar=9991:/opt/monitor/kafka/jmx_prometheus/kafka-0-8-2.yml"
其中 JMX_PORT="9999"固定配置jmx的端口号,KAFKA_OPTS="-javaagent:..."冒号之后是jmx_prometheus_javaagent jar包的路径,=9991是javaagent的端口号,
冒号之后是kafka-0-8-2.yml的文件路径
然后重启kafka。访问 http://localhost:9991/metrics 如果可以看到各种指标了,则配置生效。
三、下载consul、consul-template并安装
(一)、consul
1首先去官网下载consul
https://www.consul.io/downloads.html 选择linux版本即可 然后上传到linux服务器
2、解压
(1)、创建文件夹:在/opt/monitor/下创建文件夹consul
(2)、运用xftp移入安装文件夹下并解压
unzip consul_1.9.6_linux_amd64.zip
3、操作
在解压目录使用指令,也可以像配置JDK一样配置环境变量,在任意位置启动
以下命令都是在/opt/monitor/consul文件目录下操作
./consul 获取指令帮助 ./consul --version 查看版本 启动命令 nohup ./consul agent -dev -ui -node=consul-dev -client=192.168.113.244 & # 192.168.113.244 是我的ip 自行更换为自己实际的
4、查看是否成功
(1)、命令查看进程
ps -ef|grep consul
(2)、页面访问:http://192.168.113.244:8500/ 显示页面表明成功!!!(IP换成自己的)
(二)、consul-template
1、下载consul-template
https://releases.hashicorp.com/consul-template/0.26.0/
2、解压
(1)、创建文件夹:在/opt/monitor/consul下创建文件夹consul-template
(2)、运用xftp移入安装文件夹下并解压
unzip consul-template_0.26.0_linux_amd64.zip
3、创建consul-template的配置文件
在/opt/monitor/consul/consul-template文件夹下创建配置文件
vim consul-template.conf
#将下面配置文件复制到consul-template.conf内,并做修改 log_level = "warn" syslog { # This enables syslog logging. enabled = true # This is the name of the syslog facility to log to. facility = "LOCAL5" } consul { # auth { # enabled = true # username = "test" # password = "test" # } address = "192.168.113.244:8500" #修改成自己consul的IP+端口 # token = "abcd1234" retry { enabled = true attempts = 12 backoff = "250ms" # If max_backoff is set to 10s and backoff is set to 1s, sleep times # would be: 1s, 2s, 4s, 8s, 10s, 10s, ... max_backoff = "3m" } } template { source = "/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/templates/prometheus-discovery.ctmpl" #模板渲染的路径 destination = "/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/conf.d/prometheus-discovery.json" #存储实例的文件路径文件需要自己创建 command = "" command_timeout = "60s" backup = true left_delimiter = "{$" right_delimiter = "$}" wait { min = "2s" max = "20s" } }
4、创建prometheus-discovery.ctmpl和prometheus-discovery.json
在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件下创建conf.d和templates
(1)、进入conf.d下输入
vim prometheus-discovery.json
在内输入以下内容(在这里我定义了一个自己的prometheus:192.168.113.244:9090)
[ { "targets": ["192.168.113.244:9090"], #这个是监控的IP和端口 "labels": { "instance": "prometheus:192.168.113.244:9090", #监控的实例名称 } } ]
(2)、进入templates下输入
vim prometheus-discovery.ctmpl
在内输入以下内容
[ {$ range tree "prometheus/instance" $} #事先定义好了在consul上面创建监控实例的路径了 { "targets": ["{$ .Value $}"], "labels": { "instance": "{$ .Key $}" } }, {$ end $} ]
5、服务启动
在/opt/monitor/consul/consul-template目录下启动
启动consul-template服务,指定配置文件。 #./consul-template -config ./consul-template.conf
(三)、修改Prometheus配置文件并重启Prometheus服务,在192.168.113.244:9090查看
1、修改配置文件
进入/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件夹下修改 prometheus.yml文件
- job_name: 'node-discorvery' file_sd_configs: - files: ['/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/conf.d/targets.json'] refresh_interval: 5s
2、重启Prometheus
在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#路径下启动Prometheus 并在浏览器上访问IP+端口(192.168.113.244:9090)
安装成功!!! 并成功启动 !!!
3、在consul上面添加节点信息
上述配置好了就可以在Prometheus上查看实例的存在,并且可监控到信息
(四)、查看监控信息
在浏览器地址栏上面直接访问IP+端口
redis_exporter在http://192.168.113.244:9121/metrics/查看
kafka_exporter在http://192.168.113.244:9308/metrics/查看
或者点击
监控信息显示:
四、alertmanager
alertmanager用于发送告警信息
1、下载alertmanager组件包
安装路径:在/opt/monitor/alertmanager下载并解压alertmanager文件 手动下载alertmanager-0.22.2.linux-amd64.tar.gz 下载地址:https://github.com/prometheus/alertmanager/releases
2、运用xftp移入安装文件夹下并解压
tar -zxvf alertmanager-0.22.2.linux-amd64.tar.gz
3、更改alertmanager.yml文件
在/opt/monitor/alertmanager/alertmanager-0.22.2.linux-amd64#下执行
vim alertmanager.yml
修改配置文件如下:
- url: 'http://192.168.103.244:9003/inputKafkaJson/AIOPS-ZJK-REDIS-0107 '
4、在Prometheus.yml文件下配置
路径切换到:/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#执行
vim prometheus.yml
修改配置文件如下:
# Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: ['192.168.113.244:9093'] #更改成自己的Alertmanager的 IP+端口号 # - alertmanager:9093
Prometheus配置文件修改需要重新启动服务!!!
5、启动alertmanager
在/opt/monitor/alertmanager/alertmanager-0.22.2.linux-amd64#目录下启动
./alertmanager &
6、查看alertmanager是否启动成功
查看是否存在进程 ps -ef|grep alertmanager
五、设置告警规则rules
将告警规则统一放入/opt/monitor/prometheus/rules文件下
例如:
在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件夹下prometheus.yml文件下面进行配置:
rule_files: - "/opt/monitor/prometheus/rules/*.yml" # *.yml代表rules下面的所有的yml文件都会加载
配置文件修改需要重新启动Prometheus服务!!!
六、Kafka和redis安装省略
......
七、整体流程疏通
1、确保 redis 、redis_exporter、prometheus、alertmanager进程启动状态2、redis_exporter采集redis信息被prometheus监控,并将属性值和告警规则进行匹配,出发告警通过alertmanager将告警信息发送到后端3、后端事件推送接口获取告警信息并将其告警信息推送导Kafka的topic中 (单点可以不定义主题,要是有集群需要自己手动定义主题,并将信息存入定义主题内)4、消费者获取Kafka事件topic内得告警信息进行消费,信息为json格式,处理后将告警信息发送导前端进行告警通知
八、验证告警
单点redis
可以在告警规则上面临时添加一个告警规则来作为测试告警(我添加的是 - 实例连接太少,单点redis只连接一个实例,一定会告警)或者更改规则
例如:切换到/opt/monitor/prometheus/rules下进入alertmanager_rules.yml添加如下告警规则
#添加的告警规则- alert: 实例连接太少 expr: redis_connected_clients < 5 for: 5m labels: severity: warning annotations: summary: "实例连接太少 (instance {{ $labels.instance }})" description: "Redis实例连接少 (数目 > 5)\\n VALUE = {{ $value }}\\n LABELS: {{ $labels }}"
告警规则添加后需要到 /opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#重启Prometheus,Prometheus重启成功后,将后 serverApplication、EventApplication、BusinessApplication和collectorApplication这几个启动类启动,前端也启动起来,首先在CollectorApplication的控制台会有推送kafka主题:redis_event,数据 {json数据} ,表明数据告警发送到后端接收成功,并且推送到Kafka内,在前端页面中 --智能监控 --虚拟化监控下会产生告警信息,如产生说明成功!!!
注意:更改任何配置文件都需要先将原服务关闭后重启相应的服 务!!!
九、下载grafana
1、安装
2、导入模板
3、配置相关信息
注意:grafana中Memory Usage图表存在的问题
Memory Usage这个图表,一直是N/A。是因为redis_memory_max_bytes 获取的值为0
导致 redis_memory_used_bytes / redis_memory_max_bytes 结果不正常。
解决办法:
将redis_memory_max_bytes 改为服务器的真实内存大小 (自己设置系统内存的百分之多少) ------>在告警规则中也要用此办法解决一下啊!!!
查看服务器内存大小: cat /proc/meminfo |grep MemTotal 查出来的内存是KB转换称bytes : 1kb = 1024 byte
所以我更改计算公式
redis_memory_used_bytes{instance=~"$instance"} / 8193428