跳转至

监控授权

介绍

大部分数据库,如 MySQL MongoDB PostgreSQL 需要给 Cloud Insight Agent 添加授权,才能使 Cloud Insight Agent 能够通过 Command 来输出指标数值,并进行采集。

以 MySQL 为例,其原理如图:


授权

以下平台服务需要配置授权,来启动 Cloud Insight Agent 的采集机制:

我们以 MySQL 为例,阐述如何配置授权。

1. 为 Cloud Insight 创建 USER

为 Cloud Insight 创建一个 USER,其中用户名和密码,可以按照自己的需求进行设定。

sudo mysql -e "CREATE USER 'cloudinsight'@'localhost' IDENTIFIED BY 'YourPassword';"

2. 配置授权和最大链接数

为创建的用户分配权限。

sudo mysql -e "GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'cloudinsight'@'localhost' WITH MAX_USER_CONNECTIONS 5;"

3. MySQL 版本 >= 5.6 时,需要从 performance_schema 表中获取指标数据

sudo mysql -e "GRANT SELECT ON performance_schema.* TO 'cloudinsight'@'localhost';"

4. 检查授权是否成功

通过以下指令,来检查为 Cloud Insight 创建的用户是否授权成功。

mysql -u cloudinsight --password=YourPassword -e "SHOW /*!50000 ENGINE*/ INNODB STATUS" | \
grep Uptime && echo -e "\033[0;32mMySQL user - OK\033[0m" || \
echo -e "\033[0;31mCannot connect to MySQL\033[0m"
mysql -u cloudinsight --password=YourPassword -e "show slave status" && \
echo -e "\033[0;32mMySQL grant - OK\033[0m" || \
echo -e "\033[0;31mMissing REPLICATION CLIENT grant\033[0m"

若输出信息中包含如下字段,则代表授权成功。

MySQL grant - OK

其他配置选项

为了更好的使用 MySQL 和其他数据库的监控,我们以 MySQL 为例,来解释 conf.d/mysql.yaml 中每个参数的涵义。

init_config:
# 创建实例
instances:                                # 创建实例
  - server: localhost                     # MySQL 所在主机,默认为 localhost
    user: my_username                     # 为 Cloud Insight 创建的用户名
    pass: my_password                     # 为 Cloud Insight 创建的用户密码
    port: 3306                            # 可选,MySQL 默认端口
    sock: /path/to/sock                   # 通过 Unix Socket 连接数据库
    # defaults_file: my.cnf               #  Alternate configuration mechanism
    tags:                                 # 可选,当有多个数据库时可以通过 tag 区分不同功能的数据库
      - tag_key1:tag_value1               # 自定义标签,用于在 Cloud Insight 平台对 MySQL 服务器进行分组
      - tag_key2:tag_value2
    options:
      replication: 0                      # 主从复制选项,是否获取相关指标(0:否(默认值),1:是)
      galera_cluster: 1                   # Galera 集群选项,是否获取相关指标(1:是(默认值),0:否)
    queries:
      -                                    # 自定义 Metric
        query: SELECT TIMESTAMPDIFF(second,MAX(create_time),NOW()) as last_accessed FROM requests                           
                                          # 可执行 SQL 语句,自定义 Metric 的数据源
        metric: app.seconds_since_last_request               # Metric 名称,用于在 Cloud Insight 平台显示,数据源的别名
        type: gauge                        # Metric类型,可选值:gauge, rate, 相关解释见 http://statsd.readthedocs.org/en/v3.1/types.html#gauges
        field: last_accessed               # Metric 对应的 SQL 字段

必须配置的参数包括:server user pass,以及可选的参数 tag 用于更好地管理基础设施。

其他配置参数,按照自己的需求,以及 MySQL 熟悉程度,来有选择性地配置。


故障排除

MySQL 配置报错

一般来说,MySQL 配置报错,是因为没有为 Cloud Insight 添加用户,并授权。

相信您阅读完这篇文档,就知道答案了。

相关 MySQL 的配置报错详见


5分钟,开启你的跨云监控之旅 (`⌄´ )