k8s-Prometheus-采集[mysql]监控数据

root
233
文章
0
评论
2021年8月27日13:31:26 评论 3534字阅读11分46秒

Prometheus监控mysql

方法一mysq-exporter使用pod的方式:

规划:

192.168.1.183 node01 上部署的prometheus,组件mysql-export也在这里

192.168.1.4    上部署的mysql5.7

1.准备mysql-export镜像

[root@node01 ~]# docker pull prom/mysqld-exporter:latest

2.部署安装mysql数据库

3.登陆mysql为mysql_exporter创建账号并授权

mysql>  CREATE USER 'mysql_exporter'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.21 sec)
mysql>  GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%';
Query OK, 0 rows affected (0.00 sec)

4.用户名和密码设置到secrer中

#加密用户名

[root@master01 mysql]# echo -n 'mysql_exporter' | base64
bXlzcWxfZXhwb3J0ZXI=

#加密密码

[root@master01 mysql]# echo -n '123456' | base64
MTIzNDU2

#创建secret

[root@master01 mysql]# kubectl apply -f secret.yaml 
secret/mysql-secret created

secret.yaml文件如下:

[root@master01 mysql]# cat secret.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  username: bXlzcWxfZXhwb3J0ZXI=
  password: MTIzNDU2

4.编写mysql-export.yaml文件

[root@master01 mysql]# kubectl apply -f mysql-export.yaml 
deployment.apps/mysql-export created
[root@master01 mysql]# kubectl get pod 
NAME                                 READY   STATUS    RESTARTS   AGE
mysql-export-5b96dd67f6-w6dl7        1/1     Running   0          4s

mysql-export.yaml文件配置如下:

[root@master01 mysql]# cat mysql-export.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql-export
  name: mysql-export
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql-export
  template:
    metadata:
      labels:
        app: mysql-export
      annotations:
        prometheus.io/scrape: 'true'
    spec:
      containers:
      - image: prom/mysqld-exporter:latest
        name: mysql-export
        env:
        - name: username
          valueFrom:
            secretKeyRef:
              name: mysql-secret  #这是secret的对象名
              key: username      #它是secret中的key名
        - name: password
          valueFrom:
            secretKeyRef:
              name: mysql-secret  #这是secret的对象名
              key: password      #它是secret中的key名
        - name: DATA_SOURCE_NAME
          value: $username:$passwrod@(192.168.1.4:3306)/
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        ports:
        - protocol: TCP
          name: mysql-export
          containerPort: 9104
        resources:  #资源配额
          limits:  #资源限制,最多可用的cpu和内存
            cpu: 1
            memory: 1Gi
          requests: #最少需要多少资源才可以运行Pod
            cpu: 0.5
            memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-export
  namespace: default
spec:
  ports:
  - name: mysql
    port: 9104
    protocol: TCP
    targetPort: 9104
  selector:
    app: mysql-export
  type: ClusterIP

#prometheus上查看mysql-export状态

5.grafana导入mysql监控图表

方法二mysq-exporter使用物理机的方式:

 

1.下载地址:

https://github.com/prometheus/mysqld_exporter/tags

[root@kk01 ~]# tar -xf mysqld_exporter-0.13.0.linux-amd64.tar.gz
[root@kk01 ~]# ln -s mysqld_exporter-0.13.0.linux-amd64 /data/mysqld_exporter

2.部署安装mysql数据库

3.登陆mysql为mysql_exporter创建账号并授权

mysql>  CREATE USER 'mysql_exporter'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.21 sec)
mysql>  GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%';
Query OK, 0 rows affected (0.00 sec)

 

3.创建配置文件

[root@kk01 data]# ln -s mysqld_exporter-0.13.0.linux-amd64/ mysqld_exporter
[root@kk01 data]# cd mysqld_exporter
[root@kk01 mysqld_exporter]# cat .my.cnf 
[client]
user=mysql_exporter
password=123456
port=3306

4.使用systemd方式启动

cat >/usr/lib/systemd/system/mysqld_exporter.service  <<EOF
[Unit]
Description=Prometheus
[Service]
ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf --web.listen-address=:9104
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
[root@kk01 mysqld_exporter]# systemctl start mysqld_exporter
[root@kk01 mysqld_exporter]# systemctl enable mysqld_exporter

mysqld_exporter默认运行端口是:9104

可以通过http://数据库服务器:9104访问MySQLD Exporter暴露的服务

可以通过/metrics查看mysql_up指标判断当前MySQLD Exporter是否正常连接到了MySQL实例

5.在prometheus.yaml中添加mysqld_exporter的配置

    - job_name: 'mysql'
      static_configs:
      - targets: ['192.168.1.4:9104']
[root@master01 mysql]# kubectl apply -f prometheus-alertmanager-cfg-mysql.yaml
[root@master01 alertmanager]# kubectl apply -f prometheus-alertmanager-deploy.yaml

#prometheus上查看mysql-export状态

5.grafana导入mysql监控图表

 

继续阅读
历史上的今天
8月
27
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2021年8月27日13:31:26
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: