Bootstrap

grafana 和mysqld_exporter

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#'

  1. 创建用于监督数据库的用户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

  1. 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

然后看进程

  1. 在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

登录网站查看效果

  1. Grafana里添加支持mysqld_exporter模板17320
  2. 问题:
  3. Grafana出图的时候,很多参数没有数据,报错是no  data
  4. 分析日志/var/log/messages看到时mysqld_exporter连接到mysqld数据库出现了问题,主要是密码里有#号导致,因为#是注释在配置文件里
  5. [root@db-mysql mysqld_exporter]# vim  .my.cnf
  6. [client]
  7. user=exporter
  8. password=Sanchuang123#
  9. 同时到mysql里修改exporter用户的密码为Sanchuang123
  10. 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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;