目录
一、基础概念
二、grafana部署(端口3000)
三、打标签,主要用于k8s
重打标签
四、prometheus告警功能
五、实验部署
主服务器时间同步
从服务器时间同步
主服务器的mysql配置
从服务器的mysql配置
主从复制节点授权exporter
配置 mysql 主从复制的指标暴露器(主从都要)
配置mysql服务器指标暴露器
部署 grafana-server
grafana是一款基于go语言开发的通用可视化工具,支持从不同的数据源加载并展示数据,可作为其数据源的部分储存系统如下所示:
TSDB:Prometheus、InfluxDB、OpenTSDB和Graphit
日志和文档存储:Loki和ElasitchSearch
分布式请求跟踪:Zipkin、Jaeger和Tenpo
SQL DB:Mysql、PostgreSQL和Microsoft SQL server
grafana基础默认监听于TCP协议的3000端口,支持集成其他认证服务(密钥、指纹、密码等),且能够通过/metrics输出内建指标;
数据源(Data Source):提供用于展示的数据的储存系统
仪表盘(Dashboard):组织和管理数据的可视化面板(Panel)
团队和用户:提供了面向企业组织层级的管理能力(账号-权限绑定的功能,可操作范围-权限角色绑定的)
##将grafana-7.3.6-1.x86_64.rpm传入/opt目录下
[root@prometheus /opt]# rz -E
rz waiting to receive.
[root@prometheus /opt]# yum install -y grafana-7.3.6-1.x86_64.rpm
[root@prometheus /opt]# systemctl start grafana-server
[root@prometheus /opt]# systemctl status grafana-server.service
[root@prometheus /opt]# netstat -natp |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 1611/grafana-server
初始账号和密码都是admin
重要的地方: 1、场景 2、重新打标的参数,每个参数代表什么含义,分别,在哪些时候会用 3、不同参数如何进行组合,如何整合在一起称为一个新的label标签
① source_labels:指定调用哪些已有的标签(可引用多个)在重新打标的时候会将这些标签对应的值给引用/提取并连接起来,例如: cpu指标{host=node1; host=node2 }
② target_labels:与source_labels组合使用,可以指定使用哪个已有标签赋值给指定的新标签
③ separator:对应源标签的标签值使用什么连接符,默认为" ;"
④ regex:对于源标签,使用哪个正则表达式对源标签进行模式匹配、匹配后可以将对应的结果复制到target上,赋值方式:(引用所有正则表达式的内容进行赋值) 绝对路径的掩盖
④ regex
⑤ modulus : hash算法函数
⑥ replacement :把目标标签的值改为新的值
⑦ action
Alertmanager对告警通知进行分组然后进行去重
分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没;
抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在;
静默(silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性;
路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为
[root@node1 /opt]# yum install -y ntp #安装主服务器时间同步
[root@node1 /opt]# vim /etc/ntp.conf
server 127.127.68.0
fudge 127.127.68.0 stratum 8
[root@node1 /opt]# systemctl start ntpd
[root@node2 /opt]# yum install -y ntp ntpdate
[root@node2 /opt]# systemctl start ntpd
[root@node2 /opt]# /usr/sbin/ntpdate 192.168.68.30 ##时间同步
[root@node2 /opt]# crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.68.30
[root@node1 /opt]# vim /etc/my.cnf
server-id = 1
log-bin=master-bin
binlog_format = MIXED
log-slave-updates=true
##default-character-set=utf8 这个需要注释掉,不然会报错
[root@node1 /opt]# systemctl restart mysqld.service
##设置从服务器账号并授权
[root@node1 /opt]# mysql -u root -p123123
##给从服务器授权
mysql> grant replication slave on *.* to 'myslave'@'192.168.68.%' identified by '123456';
mysql> flush privileges;
mysql> use mysql;
mysql> select user,host,authentication_string from user;
+---------------+--------------+-------------------------------------------+
| user | host | authentication_string |
+---------------+--------------+-------------------------------------------+
| root | localhost | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| bbsuser | % | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C |
| bbsuser | localhost | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C |
| myslave | 192.168.68.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+--------------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 603 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
#File 列显示日志名,Position 列显示偏移量
[root@node2 /opt]# vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1
[root@node2 /opt]# systemctl restart mysqld.service
[root@node2 /opt]# mysql -u root -p123123
mysql> change master to master_host='192.168.68.30',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=603;
mysql> start slave;
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
##主服务器
mysql> create user 'exporter'@'%' identified by '123456';
mysql> create user 'exporter'@'127.0.0.1' identified by '123456';
mysql> create user 'exporter'@'localhost' identified by '123456';
mysql> grant process,replication client,select on *.* to 'exporter'@'%' identified by 'admin123';
mysql> grant process,replication client,select on *.* to 'exporter'@'127.0.0.1' identified by 'admin123';
mysql> grant process,replication client,select on *.* to 'exporter'@'localhost' identified by 'admin123';
mysql> flush privileges;
##将mysqld_exporter-0.12.1.linux-amd64.tar.gz传入/opt目录下
[root@node1 /opt]# rz -E
rz waiting to receive.
[root@node1 /opt]# tar zxf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
[root@node1 /opt]# cd /usr/local/mysqld_exporter-0.12.1.linux-amd64/
[root@node1 /usr/local/mysqld_exporter-0.12.1.linux-amd64]# cat > /usr/local/mysqld_exporter-0.12.1.linux-amd64/my.cnf << EOF
[client]
user=exporter
password=admin123
EOF
[root@node1 /usr/local/mysqld_exporter-0.12.1.linux-amd64]#cat > /usr/lib/systemd/system/mysqld_exporter.service << EOF
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
User=root
Type=simple
ExecStart=/usr/local/mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter \
--config.my-cnf /usr/local/mysqld_exporter-0.12.1.linux-amd64/my.cnf \
--collect.info_schema.processlist
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
[root@node1 /usr/local/mysqld_exporter-0.12.1.linux-amd64]# systemctl daemon-reload
[root@node1 /usr/local/mysqld_exporter-0.12.1.linux-amd64]# systemctl start mysqld_exporter.service
[root@node1 /usr/local/mysqld_exporter-0.12.1.linux-amd64]# netstat -natp |grep 9104
修改配置文件
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# vim prometheus.yml
#最后插入
- job_name: 'mysql-master-slave'
scrape_interval: 5s
static_configs:
- targets: ['192.168.68.30:9104','192.168.68.105:9104']
- job_name: 'nodes'
scrape_interval: 5s
static_configs:
- targets: ['192.168.68.30:9100','192.168.68.105:9100']
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# ./prometheus
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# netstat -natp |grep prometheus
##将grafana-7.3.6-1.x86_64.rpm传入/opt目录下
[root@prometheus /opt]# rz -E
rz waiting to receive.
[root@prometheus /opt]# yum install -y grafana-7.3.6-1.x86_64.rpm
[root@prometheus /opt]# systemctl start grafana-server
[root@prometheus /opt]# systemctl status grafana-server.service
[root@prometheus /opt]# netstat -natp |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 1611/grafana-server
模板选择8919