需要安装Docker 【Mysql,Redis 需要】
yum install docker
查看 Docker 是否安装成功
docker version
可通过以下命令启动 Docker 服务:Docker服务启动完毕,就可以开始使用Docker了
systemctl start docker.service
-----------------------------------------------------------
1.查看可用版本
docker search prometheus
2.取最新版的 zookeeper 镜像
docker pull prometheus:latest [稍微耗时,得稍等一会儿]
3.查看本地镜像
docker images
4.运行容器-启动容器并添加映射
docker run -p 9090:9090 -v /Users/jingmingming/docker_softeare/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest
5.安装成功
docker ps
6.访问 Prometheus Web UI :http://localhost:9090/
访问Targets信息:http://localhost:9090/targets
查看所有指标信息:http://localhost:9090/metrics
7.简单操作
查看容器 docker ps -a 或 docker ps -f name=prometheus
查看状态 docker stats prometheus
重启容器 docker restart prometheus
停止容器 docker stop [CONTAINER_ID] 【docker ps -a 可以查到】
启动容器 docker start [CONTAINER_ID] 【docker ps -a 可以查到】
98.移除容器 [不是删除镜像-只是容器]
docker rm [CONTAINER_ID] 【docker ps -a 可以查到】
99.删除镜像
docker rmi -f [IMAGE_ID] 【docker images 可以查到】
-------------------------------------------------------------------
Linux 安装 Prometheus http://localhost:9090
下载 [prometheus-2.20.1.linux-amd64.tar.gz]
解压( tar -zxvf prometheus-2.20.1.linux-amd64.tar.gz )
启动 prometheus : # ./prometheus 后台启动:nohup ./prometheus &
默认端口:9090
添加 prometheus 为系统开机服务
添加配置文件 prometheus.service
vi /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus server daemon
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle
Restart=on-failure
[Install]
WantedBy=multi-user.target
动态刷新加载 prometheus.yml 配置文件 curl -XPOST http://localhost:9090/-/reload
通知 systemd 重新加载配置文件 : systemctl daemon-reload
设置为开机启动:systemctl enable prometheus.service
删除开机启动:systemctl disable prometheus.service
启动服务:systemctl start prometheus.service
状态查询:systemctl status prometheus.service ; Active:active(running)时已正常启动
重启服务:systemctl restart prometheus.service
停止服务:systemctl stop prometheus.service
8.Linux Node 主机监控 http://localhost:9100/
下载 Node exporter 后解压(tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz)
启动 node_exporter : # ./node/exporter 后台启动:nohup ./node_exporter &
默认端口:9100
启动时添加参数可修改默认端口:--web.listen-address=":9200"
添加node_exporter为系统开机服务
添加配置文件 node_exporter.service
vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/data/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
通知 systemd 重新加载配置文件 : systemctl daemon-reload
设置为开机启动:systemctl enable node_exporter.service
删除开机启动:systemctl disable node_exporter.service
启动服务:systemctl start node_exporter.service
状态查询:systemctl status node_exporter.service ; Active:active(running)时已正常启动
重启服务:systemctl restart node_exporter.service
停止服务:systemctl stop node_exporter.service
与Prometheus集成
在Prometheus主机目录中找到主配置文件(默认为:prometheus.yml)
---------------------------------------------------------------
安装 grafana http://localhost:3000/ 默认的用户名密码:admin / admin
https://mirrors.huaweicloud.com/grafana/7.1.3/ 【国内加速下载】
#下载
grafana-7.1.3-1.x86_64.rpm
#安装
yum localinstall grafana-7.1.3-1.x86_64.rpm
卸载
yum erase grafana -y
通知 systemd 重新加载配置文件 : systemctl daemon-reload
设置为开机启动:systemctl enable grafana-server
删除开机启动:systemctl disable grafana-server
启动服务:systemctl start grafana-server
状态查询:systemctl status grafana-server ; Active:active(running)时已正常启动
重启服务:systemctl restart grafana-server
停止服务:systemctl stop grafana-server
与Prometheus集成 : 添加数据源 ,导入模板ID(8919、11074):https://grafana.com/grafana/dashboards/11074 (前人总结出的模板)
---------------------------------------------------------------
docker 安装MySQL
1.查找镜像
docker search mysql
2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):
docker pull mysql 【时间略久】 或者导入现成的镜像:docker load -i docker-mysql.tar
3.通过镜像创建容器并运行
docker run -p 3306:3306 --name mysql_ming -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
centos虚拟机可能会出现问题,
处理方式:https://blog.csdn.net/weixin_30546189/article/details/96488783
https://www.cnblogs.com/cxbhakim/p/9149596.html
4.此时,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested by server。。。
解决方案:
进入容器:docker exec -it 62349aa31687 /bin/bash
进入mysql:mysql -uroot -p
授权:mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新权限:mysql> flush privileges;
更新加密规则:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ;
更新root用户密码:mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限:mysql> flush privileges;
#添加导出器用户
mysql>CREATE USER 'mysqld_ming'@'localhost' IDENTIFIED BY 'ming1234';
mysql>GRANT PROCESS , REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_ming'@'localhost' ;
mysql>commit;
mysql>FLUSH PRIVILEGES;
mysql>select Host , User from mysql.user ; #检查用户是否已经穿件成功
5.停止docker 启动docker
docker stop [CONTAINER_ID] 【docker ps -a 可以查到】
docker start [CONTAINER_ID] 【docker ps -a 可以查到-没有删除容器的情况下】
6.移除容器 [不是删除镜像-只是容器]
docker rm [CONTAINER_ID] 【docker ps -a 可以查到】
7.删除镜像
docker rmi -f [IMAGE_ID] 【docker images 可以查到】
-----------------------------------------------------------
安装MySQL导出器
下载:mysqld_exporter-0.12.1.linux-amd64.tar.gz
解压:tar -xvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
创建配置文件 .my.cnf 文件
vim .my.cnf
[client]
host=localhost
user=mysqld_ming
password=ming1234
创建mysqld_exporter.service 的 systemd unit 文件
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--config.my-cnf /usr/local/mysqld_exporter/.my.cnf \
--collect.auto_increment.columns \
--collect.binlog_size \
--collect.engine_innodb_status \
--collect.engine_tokudb_status \
--collect.global_status \
--web.listen-address=0.0.0.0:9104
Restart=always
[Install]
WantedBy=multi-user.target
通知 systemd 重新加载配置文件 : systemctl daemon-reload
设置为开机启动:systemctl enable mysqld_exporter.service
删除开机启动:systemctl disable mysqld_exporter.service
启动服务:systemctl start mysqld_exporter.service
状态查询:systemctl status mysqld_exporter.service ; Active:active(running)时已正常启动
重启服务:systemctl restart mysqld_exporter.service
停止服务:systemctl stop mysqld_exporter.service
查看指标信息:http://localhost:9104/metrics
集成prometheus
prometheus.service添加配置
vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql_job'
static_configs:
- targets: ['localhost:9104']
labels:
instance: mysql_localhost
重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload
systemctl restart prometheus.service
systemctl status prometheus.service
参考:https://blog.csdn.net/u014756339/article/details/107816038
https://grafana.com/grafana/dashboards/11323
SQL : use sys
CREATE TABLE `test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(128) DEFAULT NULL COMMENT 'name',
`ext1` varchar(62) DEFAULT NULL COMMENT 'ext1',
`ext2` varchar(128) DEFAULT NULL COMMENT 'ext2',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='test';
insert into test (name,ext1,ext2) values ('jmm','ext1','ext2');
-----------------------------------------------------------
安装Redis
1.查看可用版本
docker search redis
2.取最新版的 Redis 镜像
docker pull redis:latest [稍微耗时,得稍等一会儿] 或者导入现成的镜像:docker load -i docker-redis.tar
3.查看本地镜像
docker images
4.运行容器
docker run -itd --name redis-test -p 6379:6379 redis:latest
-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务
5.安装成功
docker ps
6.通过 redis-cli 连接测试使用 redis 服务。
docker exec -it redis-test /bin/bash
redis-cli
-----------------------------------------------------------
安装Redis导出器
下载:redis_exporter-v1.9.0.linux-amd64.tar.gz
解压:tar -xvf redis_exporter-v1.9.0.linux-amd64.tar.gz
mv redis_exporter-v1.9.0.linux-amd64 /usr/local/redis_exporter
解压后只有一个二进制程序就叫 redis_exporter 通过 -h 可以获取到帮助信息,下面列出一些常用的选项
-redis.addr:指明一个或多个 Redis 节点的地址,多个节点使用逗号分隔,默认为 redis://localhost:6379
-redis.password:验证 Redis 时使用的密码;
-redis.file:包含一个或多个redis 节点的文件路径,每行一个节点,此选项与 -redis.addr 互斥。
-web.listen-address:监听的地址和端口,默认为 0.0.0.0:9121
创建 redis_exporter.service
vim /usr/lib/systemd/system/redis_exporter.service
[Unit]
Description=redis_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/redis_exporter/redis_exporter -redis.addr localhost:6379 -redis.password 123456 #没有密码的话可以不设置
Restart=on-failure
[Install]
WantedBy=multi-user.target
通知 systemd 重新加载配置文件 : systemctl daemon-reload
设置为开机启动:systemctl enable redis_exporter.service
删除开机启动:systemctl disable redis_exporter.service
启动服务:systemctl start redis_exporter.service
状态查询:systemctl status redis_exporter.service ; Active:active(running)时已正常启动
重启服务:systemctl restart redis_exporter.service
停止服务:systemctl stop redis_exporter.service
查看指标信息:http://localhost:9121/metrics
集成prometheus
prometheus.service添加配置
vim /usr/local/prometheus/prometheus.yml
- job_name: redis_exporter
static_configs:
- targets: ['localhost:9121']
重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload
systemctl restart prometheus.service
systemctl status prometheus.service
---------------------------------------
报警组件安装
1.下载组件 alertmanager-0.21.0.linux-amd64.tar.gz
2.解压组件 tar xvzf alertmanager-0.21.0.linux-amd64.tar.gz
3.移动目录
mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager
cd /usr/local/alertmanager/
4.修改alertmanager配置文件:vim alertmanager.yml
global:
# resolve_timeout:解析超时时间
resolve_timeout: 5m
# smtp_smarthost: 使用email打开服务配置
smtp_smarthost: 'mx.jd.local:25'
# smtp_from:指定通知报警的邮箱
smtp_from: 'trace-service@jd.com'
# smtp_auth_username:邮箱用户名
smtp_auth_username: 'trace-service@jd.com'
# smtp_auth_password:授权密码
smtp_auth_password: 'PGxyfbxqzag@293'
# smtp_require_tls:是否启用tls
smtp_require_tls: false
# route标记:告警如何发送分配
route:
# group_by:采用哪个标签作为分组的依据
group_by: ['alertname']
# group_wait:分组等待的时间
group_wait: 10s
# group_interval:上下两组发送告警的间隔时间
group_interval: 10s
# repeat_interval:重复发送告警时间。默认1h
repeat_interval: 1m
# receiver 定义谁来通知报警
receiver: 'mail'
# receiver标记:告警接受者
receivers:
# name:报警来源自定义名称
- name: 'mail'
# email_configs:通过邮箱发送报警
email_configs:
# to:指定接收端email
- to: 'jingmingming@jd.com'
# inhibit_rules标记:降低告警收敛,减少报警,发送关键报警
#inhibit_rules:
# - source_match:
# severity: 'critical'
# target_match:
# severity: 'warning'
# equal: ['alertname', 'dev', 'instance']
5.检查alertmanager配置文件
./amtool check-config alertmanager.yml
6.启动alertmanager
./alertmanager --config.file=alertmanager.yml
7.系统启动项设置
添加系统服务:vi /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
8.启动添加后的系统服务
systemctl daemon-reload
systemctl restart alertmanager.service
设置为开机启动:systemctl enable alertmanager.service
删除开机启动:systemctl disable alertmanager.service
启动服务:systemctl start alertmanager.service
状态查询:systemctl status alertmanager.service ; Active:active(running)时已正常启动
停止服务:systemctl stop alertmanager.service
9.访问:http://localhost:9093
###############################################################################
prometheus 对接 alertmanager
1.修改配置文件 vim prometheus.yml
alerting:
alertmanagers: # 配置alertmanager
- static_configs:
- targets:
- localhost:9093 #alertmanager服务器ip端口
rule_files: # 告警规则文件
- 'rules/*.yml'
检查配置文件是否正确:./promtool check config prometheus.yml
2.配置报警规则rules (记得创建 rules目录)
参考:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_65_prometheus_alertmanager_rule.html
vim rules/node.yml (设备监控)
groups:
- name: test
rules:
- alert: 内存使用率过高
expr: 100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30
for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} 内存使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过80%,当前使用率[{{ $value }}]."
- alert: cpu使用率过高
expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 0
for: 1m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} cpu使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
- alert: 设备宕机了
expr: up{job="node"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!
console: '服务器挂了!!!!'
- alert: redis宕机了
expr: up{job="redis_exporter"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!
console: 'redis宕机了'
简单介绍:
groups:
- name: test-rules
rules:
- alert: InstanceDown # 告警名称
expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定
for: 2m # 满足告警条件持续时间多久后,才会发送告警
labels: #标签项
team: node
annotations: # 解析项,详细解释告警信息
summary: "{{$labels.instance}}: has been down"
description: "{{$labels.instance}}: job {{$labels.job}} has been down " value: {{$value}}
3.重启prometheus服务(动态重载配置也可) curl -XPOST http://localhost:9090/-/reload
systemctl restart prometheus.service
systemctl status prometheus.service
webhook 报警参考:https://blog.csdn.net/shida_csdn/article/details/81980021
资源下载:
https://prometheus.io/download/
https://github.com/oliver006/redis_exporter/releases
http://grafana.openstack.org/dashboards 模板
https://grafana.com/grafana/dashboards/9777 模板
https://github.com/percona/grafana-dashboards/tree/master/dashboards 模板