YAML:YAML(YAML Ain't Markup Language,YAML 不是一种标记语言)是一种直观的数据序列化格式,设计用于人类易于阅读和编写,同时也易于机器解析和生成。它广泛用于配置文件、数据交换以及脚本语言中的数据结构表示。YAML 的设计目标是简单、直观且易于实现。
YAML文件是存放数据的文件,它广泛用于配置文件、数据交换(还有json)以及脚本语言中的数据结构表示。
安装grafana出图展示
yum install grafana-enterprise-9.1.2-1.x86_64.rpm -y
启动grafana
[root@nfs-ansible-prom prom]# systemctl start grafana-server
设置开机启动
[root@nfs-ansible-prom prom]# systemctl enable grafana-server
查看grafana是否启动
[root@nfs-ansible-prom prom]# ps aux|grep grafana
netstat -anplut|grep grafana
登录,在浏览器里登录默认的用户名和密码是 admin admin
http://192.168.159.138:3000
后面根据文件操作
安装mysql的mysqld_exporter
MySQL的exporter --》可以获取MySQL内部的性能指标
1.安装了node_exporter -->获取mysql服务器的cpu、内存、磁盘IO、网络IO、进程等信息 监听:9090
2.安装mysqld_exporter -->获取MySQL内部的性能指标
监听:9104
所有的exporter本质上是一个程序,运行起来就是一个进程,可以理解为一个接口API
application interface 应用程序接口
很多exporter本质是一个web系统,对外提供API接口 --》gin框架
mysql -uroot -p'Sanchuang123#'
-
创建用于监督数据库的用户exporter
root@(none) 18:58 mysql>
CREATE USER 'exporter'@'%' IDENTIFIED BY 'Sanchuang123' WITH MAX_USER_CONNECTIONS 3;
对用户exporter进行授权,授予PROCESS, REPLICATION CLIENT, SELECT 三种权限,在任何的库里的任何表上。
root@(none) 18:58 mysql>
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
tar xf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local
[root@db ~]# cd /usr/local/
[root@db local]# mv mysqld_exporter-0.15.0.linux-amd64 mysqld_exporter
[root@db-mysql local]# cd mysqld_exporter/
.my.cnf是mysqld_exporter用于登录mysqld进程的配置文件
vim .my.cnf
[client]
user=exporter
password=Sanchuang123
-
mysqld_exporter做成服务
[root@db mysqld_exporter]# vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
[Service]
Environment=DATA_SOURCE_NAME=exporter:Sanchuang123@(localhost:3306)/
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf --web.listen-address=:9104
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@db mysqld_exporter]# systemctl daemon-reload
[root@db mysqld_exporter]# systemctl enable mysqld_exporter
[root@db mysqld_exporter]#systemctl restart mysqld_exporter
[root@db mysqld_exporter]# systemctl status mysqld_exporter
然后看进程
-
在Prometheus.yml中添加mysqld_exporter的配置
[root@nfs-ansible-prom prom]# vim /prom/prometheus/prometheus.yml
- job_name: "db_mysqld_exporter"
static_configs:
- targets: ["192.168.159.137:9104"]
[root@nfs-ansible-prom prom]# systemctl restart prometheus
[root@nfs-ansible-prom prom]# systemctl status prometheus
登录网站查看效果
- Grafana里添加支持mysqld_exporter模板17320
- 问题:
- Grafana出图的时候,很多参数没有数据,报错是no data
- 分析日志/var/log/messages看到时mysqld_exporter连接到mysqld数据库出现了问题,主要是密码里有#号导致,因为#是注释在配置文件里
- [root@db-mysql mysqld_exporter]# vim .my.cnf
- [client]
- user=exporter
- password=Sanchuang123#
- 同时到mysql里修改exporter用户的密码为Sanchuang123
- alter USER 'exporter'@'%' IDENTIFIED BY 'Sanchuang123' WITH MAX_USER_CONNECTIONS
redis 数据库 缓存
Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。由于其高性能和丰富的数据结构支持, Redis 最常见的用途是作为缓存层,存储那些频繁访问但不经常改变的数据。通过减少数据库的访问次数,Redis 可以显著提高应用的响应速度和吞吐量。例如,可以将用户会话信息、热门文章列表、商品详情等存储在 Redis 中,以减轻数据库的压力。
直接把所有数据放在内存了 快
不然dbs数据库会先从磁盘再到内存 慢
[root@ansible-prome playbook]# ansible db -m fetch -a "src=/etc/redis.conf dest=/playbook"
[root@ansible-prome playbook]# ls
192.168.205.133 redis_first.yaml
[root@ansible-prome playbook]# cd 192.168.205.133/etc/
[root@ansible-prome etc]# ls
redis.conf
[root@ansible-prome etc]# mv redis.conf /playbook/
[root@ansible-prome etc]# ls
[root@ansible-prome etc]# cd /playbook/
[root@ansible-prome playbook]# ls
192.168.205.133 redis.conf redis_first.yaml
上传一个我们配置好的redis.conf到其他的redis服务器上,这样可以达到控制redis的目的,让他redis按照我们的配置去运行。
[root@ansible-prome playbook]# vim redis.conf
bind 0.0.0.0
#0.0.0.0 代表任意的ip地址
#127.0.0.1 代表本机回环接口的ip地址 ,这个地址任何机器都有,用来测试使用,在互联网上不使用
cp redis_first.yaml redis_second.yaml
[root@ansible-prome playbook]# vim redis_second.yaml
- hosts: web
remote_user: root
tasks:
- name: install redis
yum: name=redis state=installed
- name: copy redis.conf file
copy: src=/playbook/redis.conf dest=/etc/redis.conf owner=redis
notify: restart redis
tags: configfile
- name: start redis
service: name=redis state=started enabled=true
- name: create crontab
cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file2
handlers:
- name: restart redis
service: name=redis state=restarted
- hosts: db
remote_user: root
tasks:
- name: install redis
yum: name=redis state=installed
- name: copy redis.conf file
copy: src=/playbook/redis.conf dest=/etc/redis.conf owner=redis
notify: restart redis
tags: configfile
- name: start redis
service: name=redis state=started enabled=true
- name: create crontab
cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file2
handlers:
- name: restart redis
service: name=redis state=restarted